From: Richard J. Gaylord <gaylord@ux1.cso.uiuc.edu>
Subject: Re: The Real Meaning of Efficiency?  (Re: Serious Programming, etc.)
X-Xxdate: Fri, 20 Nov 92 08:16:46 GMT
X-Useragent: Nuntius v1.1.1d12
Organization: University of Illinois
Date: Fri, 20 Nov 1992 14:15:02 GMT
X-Xxmessage-Id: <A7324F6E2E019B19@mm-mac25.mse.uiuc.edu>

Subject: Re: The Real Meaning of Efficiency?  (Re: Serious Programming,
etc.)
From: Richard Fateman, fateman@peoplesparc.Berkeley.EDU
Date: 19 Nov 1992 17:43:49 GMT
In article <1egjolINNk2e@agate.berkeley.edu> Richard Fateman,
fateman@peoplesparc.Berkeley.EDU writes:

>In my view one of the most powerful abstractions for programming
>mathematical algorithms is recursion.  

If recursion and pattern matching were so good, perhaps
>we wouldn't see so much claptrap in "fast Mathematica" programs
>with # and &, which (I suspect) are merely ways to AVOID pattern matching
>and the usual function call overhead.

>Stephen Wolfram's ambition (according to an interview in an article in
>The Chronicle of Higher Education some months ago) appears to be
>to have the Mathematica language replace all others as a first
>programming language (i.e. instead of Pascal, Modula II, Scheme,
>Ada, ... etc).  I am not enthusiastic about this prospect.
>
===========================

i  hear comments like this quite often from computer science professors
and it explains why the teaching of programming by cs departments to
engineers and scientists and mathematicians is almost a total failure.

recursion is said to be a powerful tool but it is almost never used. why?
one reason, of course,  is that the old FORTRAN didn't support recursion. 
another reason is that recursive thinking is in fact difficult to master
and many people are uncomfortable with it.
yet another reason is that recursion is not always very efficient.

pascal, modula II, scheme or ada are terrible choices as first languages
for engineers or scientists since these languages are in fact not used in
the technical fields. it at least make a little sense to teach
programming in FORTRAN  since this language is actually used inscientific
computing  and it makes the most sense to teach programming in one of the
cas languages because the vast majority of professionals will be doing
their computing on desktops with cas's that support graphics, algebraic
manipulation, etc.

the cs departments have managed with their control of the teaching of
programming to scientists and engineers and mathematicians to turn those
people off from programming at the very time that computing has become an
indispensible tool in these fields. i know they say that its the eng.
depts. that make them teach FORTRAN   (sounds like george bush blaming
the congress) but its totally clear that most cs departments don't have
the faintest idea what non-cs people want or need to know about
programming. this can be seen from the recent move at many places from
FORTRAN to C as the first language. if they thought FORTRAN was unpopular
amongst engineering students wait till they see the student reaction to C.

it has been said that you shouldn't teach programming with mathematica
because its a bizarre and inconsistent language and if you learn
mathematica programming it will ruin your ability to learn how to program
properly. 

this is COMPLETE nonsense. 

one can ignore all of the things one thinks are 'wierdly idiosyncratic'
to mathematica [to some of us they are neat features not bugs] and just
use parts of the language to explain the general principles of
programming and algorithm development [eg., recursion, functional,
procedural and rule-based programming]. 
This is being done at the university of illinois in the intro cs course
that is required of all engineering students and the students are
responding to the course much more positively than they did in the past. 

the best thing that could happen to the teaching of programming to tech
people would be to use mathematica to do it.

finally, the comment about the use ofthe 'claptrap' of anonymous
functions to avoid pattern matching is total claptrap (which according to
the dictionary means  pretentious nonsense). i write almost all of my
programs using anonymous functions because i use a functional programming
style which is very natural to me. others  prefer to program using 
pattern matching (which is far more sophisticated in mathematica than in
most other languages). the ability to choose the style most appropriate
to the problem and to the way in which the programmer thinks is one of
the most important features of mathematica.

 hopefully, this thread will have ended by the time i return from my
thanksgiving hoiday.
Newsgroups: sci.math.symbolic