From: steve@physics.unc.edu (Steve Christensen)
Subject: Re: Serious Programming (was: Re: MAPLE resources reccomendation)
Organization: MathSolutions, Inc. - Chapel Hill, NC.
Date: Wed, 18 Nov 1992 04:30:11 GMT

With all due respect to the recent contributors to this
line of postings [all of whom I consider to be extremely
interesting, helpful, and knowledgable researchers] ...

I normally try to stay out of such "religious" discussions, but this time
I cannot resist.  I am noting comments like

"Pattern matching is nice, but..."

"It's ok for fiddling around, but..."

with regard to Mathematica's abilities.  We have written a 250 function
commercial piece of software that contains - in a very modular form -
over 25,000 lines of Mathematica code and comments.  Before we did this
- starting in the late 80's - we tried virtually every system available
with great care.  [I even learned enough LISP to help with the porting
of the KCL version of Maxima to the Sparc compilers.]
Given the complexity of the functions we needed,
relying almost totally on pattern matching, only Mathematica had the
resources we needed.  Not being experts at the deep theory of
programming language syntax, we plowed ahead and wrote our software.  I
can honestly say that for me programming in Mathematica was very
straightforward and even fun.  So far, we have been able to devise
every kind of structure and function that we needed.  When a bug or
feature of Mathematica caused some problem early on, we were always
able to find a work around that did not require any C programming.  We
have been extremely happy with the ease with which we are able to
create new functions.

We have discussed with some of Mathematica's competitors about porting
our code to their software.  The first question we have to ask is - can
your software do all the kinds of pattern matching that Mathematica
can?  So far, the answer has been - "No, but we are planning to do
that."  If this has changed, I would love to hear from one of my
friends developing the other systems.

We have no desire to write in C or LISP since this would require us to
have compilers for maybe 15 different kinds of computer architecture or
operating system, not to mention the hardware.  With Mathematica we do
all our development on our Sun workstations and the code runs on all
machines that run Mathematica.

It is true that Mathematica does not work by loading a lot of libraries
(though the newer "thin" versions do some of that), but I have found
that systems that load a lot of libraries can get very boring to use.
[I recently have been studying Axiom, which I find interesting, but I
got rather annoyed when it took about 5 minutes to load a bunch of
libraries before an integral could be done.  When I did the same thing
in Mathematica, it took a few seconds. Perhaps I am still too much of
an amateur with Axiom.]

I would be very happy to hear details on just how wonderful some other
system is at doing pattern matching.  I consider powerful pattern
matching to be by far the most important feature of a computer
math system.  With it, I can teach the system to do just about anything
I want.  Other systems may have some programming syntax that is clearer
to a programming theorist, but I could care less.  Some systems might
be able to do some integral that Mathematica can't, but again I could
care less - I can teach Mathematica to do integrals if I like.

Perhaps I am missing some of the finer points of the the discussions
in this news group, but I think that some of it should be in
some group like comp.software.religion --- probably including this
posting. Oh, well... Amen.

Steve Christensen
MathSolutions, Inc.
Newsgroups: sci.math.symbolic