From: me@ienext.unl.edu (My Account)
Newsgroups: sci.math.symbolic
Subject: Re: The Real Meaning of Efficiency?  (Re: Serious Programming, etc.)
Date: 19 Nov 1992 17:13:34 GMT
Organization: University of Nebraska--Lincoln	
Distribution: world
Reply-To: me@ienext.unl.edu
NNTP-Posting-Host: ienext.unl.edu

In article <18NOV199217533011@reg.triumf.ca> orwell@reg.triumf.ca (BALDEN,  
RON) writes:
> 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.  
> 
(More sensible remarks deleted)

I agree with you completely. I find it easier to quickly generate correct  
programs in Mathematica than in MAPLE. The fact that these programs then  
do not execute as quickly as in MAPLE is *usually* of little significance.  
This is because the programs I write are generally one-shot affairs---I  
run them once and then they are history. In most other cases when the  
program *is* used repeatedly it executes quickly enough that I don't  
really care whether it can be made to run even faster. In any case, the  
time I spend programming in typically much greater than the time the  
computer spends executing my code. 

This thinking is just the obvious extension of standard programming  
notions. If you want to speed up the execution of a program what do you  
do? You profile the program to find out where it is spending most of its  
time and then you spend *your* time on improving the execution speed of  
*those* parts. Well, if I "profile" the time I spend on a CAS problem I  
generally find that the overwhelming majority of time is spent  
programming, not executing. 

Of course, if you are writing a program or package which will be run many  
many times then the balance may shift to where the speed of execution is  
more important than the speed of development. And as Ron pointed out, this  
is precisely why Mathematica itself has so many lines of C code.

And below, my $.02 worth on a related topic:

IMHO we should steer away from discussion that occasionally verges on "My  
CAS is better than yours (Nyah, Nyah, Nyah!)". Certainly both Mathematica  
and MAPLE are serious programming systems. Equally certainly, each one is  
better at certain tasks than the other. Therefore it is *impossible* to  
make a blanket statement that one is better than the other (unless you are  
simply firing off flame-bait or releasing pent-up programming  
frustration). Let us, instead, educate each other on the respective  
benefits to be obtained from each system so that we may all choose the  
system which is best for our own needs.

To that end, let me note that the pattern matching abilities of  
Mathematica have been invaluable in my development of Operations Research  
related notebooks. 
--
--------------------------------------------------------------------------
 Dan Scott   me@ienext.unl.edu     NeXT mail welcome
--------------------------------------------------------------------------