From: orwell@reg.triumf.ca (BALDEN, RON)
Newsgroups: sci.math.symbolic
Subject: The Real Meaning of Efficiency?  (Re: Serious Programming, etc.)
Date: 18 Nov 1992 17:53 PST
Organization: TRIUMF: Tri-University Meson Facility
Distribution: world
NNTP-Posting-Host: reg.triumf.ca
News-Software: VAX/VMS VNEWS 1.41    

Regarding the issue of the relative "efficiency" of programming languages
available in different mathematical/symbolic computation systems I would 
note that years ago I started off playing with SMP (and eventually did some
real work with it) on a VAX-780 which typically had 20 users; now
I can run Mathematica on a DECstation 3100 or 5000 all by myself.
The ratio of the hardware power available to me now to that then is
something like 50-100; thus differences in the *runtime* "efficiency" of
programming languages of factors of 4 -- or even more -- in what are
*supposed to be Very-High Level (VHL) programming languages* (following
in the lineage of APL, the first widely-used VHL language) --
leave me quite cold.  What is important to me is the
total time spent formulating and solving a problem.  

[I note that the same relative timing ratio may be significant
or not depending on context -- a difference between 2 and 20 seconds
for a single operation is important to me when working away on
the interactive simplification of a large expression, because
psychologically you're twiddling your thumbs waiting for the result,
but the difference between 1 hour and 10 hours is not important --
they're both batch jobs where I can go and think about something
else.] 

These "efficiency" arguments have all appeared before in the history
of computing when the first FORTRAN compiler appeared to challenge
assembly language; "those who do not know history are condemned to
repeat it".  (See the comments of John Backus, the "father
of FORTRAN" in his Turing Award Lecture:  "Can Programming Be
Liberated from the von Neumann Style?  A Functional Style and
Its Algebra of Programs?"  I believe Backus also discusses
these issues in the "History of Programming Languages" conference
proceedings edited by Richard Wexelblat (1978)).  

To me, it seems that Maple is certainly a VHL programming system in
terms of the facilities available, but that it does not quite have a
VHL programming language as linguistic glue to weld together its different
facilities -- that its lineage is basically from what Backus calls
"Von Neumann" (ALGOL/FORTRAN/Pascal) languages.   (In a somewhat
similar vein, the IMSL scientific subroutine library offers individual
VHL numerical problem-solving facilities, but you still have to use
"low-level" FORTRAN to weld together various IMSL routines in a
stand-alone program.)  In contrast SMP/Mathematica's (spiritual,
at least) programming lineage comes more from APL.

Finally, it seems to me disingenuous to attack the Mathematica
user-level programming language on the grounds of "if it is so good,
why don't the developers of Mathematica use it to bootstrap their own
system?"  (To me, a bit like asking, "if the set-theoretic query 
languages of relational database management systems are so good, why
aren't they written in SETL?")  The whole point of VHL languages is to
insulate the *user* from details which reflect the details of the
computer hardware architecture.  But given that you're actually going
to run the system on a `Von Neumann' architecture, the *developers* of
the system can hardly afford to be ignorant of these details. 
If the developers at WRI sweat away and write in C to get
factors of 4 difference in runtime, then good for them -- their
effort is amortized over the whole Mathematica user community.
But after all, we're paying them for their sweat.  What I care
about is my effort in using their system, not their effort
in creating it.

Ron Balden