Date: May 28, 2013 3:49 AM Author: Richard Fateman Subject: Re: Warsaw Univ. course, was Re: Work on Basic Mathematica Stephen! 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.

RJF

>