Subject: programming language

From: Ulrike Salzner <[email-masked]>
Date: Wed, 31 Jan 2001 11:46:29 +0200 (EET)

We are a chemistry department and our first year students take a computer
science cours learning JAVA. They told me that they don't think it is of
any use to them.

I would like to collect opinions which programming language is most useful
for chemists. Let's assume they are learning only one. 

Thanks,
Ulrike Salzner

===================================================================

Dr. Ulrike Salzner
Associate Professor
Department of Chemistry		Tel.: (312) 290-2122
Bilkent University		Fax.: (312) 266-5097
06533 Bilkent, Ankara 		e-mail: [email-masked]
Turkey

====================================================================

---

From: "Dr. Richard Wood" <[email-masked]>
Date: Wed, 31 Jan 2001 10:12:51 -0500

> for chemists. Let's assume they are learning only one.

Dear Dr. Salzner

Being rather advanced in age myself, I would think that it would be beneficial
for one to know Fortran, which was what I learned when I was in college.

However, as time has gone by, I have seen that most things are written in C or
C++,
so I would think that would be the most useful language for one to learn, in my
opinion.
It certainly is the one I've regretted not learning.

Richard

--
Richard L. Wood, Ph. D.
Physical/Computational Chemist
Post-doctoral Associate
Cornell University, Ithaca, NY 14853

---

From: Mauricio L Cafiero <[email-masked]>
Date: Wed, 31 Jan 2001 05:14:15 -0700 (MST)

hello:
	It really depends. For the most global usefulness, C++ would be
best. It is powerful, extremely widely used, and capable of scientific
programming. 
	Java is also widely used, and there are scientific and
mathematical libraries being developed for Java. Also, it is similar to
C++, so that is an added benefit. 
	As far as theoretical chemistry is concerned, I think Fortran is
by far the best choice. It has many mathematical libraries, and is
designed for scientific computing. 
	Since many chemistry undergraduates do not go on to become
theorists, then perhaps C++ or Java would be best, as with a background in
one language, any other language is picked up very easily. 

	I hope this addresses your question.

Mauricio Cafiero
Doctoral Candidate: Theoretical and
		    Computational 
		    Quantum Chemistry
Dept. of Chemistry
University of Arizona
Tucson, AZ

---

From: "Mary O'Connor" <[email-masked]>
Date: Wed, 31 Jan 2001 08:39:42 -0500

Ulrike Salzner wrote:

> -= This is automatically added to each message by mailing script =-
> [email-masked] -- To Everybody  | [email-masked] -- To Admins
> [email-masked] -- HELP CHEMISTRY or HELP SEARCH
> [email-masked] -- archive search    |    Gopher: gopher.ccl.net 70
> Ftp: ftp.ccl.net  |  WWW: http://www.ccl.net/chemistry/   | Jan: [email-masked]

