On 5/27/2013 1:21 AM, John Doty wrote: > On Sunday, May 26, 2013 2:38:23 AM UTC-6, Richard Fateman wrote: > >> As has been pointed out in the past, Mathematica has numerous >> disadvantages for use in computer science. > > By "computer science" you seem to mean "the ideology of my academic clique". I suppose each academic clique (as you say) has its own ideology. Perhaps yours is mathematics or physics. Suppose that I wrote a text book that purported to "do all of mathematics" but defined zero as a fuzz-ball (oops, Mathematica already does that).. etc etc.
> A real computer science education would expose the student to a wide > variety of models of computation.
Learning Mathematica (only) exposes a student to a singularly erroneous model of computation, compatible with ordinary consistent computing in a few areas (like integer arithmetic, small precision floats, sometimes)
> Mathematica's model is both eccentric and very productive,
Nice that you concede it is eccentric. Productive perhaps if you do not encounter a quirk. Especially a hidden quirk that gives the wrong answer but no warning. And if you are not in a hurry for numerical results.
> so in that sense it's a good candidate for an educational tool in computer science.
Educational in the sense of showing a computer science student studying compilers and programming languages a design gone wrong. Harmful if it is used as an example of how to design an algorithmic language. Probably OK in its sub-language for specifying graphics.
> >> For example, it >> misconstrues common terms like List. > > "List" is a perfectly good English word, with multiple meanings.
So are Group, Ring, Field, Set, Union. In fact, most technical terms in mathematics are common words with multiple meanings in some natural language (often English, but sometimes French, e.g. clique)
> Lisp lists have strange properties and historical baggage that grocery lists lack,
>so an English major might object that it's *you* who are abusing the word.
>Mathematica's List expressions are suitable for a pattern replacement
>system that repeatedly evaluates by default.
I do not see any connection here. It is possible to write a linked list in Mathematica and still use its evaluation. e.g. consider using node[element,RestOfList]. Instead of [A,B,C] use node[A,node[B,node[C,Nil]]]. A node here is like a lisp "cons" cell. In fact there are other computer algebra systems written in lisp that use lisp lists and have similar evaluation strategies to Mathematica.
> > If you don't like Mathematica's lists, I suppose you really must hate Haskell's ;-) > >> Its algorithms are secret.
As compared to the algorithms in alternative programs, some of which are described in detail, and perhaps even shown in open source.
> > I think it highly probable that the processor you're using to read this is of secret,
> proprietary design. Even if it's "open hardware" (unlikely), it's almost certainly
>implemented in silicon using a secret, proprietary process. You're a "black box"
> user just like the rest of us. In every case, you have to decide when to go past
>an interface for more insight, and when the implementation details are unimportant. >
The processor I'm using may of course have non-deterministic aspects. Indeed it might be struck by a cosmic ray and do something bizarre. However, its expected behavior is described in sufficient detail that Intel and AMD chips can be claimed to be, at some level indistinguishable.
>> >> Its arithmetic is unique.
Perhaps I should have said "unique and discredited by the academic clique that goes by the name Numerical Analysis." > > Another advantage. Do you really believe that there's a single model of
> computer arithmetic that suits all purposes?
I cannot say what "all purposes" might encompass. For example, a fraudulent accountant might want something "special".
I will say that for scientific computing it is probably a bad feature to have finite numbers x such that x ==0 and x+1 == x.