From: hrubin@pop.stat.purdue.edu (Herman Rubin)
Newsgroups: comp.edu,comp.lang.fortran,comp.lang.misc,sci.math
Subject: Re: Scientists as Programmers (was Re: Small Language Wanted)
Date: 30 Aug 92 19:53:59 GMT
Organization: Purdue University Statistics Department

In article <17mcr4INN4qq@network.ucsd.edu> mbk@lyapunov.ucsd.edu (Matt Kennel) writes:
>hrubin@pop.stat.purdue.edu (Herman Rubin) writes:
>: The problem is that the CS people are, in this sense, like the purissima
>: mathematicians (if it can be applied, it is time to work on something else.)
>: They concentrate on what no scientist is particularly worried about, like
>: making the printed output look neat, or even making life easy for the
>: compiler.


>: Most good scientists can think of their problem, and how reasonable operations
>: can attack it.  But the languages do not facilitate this, and often even if 
>: the features are present, they are in some obfuscated syntax.

>I agree.  I believe the CS vs. Science programming divide is cultural, but
>I'm going be somewhat partisan and blame the programming authorities a bit more
>than the scientists.

>My view of things:

>1) There are scientists who don't know the value of organized software
>    engineering.  I mean basic things like type-checking subroutine
>    arguments, modularization, modern data types, and other things like
>    that.  They write the infamous spaghetti Fortran.

This statement is too broad.  Modularization is not a problem for the
scientist, but it can be a major time-waster if the current software is
used.  Subroutine calls are, at this time, and for the foreseeable future,
quite expensive.  This was not the case when Fortran and Algol were first
produced; there were few registers then, transfer was the fastest instruction,
and context switching cost less than one multiplication.

I have deliberately violated types to get the job done.  In fact, I see no
good way out of it.  Now there might be some point to informing the programmer
that types are violated, but very definitely not to insist on it, or to force

Also, mathematicians especially use lots of operators.  Despite what the CS
gurus say, allowing the introduction of additional functions is not the
same thing.  Also, mathematicians and scientists are accustomed to using
whatever syntax they like, as long as it does not lead to confusion.  But
the CS people insist that only the standard operators are to be allowed to
use infix notation, and all others must be prefix, except in reverse Polish
systems, in which all must be postfix.  

>2)  There are computer scientists who don't understand the demands of
>    scientific computing, which is understandable, because they never
>    write scientific programs.
>
>The problem is this:
>
>There are scientists who *have* learned the value of good software
>engineering and believe what the comptuer scientists have said for years, and

>
>Too many CSoids however dismiss the concerns of scientists as being
>narrow and "uninformed", assuming that they're all like the nerds in
>#1 above.  Or they claim that language X does what scientists need
>(or "no we don't need to bother because it's possible to implement that
>in a library" or "a quality of implementation issue" (a euphemism for

Scientists generally come up with types in a logical manner which are not
included in the list presented by the language.  Some languages have allowed
the introduction of additional types.  But C is a bad example here; typedef
was usurped for something of little use anyhow, and should have been called
typealias, reserving typedef for a special case of struct, or class in C++.

Also, mathematicians especially use lots of operators.  Despite what the CS
gurus say, allowing the introduction of additional functions is not the
same thing.  Also, mathematicians and scientists are accustomed to using
whatever syntax they like, as long as it does not lead to confusion.  But
the CS people insist that only the standard operators are to be allowed to
use infix notation, and all others must be prefix, except in reverse Polish
systems, in which all must be postfix.  

>Software technology and practice for addressing the particular concerns of
>computer scientists has advanced tremendously since the early days, but the
>model of scientific computation hasn't changed much since early Fortran
>except vicariously through the progress in "regular" computer science.

>I personally would love a "Numerical Eiffel" type of language, but I bet the
>Eiffel gurus would say "eeuy yuck, you're polluting our pristine creation
>with needless cruft".  One of the Modula-3 people has said that one of
>their design goals was to make it good for numerical computation (a
>refreshing attitude).  One of the examples was "easy access to the IEEE
>rounding modes" (what the f*???) as standard in the library, but admitted that
>complex numbers weren't, much less array operations.

>I don't want "good for numerical computation" to mean "not all that much
>worse than Fortran 77"!

>I believe Herman Rubin and other mathemeticians when they say that they want
>good performance and easy use of multiprecision integers and fixed point
>numbers, even though I and most physicists, would never have a use for
>them.  So can the computer scientists accept our needs as well?  Remember,
>it's the scientific programmers who *DO* want change who are doing all the
>complaining--the "old farts" just keep on banging out Fortran and mind their
>own business.

>Scientists don't want to needlessly accept *regress* in concrete areas in
>order to make supposed "progress" in areas they haven't been convinced they
>want.  The progress has to be good enough to convince departmental computer
>comittees to buy a new $2000 compiler.  Notice that scientists aren't
>all that hidebound by tradition---they enthusiastically take up Maple
>and Mathematica---because they can immediately recognize progress, and
>even despite their lack of "goto". :-)

>And finally the old standby "why speed is in fact, important".  Why does
>factor of 2 matter?  It's the old "the program is everything" view.  Running
>any particular one program faster is not, in fact, what matters.  What does
>matter, is that with a faster machine and a faster language I can do *more*
>and *better* science.  (I could easily use up a 10 teraflop machine next
>month.) Many times we're running things on hardware far too underpowered to
>"do the job right" in any case, but science accepts approximate solutions.

The previous reference to such things as Mathematica is an example of the
need for speed.  One of my colleagues set something up on Mathematica, and
for checking a single case, that was fine.  But for the production run, the
speedup of over 100 garnered by converting from Mathematica to C was needed
to get the job done.

>Take the statement, "Scientific progress is proportional to the logarithm of
>computer power."

>The computer scientist hears this and says "You silly fools, if you
>saw the big picture you'd realize that the constant factor doesn't matter
>one bit so quit complaining."

>The scientist hears this and says "Well that's why we need to get
>all we can get, and then some, in order to make progress."

Even more, how much speedup do you think we will get in the future?  Our
current switching time is about 10^-10 second, maybe 10^-11.  Probably
10^-15 will be obtained, but 10^-18 is the length of time for light to
cross a small molecule.  Wave lengths of X-rays are comparable to the
interatomic distances.
>
>I think there is in fact some hope.

>Specifically, the parallel- and super- computer research community.
>In it, there are people who truly understand both the computer scientists
>and the scientific users and are committed to progress rather than
>defining away the problem as uninteresting or trivial.

But these have their problems as well.  Vector computers which can only
handle "rigid" vectors (the spacing between elements cannot change) run
into problems, and parallel processors even more so.  To give a simple
example ot such a problem, consider the problem of computing a function
for which there are several different parts of the domain, each calling
for a different algorithm.  Parallelism is almost a curse here.  Or a 
simulation in which about 0.01% of the cases take 1,000 times as long?
A parallel processor with 2^14 or more processors is going to be doing
one of those most of the time.  Now this problem is partly hardware and
partly software, and I can handle some of them myself.
-- 
Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907-1399
Phone: (317)494-6054
hrubin@pop.stat.purdue.edu (Internet, bitnet)  
{purdue,pur-ee}!pop.stat!hrubin(UUCP)
Xref: sparky comp.edu:1345 comp.lang.fortran:3180