I think JAVA is of most use to people working on webpages (I'm no expert). My
own inquiries into which languages to learn have led me to the conclusion that
the basis of scientific programming is still FORTRAN, being gradually overtaken
by C++

Mary O'Connor
Doctoral Candidate
Rutgers University
New Brunswick,NJ
USA

---

From: "Mark A. Zottola" <[email-masked]>
Date: Wed, 31 Jan 2001 08:32:58 -0600 (CST)

Dear Ulrike,

While I think that any programming language is a good addition to anyone's
skill set, I believe that FORTRAN has unique advantages over other
programming languages.  Before I explain myself, let me state up front
that I am prejudiced.  I have programmed in FORTRAN for over 20 years and
teach courses in FORTRAN and code optimization in FORTRAN.

FORTRAN is the pre-eminent scientific programming language.  As the an
analyst for the Alabama Supercomputer Center, I can tell you that *all*
the codes we have are either 100% FORTRAN or 98+% written in FORTRAN.  I
do not see this trend changing.  While there are religous wars between C
and FORTRAN concerning which is the better coding language, the fact
remains that FORTRAN remains the language of choice for scientific
programming.

Therefore, if a student wanted to examine a piece of code, be it AMBER,
Gaussian or GAMESS (or any of a multitude of other programs), a student
would be well served having FORTRAN under her/his belt. Witness
the recent postings by Jeff Saxe on trying to determine the use of
the variable mv in the CURVES code as a good example for the need for
FORTRAN.  Knowing C/C++, JAVA or some other language and *not* FORTRAN,
ferreting out the answer to that question would have been significantly
more difficult. If one wanted to modify a piece of code to augment its
cuurrent capabilities, chances are those changes would have to be done in
FORTRAN.

A third reason for learning FORTRAN is its readability.  C/C++, JAVA can
be very powerful languages due to their pointer constructs.  However, this
power also tends to make code somewhat obtuse and difficult to follow.  I
ahve found that FORTRAN code is much more readable.  In my classes I have
found that even after three concentrated classes in FORTRAN, most of my
students can follow some very high level codes.  I can not say the same
for people who are learning other languages.  Tying into the ideas of the
above paragraph, readability has a direct consequence in terms of
debugging, modifying and understanding code.

The final reason for learning FORTRAN is that it is eminently optimizable,
as compared to other languages.  I do not wish to get into the computer
science of this issue.  Rather let me state as a fact which can be
validated in the computer science literature that it is easier to optimize
FORTRAN code.  I do not want to get into a holy war between those who
believe FORTRAN is faster as opposed to those who believe C is faster.
That flame war is truly a code-dependent issue.  However, for the general
case, it is easier and more straightforward to optimize FORTRAN code.  As
computers get faster and faster, it is important to be able to make codes
run faster.  It is inherently easier to get FORTRAN codes to do such.

I hope you find these few thoughts useful,

Mark Zottola Ph.D.		Alababa Research and Education Network
119 Rust Research Center	University of Alabama at Birmingham
1801 University Boulevard	VOICE:(205) 934-3893
Birmingham, AL 35294		EMAIL:[email-masked]

---

From: Christoph van Wüllen <[email-masked]>
Date: Wed, 31 Jan 2001 16:10:49 +0100

>for chemists. Let's assume they are learning only one.
FORTRAN. If you don't like it, learn C (or C++, but this makes no difference
for beginners).

-- 
+---------------------------------+-------------------------------------+
| Prof. Christoph van Wullen      | Tele-Phone (+49) (0)30 314 27870    |
| Technische Universitat Sekr. C3 | Tele-Fax   (+49) (0)30 314 23727    |
| Strasse des 17. Juni 135        | eMail                               |
| D-10623 Berlin, Germany         | [email-masked]    |
+---------------------------------+-------------------------------------+

---

From: Malcolm Gillies <[email-masked]>
Date: Wed, 31 Jan 2001 19:03:47 +0100

I think it's difficult to give a good general answer to this one.
If you are considering doing any 'serious' programming in the future
(e.g. writing programs of more than a thousand lines or so), then it's
a great help to get a firm grasp of the fundamentals, and a waste of
time to use anything other than modern tools and techniques. Java or C++
would be good (conservative) choices in that case. Picking up C or
Fortran once you have a grounding in either of those is not much work
at all.

If the intention is just to hack lightly on existing code written in
Fortran, then perhaps it's reasonable to take a shortcut and start there.

For the situations somewhere in between, for instance if you're
interested in the kind of day-to-day programming involved in scripting,
file format conversion, building simple web interfaces etc., I would
recommend Python (or at a pinch, Perl) as a good place to start.
It's an object-oriented language with clear syntax, and plenty of
libraries for useful everyday tasks. As an interpreted language, it's
easy to experiment and get instant feedback. You also have the
advantage of a user community which is very actively developing libraries
and applications with direct relevance to computational chemistry and
bioinformatics.

I should add the disclaimer that I have studied computer science,
and that my own history has gone something like Basic (1980) -
C (1985) - Assembler - Pascal (1990) - [AWK,Bourne shell,etc] -
Common Lisp - Standard ML - Perl (1995) - Python (1997) - Splus -
Fortran 77 (1999).

Learning C was definitely the turning point, though picking up functional
programming concepts (mostly through learning Common Lisp) broadened
my horizons, as did the concepts of object-oriented programming (first in
CLOS, an extension to Common Lisp).

cheers,

Malcolm
--
Malcolm Gillies <[email-masked]>
PhD student, computational medicinal chemistry
Dept Medicinal Chemistry, Faculty of Pharmacy,
Utrecht University, The Netherlands

---

From: Rajarshi Guha <[email-masked]>
Date: Wed, 31 Jan 2001 20:56:54 +0530 (IST)

> for chemists. Let's assume they are learning only one.

