From: mbk@lyapunov.ucsd.edu (Matt Kennel)
Newsgroups: comp.edu,comp.lang.fortran,comp.lang.misc,comp.arch,sci.math
Subject: Re: Scientists as Programmers (was Re: Small Language Wanted)
Date: 2 Sep 1992 19:50:02 GMT
Organization: Institute For Nonlinear Science, UCSD
Distribution: na
NNTP-Posting-Host: lyapunov.ucsd.edu
X-Newsreader: Tin 1.1 PL3

davidsen@ariel.crd.GE.COM (william E Davidsen) writes:
: In article <180heaINN60q@network.ucsd.edu>, mbk@lyapunov.ucsd.edu (Matt Kennel) writes:
: 
: | Specifically, we don't *know* what the eventual task will be or whether
: | a programs a 'throwaway' or a 'keeper'.
: | 
: | I write something slap dash and some intriguing results come out, and then
: | we start to pursue that line further and all of a sudden the little
: | throwaway code starts mutating into a monster, especially when my boss puts
: | another student on the project.  And at any time you still don't know whether
: | "this is the last modification" or whether it will be hanging around for
: | a long time.
: | 
: | When new results are coming out, its an awfully hard sell to my boss who's a
: | physicist not a software engineer to say "why don't I spend 2 months
: | rewriting this from scratch so it will do the same thing as it does now".
: 
:   That's why a programmer should do it. It doesn't take longer to write
: a salvagable "throw together" than a rats nest, you use a few modules in
: the obvious places and comments to show where error checking would go,
: and stuff like that.

I try.  I'm more attuned to these issues than most of my colleagues, but
in general practice there's a problem, I admit.  (Some of my new codes I've
written well enough to put out for public consumption but not all of
my old ones).

It's the human "bandwidth" between programmer and scientist that's the
problem here.  I'll stick to my personal experience: my adviser and I
are talking about our previous runs and we think of things to do.  The
discussion is in terms of "why don't we now rotate into the coordinate
axes defined by the first D principal components locally instead of
projecting down in the original coordinate system" and I go translate
that into code. 

It would take quite a long time (and cost money that we simply don't have)
to explain enough of the science to a programmer before it would be useful
to hire one.  (Don't take that last example too literally---most
programmers would understand that one)

The bottom line is the ratio between required new programming and new
science.  If it's not very high, the scientists will roll their own.

Scientists communicate their thinking via published papers, not programs,
and it's usually easier to read their papers (unless it's in something
cryptic like Phys Rev Lett) and hire a grad student to write up the code,
then try and fix one of theirs.

:   That and comments, good programmers use a few comments in even the
: fastest program, if only so they can throw it out later knowing what it
: is. A program can always be expanded later in minimal time without
: "doing everything right," as long as you don't do anything wrong.

They don't know that they're doing anything wrong.

: -- 
: bill davidsen, GE Corp. R&D Center; Box 8; Schenectady NY 12345
:     I admit that when I was in school I wrote COBOL. But I didn't compile.

--
-Matt Kennel  		mbk@inls1.ucsd.edu
-Institute for Nonlinear Science, University of California, San Diego
-*** AD: Archive for nonlinear dynamics papers & programs: FTP to
-***     lyapunov.ucsd.edu, username "anonymous".