I think the big change since my time is that there is now a real market
for computer science specialists who do not have one foot in some other
discipline.  In the old days most people who used computers had some
spectrum of application areas in mind, usually hard sciences or business.
It was easier to teach computing to someone who had hand solved a
few hundred problems in math, physics, or linear programming than to
teach those applications to a generic programmer who would probably
learn by trial and error where rounding error artifacts, singular matrices,
and other such traps were to be expected.   Failure to anticipate and
control rounding error cost a major oil company many millions of
dollars back when that was real money.  The people who did that
blunder understood the physics of the problem very well.

In the early days, applications in the hard sciences were very important,
and in several of these FORTRAN is still the lingua franca  -- besides it
is particularly suited to number crunching and easy to read.  Perhaps
it was a learning advantage to start out in absolute machine code, filling
locations on large sheets of butcher paper on a table with the actual op
codes.  We learned to think like the computer.  Then we got some helps,
like SOAP, which took care of optimizing placement of instructions on
the 650's magnetic drum to keep down the time wasted waiting for the
next instruction to come under the read/write head.  Then we got the
immediate ancestor to assembler, the Bell Labs language that let us
use a few symbols that the program resolved for us as it generated code.
Finally came the real assembler and almost immediately FORTRAN II.

Along with this came the console typewriter, magnetic tape drives and
then hard drives.   Once it became practical to store data from one run
to another the whole area of data management began to develop.  Data
structures didn't mean much in the era of fixed  word length machines,
like the 704X, 709X and clones by other manufacturers that used the
36 bit binary word that amounted to about 8 significant figures in floating
or scientific notation.  It was like that Ford car that you could get in any
color you liked, as long as you liked black.

Nevertheless, there is no substitute for clear logical organization of
the computation, preferably before coding, whatever the language.  The
language is for the programmer, not the computer ,and many vendors
have families of three phase compilers where only the first phase is
specific to the programming language, and only the third to the hardware.
A sufficiently clever programmer can write good code for a particular
problem in almost any language he likes.  Certainly some are more
convenient than others.   Having written a screen graphics package in
FORTRAN, I can assure any doubters that it is not a particularly
efficient choice.   On the other hand, I wouldn't consider any other
language for a molecular orbital computation program.  Last time I
checked, the Quantum Chemistry Program Exchange spoke
FORTRAN, and I recently saw mention on the Web of a new
astrophysics program should by now be out in that language.

The definition of a problem and its solution is essentially independent
of the programming language selected for implementation, though
the availability of a good subroutine package for a particularly tricky
computation may be well worth considering.  For instance, diagonalizing
a large but not sparse matrix with management of rounding error is
important to some applications and that wheel is too complex to be
re-invented each time.

What years of experience with one language does is develop an
ease of reading and detecting common errors that does not come
quickly with change to another.   On the other hand, switching operating
systems is not nearly so difficult.

Choppy

At 02:21 PM 9/20/03 -0500, you wrote:

>Exactly Dustin and Ray! I've even used those exact words ("Hey, it's just
>another programming language").  However, I've noticed that comp. sci.
>departments are starting to push specific languages.  In my opinion, when a
>department pushes a specific language, the students don't graduate as
>"language bigots" they just usually have no clue that there is more than one
>way to do something, or why some things are done a certain way.
>
>An example:
>
>The two data structure classes at USL (before it was ULL) were probably the
>most important classes I ever took.  I've spoken with people who took them
>after they started using the C++ language in those classes and it's just sad
>in my opinion what happened (granted, the language shift occurred around the
>same time as the classes became mandatory for BSAT majors so that may have
>had something to do with it also).
>
>When I took these classes they were taught in Modula-2, the classes went
>something like:
>1) lecture: here's how [structure X] works, assignment: write a [structure
>X] module
>2) lecture: here's some examples of using [structure X], assignment: here's
>a problem, use *YOUR* [structure X] module to solve it.
>
>The people I spoke with said the classes now go:
>1) lecture: here's a [structure X] class, there are [Y methods] on it,
>assignment: here's a problem, use *THIS* [structure X] class to solve it.
>
>It's like they're pushing the OO aspects of C++. The people taking these
>classes have almost no clue as to how the structures actually work, they
>just know that [structure X] class has [Y methods], not to mention that they
>don't understand that there can be multiple implementations of [structure X]
>each with there own pros/cons.

Reply via email to