Well I think it depends a lot on what you are programming - if you're
doing numerical codes / simulations etc then C (or Fortran) is well
suited. If you want to quickly generate a GUI for simple visualization
then Java is a pretty good option. Other languages like Python/Perl etc
are more oriented towards text processing  - so it would be a good tool
for say translating file formats.

Another factor which affects choice of language is the learning aspect -
if people are already grounded in C then i think Java should be no
problem. For that matter Perl is also syntactically close to C.

Personally I would say C is the best choice - with a proper choice of
libraries both numerical and graphical (I talk from a Unix point of view)
applications can be put together. At the same time I also admit Perl would
be a language to keep handy - for rapid prototyping. C pointers still mess
up my day ;-)

------------------------------------------------------------------------
Rajarshi Guha                  | Last yeer I kudn't spel Engineer.
Dept Of Chemistry,             | Now I are won.
IIT Kharagpur.                 |
                               |
email: [email-masked] |
web  : www.psynet.net/jijog    |
-------------------------------------------------------------------------

---

From: Kimberley Cousins <[email-masked]>
Date: Wed, 31 Jan 2001 09:59:03 -0800 (PST)

Which "language" you teach to chem majors depends on what you expect them
to do: if they are likely to do scientific programmming, I concur that C++
is a good choice. If you want them to learn to think logically, while
providing them with tools they can really use, you might consider an
"applied" programming environment instead, like LabView for instrument
simulation or control, or perhaps a Mathematical programming like
Mathematica, Maple, or MathCad. These tools teach a sort of programming
skill while providing tools for use in other areas of chemistry.

Kimberley Cousins
Associate Professor of Chemistry
California State University, San Bernardino
5500 University Parkway
San Bernardino, CA  92407
(909)880-5391

[email-masked]
http://chem.csusb.edu/~kcousins

---

From: "Gavin Shear" <[email-masked]>
Date: Wed, 31 Jan 2001 13:23:16 -0500

Dear Dr. Salzner,

I would like to offer some examples of using JAVA in chemistry applications.
Please see: http://www.acdlabs.com/products/java/

You could download the structure drawing applet from here:
http://www.acdlabs.com/download/sda.html

Another language to learn could be ChemBasic.. a language similar to basic
that incorporates custom Chemical functions into our free ChemSketch
software.
We have many examples of ChemBasic (including all instructions) available at
http://www.acdlabs.com/download/

In my first year of Chemistry, our programming was with Fortran77..  I have
not
programmed Fortran since then.  Visual Basic might have been more useful,
although
the programming fundamentals learned with Fortran did carry over to other
areas
of programming.  C++ would have been (and I think still is) rather
challenging
for me at that time :-)

Many thanks,
Gavin Shear

> -----Original Message-----
> From: Computational Chemistry List [mailto:[email-masked]]On
> Behalf Of Ulrike Salzner
> Sent: 31 January 2001 04:46
> To: ccl
> Subject: CCL:programming language
>
>
>

---

From: Irene Newhouse <[email-masked]>
Date: Wed, 31 Jan 2001 14:08:01 -0600 (CST)

Since a poll question was asked, I wish to be polled in favor of FORTRAN
as well, for scientific uses.

*IS* there an example yet of a C/C++ application that runs faster then the
FORTRAN?  Speed is not an advantage I've heard computer scientists cite in
the religious wars.   The advantages I've seen cited are, to my jaundiced
view, disguises for "programming this way results in code easier for
professors/TAs to grade", not performance advantages.

Someone once said "if we had a teraflop machine with petabytes of memory
today, the comp. chemists would be happy for about a week.  Then they'd
start asking 'why can't we do this?'"  When the problems you're interested
in push the limits of the available machines, performance outranks most
other language criteria.  When you're interested in doing something with a
machine, you want to be able to reuse what's out there that's close & not
have to start from scratch.  For chemists, what's out there is FORTRAN.
If it ain't broken, don't fix it...

Irene

---

From: Irene Newhouse <[email-masked]>
Date: Wed, 31 Jan 2001 13:48:12 -0600 (CST)

I do agree that FORTRAN is most useful to scientists & unlikely to be
replaced any time soon.  I got support I didnt' expect from a colleague
with a Ph. D. in computer science who specialized in comp. chemistry
programming when he explained to me that in C/C++, arithmetic instructions
are implemented far less efficiently than in FORTRAN.  This is because C
was originally written to create operating systems & math is an
after-thought  [as should be obvious from:  if you need to do math with C,
you must 'include math.h']  While FORTRAN was written specifically to do
computations.

