Re: Mathematica as a programming language. / Holy War?

*To*: mathgroup at smc.vnet.net*Subject*: [mg3145] Re: Mathematica as a programming language. / Holy War?*From*: fateman at peoplesparc.cs.berkeley.edu (Richard J Fateman)*Date*: Tue, 6 Feb 1996 22:51:13 -0500*Organization*: University of California, Berkeley*Sender*: owner-wri-mathgroup at wolfram.com

What fun... In article <4f4hus$cpu at dragonfly.wolfram.com>, Dave Wagner <wagner at bullwinkle.cs.Colorado.EDU> wrote: >In article <4euo82$nph at dragonfly.wri.com>, >Phil Perucci <pperucci at access.digex.net> wrote: >>It seems the elegance of language is inversely proportional to its power. >> It's not clear what you mean by power, but a combination of elegance and complexity in a language is unusual. Mathematica is an example of an omnibus language. Bits and pieces of many other systems. >>Mathematica and Oracle's PL/SQL are two of the screwiest languages I have >>ever used (ESPECIALLY MATHEMATICA), yet they are the easiest tools for >>"getting the job done". > Dave Wagner wrote: >Well, I hope we don't start a religious war over this, but I strongly >disagree. All of the seemingly diverse features of the language are >really manifestations of only a handful of very powerful primitive >concepts. The most general of these is pattern matching and rule >substitution. ... >There are really only a few "magic cookies" in the language (like >Sequence, Evaluate, Unevaluated, and certain attributes), and most >users aren't aware of them anyway. Unfortunately, intermediate/advanced programming requires that users learn or guess about the painful stuff. e.g. packages, the mysterious underlying default decisions in plotting, numerical code, what is simplification, etc. I think that few people understand the matching procedure in its entirety, even though (I agree with Dave) that this underlies a lot of the system. This is not the sign of a language (as proposed from time to time) that should be taught as a first programming language. Mathematica makes it difficult to illustrate the concept of scope. It implements Lists as Arrays, making nonsense of data structure access times. It uses non-deterministic algorithms for updating of structures out of sight of the user. And more. >Mathematica is the easiest tool for "getting the job done" precisely >because it has so many built-in high-level functions. .... This may be true for Dave Wagner and many other readers of this list, but it is hardly an absolute statement. It is clear that one's choice of "easiest tool" is heavily conditioned on what one is familiar with, and the task at hand. For example, I cannot write a WWW server in Mathematica, though I can easily write one or take it off a library shelf, in several other languages. And if the task at hand is to do some lengthy computation fast, Mathematica is generally a poor choice. Some people like C, C++, competing computer algebra systems, ML, Lisp (emacs, common), Perl, etc. Dave writes.. > Would it be a >better language if you had to implement all of these from scratch? I >don't think so. If you find the kitchen-sink approach distracting, >just ignore everything you don't need. Mathematica works great for 100% correct input. But I think that virtually every reader of this list has evidence that some commands especially ones that are not entirely correctly stated, can hop up and grab you by the shorts. -- Richard J. Fateman fateman at cs.berkeley.edu http://http.cs.berkeley.edu/~fateman/ ==== [MESSAGE SEPARATOR] ====