From: mroussel@alchemy.chem.utoronto.ca (Marc Roussel)
Subject: Re: The importance of high-performance computing
Organization: Department of Chemistry, University of Toronto
Date: Thu, 27 Aug 1992 15:27:40 GMT

In article <l9p02vINNorv@almaak.usc.edu> ajayshah@almaak.usc.edu (Ajay Shah)
writes:
>Parallel hardware is obviously a way to get revolutionary gains in
>compute power, but Bill Joy's law suggests that single CPUs will give
>tremendous gains without paying any software irritations (they
>certainly have done great in the last five years).

     I have no idea what Joy's law might be, but if you mean that you
expect the price/performance ratio for single CPUs to keep going down
the way it has been doing the last little while, I believe you are
mistaken.  There is only so much this ratio can improve before
various bits of physics start to interfere.  It's hard to say how close
to those limits we are, but it strikes me that when we see things like
special cooling systems being considered for top-of-the-line
microcomputers, we must be getting close to the point where increased
performance will cost more, even if performance keeps increasing.

>If this is indeed the case; that most people use workstation-type
>computers, then the argument changes quite a bit.  There may be room
>for a language with simple semantics like fortran, but only for those
>5% of users who want to use parallel hardware.  I suspect most
>scientific computation out there does not know or care about parallel
>hardware.

If my previous argument is correct, then your argument is irrelevant;
parallel hardware is simply the next logical step in improving
price/performance ratio.  You may be at least partly right however:
A lot of tasks are simply not very parallelizable so that, even running
on multi-CPU machines, they will hog one processor and leave the others
alone.  There are nevertheless other factors which in my opinion make
Fortran a logical choice for much scientific computing.

	  1) Fortran has an exceedingly shallow learning curve.
	     I'm not saying that you can learn to program well in
	     Fortran faster than you can learn to program well in any
	     other language, but you can write your first useful program
	     faster in Fortran than in most other languages.  Scientists
	     don't write programs as ends in themselves; it is not just
	     that they THINK they have better things to do with their
	     time, they actually DO have better things to do with their
	     time.  This occasionally causes a good deal of trouble, but
	     it is a sociological factor which can't be overlooked and
	     which accounts for a good deal of Fortran's popularity.

          2) Part of the reason that Fortran is so easy to learn is that
	     it provides fairly direct support for the things which a
	     broad class of scientists do routinely.  No other commonly
	     available language handles complex arithmetic right out of
	     the box.  C++ doesn't count because it forces us to deal
	     with C's awful syntactic conventions.  (To quote Carlin:
	     "These are my rules, I make them up!"  More seriously, C
	     and C++ violate criterion (1).  For example, I learned Fortran
	     by writing a library which performs certain quantum chemical
	     calculations.  As far as I know, this library is still in use.
	     I doubt that I could have undertaken such a project in C and
	     completed it in the alloted time without at least some prior
	     experience with the language.)

          3) You can convert Fortran code to C code, but if you want to
	     have any chance of maintaining it, you had better hold on to
	     the Fortran code.  The old libraries and programs are still
	     useful and we can't just throw them away.

     The old "Fortran optimizes better" argument is weak (as Ajay points
out), but it's hardly the only argument around for the continued existence
of the language.

				Marc R. Roussel
                                mroussel@alchemy.chem.utoronto.ca
Newsgroups: sci.math.num-analysis