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

In article <1992Aug31.133811.3626@crd.ge.com> davidsen@crd.ge.com (bill davidsen) writes:
>In article <34742@cbmvax.commodore.com>, jesup@cbmvax.commodore.com (Randell Jesup) writes:

>| 	I think whoever wrote that last paragraph is quite correct.  One
>| should also remember that scientists are programmers of necessity: they
>| program because they have to, not because they're good at it or (generally)
>| like to do it.  This certainly doesn't improve the quality of the code,
>| let alone the maintainability...

>  The problem as I see it is that too many scientists and engineers
>think that because they can write working code they don't need (or are)
>programmers. Most people can learn to play the paino, but would agree
>that they are not professional quality, even the "background music in a
>piano bar" professional quality. Yet they think that programming
>somehow requires less training, practice, and dare I say it, *talent*
>than music.

>  No optimizer will ever replace using the right algorithm to solve the
>problem, no programming tool will ever generate meaningful names, no
>automated indenter or pretty-printer will ever generate useful comments
>or truly readable code. To do this even competently is a skill which
>conspicuously eludes most people who don't write code for a living, and
>to do this with consumate skill requires training, practice, and a
>natural talent given to only a few people. 

But noone who only knows programming and not the mathematics involved can
produce the right algorithm, and nobody who does not know the machine
vagaries and even machine instructions not in the HLLs can do the 
necessary machine-dependent choices.  And those who design the hardware
need to understand these complexities to provide the tools to do the
job efficiently.

Also, the person with the problem, and the person doing the mathematical
analysis, are usually in possession of quite a bit of information which
can be used to produce better and faster code.  This information is not
known by the compiler writers and language designers, or if known, is
discarded.  Almost 30 years ago, I was informed by one of the IBM
scientific people that, well before the design of the 360 was firm,
they complained about the lack of communication between the integer
and floating units.  Now at that time, it would have been possible
to handle the problem.  Nothing was done.

Current hardware and software design is dominated by the view that
integer registers should not be required to do good fast arithmetic
on anything longer than an address, and that floating-point arithmetic,
of the accuracy provided, is adequate for number-crunching.
-- 
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)
Newsgroups: comp.edu,comp.lang.fortran,comp.lang.misc,comp.arch,sci.math