However, computer scientists have a completely different view of what
computers are for, and many departments no longer even teach FORTRAN.
[My sister once asked a math prof a question about the physcial
consequences of curl in electricy & magnetism & he said "I don't do
applications".  That's rather how computer scientists view comp.
chemistry].

Unfortunately, when students learn C/C++ from a CS dept., they also pick
up the attitude & then someone has to  pound it out of their heads,
because it's counterproductive for chemists.

Irene Newhouse

---

From: Richard Gillilan <[email-masked]>
Date: Wed, 31 Jan 2001 14:44:21 -0500

> for chemists. Let's assume they are learning only one.

Having been in a computer-science environment for many years and
then having moved into an experimental lab environment, I have a couple
different perspectives to offer.

JAVA is very popular among students, CS and non-CS, however
there are some drawbacks. JAVA is very slow, even in compiled form and
it is my understanding that industry has largely failed to adopt it for
large projects because of its lack of support for templates and
other reasons. In practice, we don't use it at all, although it may be a
valuable skill and a good choice for a first language for the following
reasons:

   1. It is a very good introduction to object-oriented program design.
   2. It is a valuable skill for web design, which most students have to do
       at some point in their career.

You might alternatively consider Python or Perl. Both are used probably
more than JAVA for scientific applications. In genomics and various
kinds of informatics.

FORTRAN is very easy to learn, very fast and leads to unmaintainable,
unreadable, unreusable, interdependent code that tends to get lumped into a single
file with no dynamic memory allocation (do I sound biased? ;). The software is
usually further obfuscated by layers of shell scripts, or worse, layers of invented
scripting language. Yes some people
do write good FORTRAN code, unfortunately most learn by example. FORTRAN
will be around for a long time to come, so you'll probably need to learn it ... it
won't take long.

C/C++ are the real standards in the CS world. C++ is harder to learn and has
considerable potential for misuse. It's very hard to find students with good C++
skills. I write all my new code in C++ and will never go back to FORTRAN.
It is nearly as fast as FORTRAN, and may infact  exceed it in some special applications.
(There was a FORTRAN vs C++ thread on this list some time ago).  I HIGHLY
recommend this book if you can find a copy:

                 Enough Rope to Shoot Yourself in the Foot : Rules for C and C++ Programming
                 by Allen I. Holub

The emerging software design concepts like "Design Patterns" and "Refactoring" are
not on most people's radar yet. They may or not not become popular ... the big problem
I see is that, like C++, they take additional time to learn and will most likely not
filter into the scientific programing world for a long time.

Richard Gillilan
MacCHESS and
Molecular Biology and Genetics
Cornell University

---

From: Jim Phillips <[email-masked]>
Date: Wed, 31 Jan 2001 14:36:55 -0600 (CST)

Hi,

I would say FORTRAN is the default scientific programming language because
plain vanilla FORTRAN compiles just about everywhere.  Of course, with a
language like Java it will run the same everywhere as well whereas FORTRAN
leaves behaviors like aliasing undefined.  FORTRAN also teaches bad
programming practices like fixed size arrays, global data, and all caps.

As for performance, most students don't know about -O and their code just
runs "fast enough".  For them a better algorithm or interface matters much
more.  Start with a scripting language like Python, or just use Matlab and
Mathematica.  If you care about performance, learn C and use something
like SWIG to speed up the part of the code that matters.

If you really care about performance, learn C because it is an excellent
model of what the compiler is really doing and you can handle any data
structure you want.  If you still need FORTRAN at that point, go for it,
but only after you learn what the "restrict" keyword is for in C.

-Jim

---

From: "Bill Hayden" <[email-masked]>
Date: Wed, 31 Jan 2001 15:46:44 -0500

Please check out our web site at:  http://www.chemcomp.com

We have a built-in high level programing language, SVL - Scientific Vector
Language which is "chemistry aware".  We use it to for developing our
built-in applications in our Life Science software, MOE - the Molecular
Operating Environment.

There are a number of academic sites world-wide that use it as a teaching
aid.

Thanks,

Bill

Bill Hayden
Vice President, Sales & Marketing
CHEMICAL COMPUTING GROUP
[email-masked]
phone - (514) 393 1055 ext. 27
fax - (514) 874 9538
http://www.chemcomp.com

---

From: Eric Bennett <[email-masked]>
Date: Wed, 31 Jan 2001 18:11:33 -0500

Irene Newhouse wrote:

> the religious wars. 

I've not heard of FORTRAN being faster either.  That should be more of a
compiler issue.  A good C compiler should produce faster code than a
mediocre FORTRAN compiler.  The FORTRAN advantage is that it's *easier*
to write scientific number-crunching code because of things like
built-in support for complex numbers, which C does not have.  But C is a
more flexible language overall, so it's no surprise computer scientists
would prefer it for general purposes and for teaching programming. 

I learned numerous versions of BASIC, then some assembly, then Pascal,
then C.   Then I picked up a FORTRAN 77 book and the general structure
of the language made me want to gag, so I put the book down and never
picked it up again.  I use C today.  But a friend of mine who is in
astrophysics and used to be more of a C zealot than I ever was quickly
stopped making fun of FORTRAN when he started writing programs to do
calculations.  He thought FORTRAN was that much better for what he was
doing.

But, instead of the personal anecdotes, why not look at what the people
who are writing major chemical/biophysical software packages use?  There
are numerically intensive scientific apps written under both FORTRAN and
C/C++, so that's good evidence that either choice is appropriate, but
> from what I can tell the majority still seem to be FORTRAN.  And many
are still under very active development, so FORTRAN is hardly being
consigned to the dustbin.  Even though I don't like FORTRAN myself I'd
have to give it a slight edge for chemistry applications.

But either language would be more appropriate than Java for a chemist
who is only going to learn one language.  How many numerically intensive
Java programs are there in widespread use?  I'm not aware of any.

>When the problems you're interested
>other language criteria. 

Hmmm, then you should have suggested assembly language.  :*)

Performance only ranks highly in a language comparison when the two
languages have very *different* speeds.  If the language is compiled and
there are highly optimized compilers are available, as for C/C++ and
FORTRAN, then this shouldn't be a major factor.

-- 
Eric Bennett
Cornell University, Chemistry & Chemical Biology

---

From: John Stone <[email-masked]>
Date: Wed, 31 Jan 2001 18:01:09 -0600

Hi,
  Someone forwarded this note to me, and I can't resist interjecting 
a few thoughts for people to keep in mind....

On Wed, Jan 31, 2001 at 02:08:01PM -0600, Irene Newhouse wrote:
> FORTRAN?  

Sure, there are tons of programs that are entirely impractical to write 
in Fortran, which is why they are written in other languages.  Programs
requiring sophisticated data structures are often difficult to write 
in Fortran.  Granted, you can express the same algorithm many different
ways, but some algorithms map particularly well to certain data structures,
and these data structures often map well to something other than simple
arrays.  This is not to say that there's no place for Fortran, but there 
are many applications where Fortran is simply an ill-suited language.
The same goes for C, C++, Java, etc...  None of these languages is master
of all tasks, they each have advantages and disadvantages.  

As far as more directly addressing your question about whether or not
there are C/C++ applications that run faster than Fortran versions of
the same applications, I'm sure there are many.  Most graphics programs
are written in C/C++ due to the system interfaces being implemented in C,
but the other side of that coin is that much of the processing performed
by graphics software tends to benefit from the use of complex and dynamic  
data structures.  Granted, if you use Fortran 90 you can probably do many
of these same things now, but most "Fortran" codes out there are still
old-style Fortran 77 type stuff.  There are lots of things that I'd have
a hard time imagining someone using Fortran to implement such as 3-D 
graphics software (not entirely Fortran's fault), GUIs, complex text or
other parsing software, systems programs like web servers, network daemons,
etc.  Sure, you could use Fortran to implement these things if there were
appropriate Fortran system interfaces, but would certainly be a painful
task...

> Speed is not an advantage I've heard computer scientists cite in

That's an awefully academia-centric view...
In the real-world, people use whatever language does the job best 
_for them_.  Some people use whatever language they already know just
because it is much more convenient than having to learn yet another one.
If development time is their primary constraint, then this is a perfectly
reasonable choice.  If performance is your main criteria, then you should
use the language which yields peak performance on your algorithm, with the
type of data structures that you use.  There's still a lot more to this
issue than just the language itself.  In truth, many languages are _fine_
for most tasks, but the compilers and system libraries available on the
computers in the field are sorely lacking for one of the "less popular" 
languages.  For example, I could give lots of reasons why Pascal and 
Modula are nicer languages than C or Fortran, but that doesn't change
the fact that I'll have one _heck_ of a time trying to get compilers for
all of the different machines that I might want to run my code on, 
nevertheless machines and compilers than yield good performance on the
final executable code.  So, given these considerations, you can easily
see why nobody writes heavy networking, graphics, or GUI code in Fortran....
Its not that it cannot be done, but because its much more trouble than 
it is worth.  

There have been lots of graphics programs written in C and Fortran, and
I'd have to say that to cite these as a specific example, C is probably
the better overall language for that type of work, especially now....  
I'd hate to contemplate implementing something like the computational core
of Renderman with its shader language (compiled/interpreted) in Fortran...
You could probably do it, but it would be a nightmare.

But, by the same token, I don't think I'd want to use C for implementing
algorithms with lots of complex math or linear algebra, provided that
I didn't need sophisticated data structures, if performance were my
main criteria.  Fortran is the obvious choice there...

> in push the limits of the available machines, performance outranks most

Well, the truth is that _FUNDING_ is the fundamental constraint.  You can 
do about anything you want, including building custom hardware, if you have 
the funding.  The real constraint is that we all have to do our research 
within the funding that is available, so we are forced to balance our costs 
between the "human costs" of developing high performance software and 
continuing to maintain it, versus the hardware costs of buying a faster 
machine, or building custom hardware just for our particular simulation.  
If you want a fascinating example of a field where they DID build special 
hardware, take a look at the "GRAPE" project by the astrophysics guys...
  http://www.abcnews.go.com/sections/tech/CuttingEdge/cuttingedge000602.html
  http://www.supercomp.org/sc95/proceedings/721_JMAK/SC95.HTM

If performance was truly the limiting factor, we'd all build our own
special hardware like these guys have, and like the genomics people have
recently started to.  Actually, this is another good example of
truly hard-core performance:
  http://www.timelogic.com/

> When you're interested in doing something with a

I agree entirely with what you say here.  
This is why people don't throw away legacy code that still performs
perfectly well, and why there are new college graduates taking jobs
maintaining COBOL, etc.   

Again, I'm not trying to say that Fortran is bad, but that it isn't _ALWAYS_
the best language, not by convenience, and not by performance either.
Best to be open minded and evaluate which language is best for each
task rather than assuming any one is better than the rest....

  John Stone
  [email-masked]
  (not speaking for my employer)

-- 
NIH Resource for Macromolecular Modeling and Bioinformatics
Beckman Institute for Advanced Science and Technology
University of Illinois, 405 N. Mathews Ave, Urbana, IL 61801
Email: [email-masked]                 Phone: 217-244-3349              
  WWW: http://www.ks.uiuc.edu/~johns/      Fax: 217-244-6078

---

From: Scott Brozell <[email-masked]>
Date: Wed, 31 Jan 2001 17:26:54 -0500

Hello,

For first year undergraduate chemistry students I think Java is a
good choice; Basic also would be fine.
My reasoning is that the simple Basic or the omnipresent Java
will be most useful to undergraduate students because what little 
programming any of them will do is likely to involve the web
or to be so simple that any procedural language will suffice.

For first year graduate chemistry students C++ or Fortran 95
would be my first choices followed by Java, C, or Fortran 77.
C++, Fortran 95, and Java offer support for more programming paradigms than
the older languages and imo encourage sound design and coding practices.
But I think most any procedural language will suffice for even
graduate chemistry students, most of whom won't do much programming.
Another type of language that has not been mentioned yet is the
symbolic math language, such as, Maple or Mathematica.  These can be
quite useful for graduate level work.

Obviously, for theoreticians and computational scientists knowledge of
Fortran is essential.  However, C++ and C are very popular among 
graduate students based on enrollment in C++ and C programming courses
offered by the Ohio SuperComputer Center.
Those languages are being used in the sciences:
http://oonumerics.org/blitz/
http://www-fp.mcs.anl.gov/petsc/
http://www.acl.lanl.gov/pooma/
http://math.nist.gov/sparselib/
etc.

Scott Brozell, Ph.D. in Chemical Physics
Science and Technology Support
Ohio SuperComputer Center