MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Language vs. Library why it matters / Turing

  • To: mathgroup at
  • Subject: [mg61427] Re: Language vs. Library why it matters / Turing
  • From: "Steven T. Hatton" <hattons at>
  • Date: Wed, 19 Oct 2005 02:16:06 -0400 (EDT)
  • References: <dipr57$hfl$> <dj2770$bif$>
  • Sender: owner-wri-mathgroup at

Richard Fateman wrote:

> I think you miss the point of Turing computability in reference
> to programming languages.
> 1. Yes, most programming languages are "Turing equivalent" if they
> are permitted unlimited memory. This does not imply that all programming
> languages are equally mysterious.  Mathematica is unusual in being
> complex, secret, and non-deterministic. 

I'm not sure Mathematica /is/ complex at the core.  AAMOF, I believe the
complexity that we see is due to a fundamental simplicity at the core.  As
for secrecy, I believe we are told petty much how it works if we read
carefully. I do believe the language could be more formally codified, and
that might add to its learnability.  Regarding its being non-deterministic,
I'm not sure what you intend here.  I was quite surprized to learn that C++
is formally specified to be non-deterministic.  AFAIK, that results from an
intentional omission of specific requirements for the order in which actual
parameters are evaluated in function calls.  I do not believe the same
applies to Mathematica.

> These are each, in my view, 
> significant detractions from the language and why I would not
> suggest that it be used for (say) a first course in programming.

I believe part of the problem with the language is that it is presented in
the context of the whole Mathematica computing environment.  That tends to
obscure the exposition of language itself.  Mathematica stands firmly in
the Lisp tradition of computing as opposed to the C or Simula traditions.

> 2. Actually, the relevant mathematical model is not that of a
> Turing machines (which REQUIRES potentially infinite memory), but
> that of a finite state machine.  A computer with N bits of memory
> has 2^N states, and if it ever returns to one of those states it
> is in an infinite loop.  To see if it halts, you do not have to
> run for more than 2^N instructions.  This, of course, could take a
> very very very long time, but the mathematics of this is pretty
> straightforward.

I tried to determine to what your were responding in the above, but I was
unable to identify it by reading what you had quoted.  IMO, models such as
FSA or the Turing Machine are overly abstract for the purpose of
categorizing Mathematica.  I'm more inclined to view Mathematica as a
recursive pre-compiler.  It really operates a lot like a person doing math
operates.  It starts with an expression, and it follows established rules
for rewriting the expression until it gets a form for which there is no
transformation which would produce a more specific form of the expression
resulting from the previous transformation.  In doing this, it continually
traverses expression trees in a deterministic order.

"Philosophy is written in this grand book, The Universe. ... But the book
cannot be understood unless one first learns to comprehend the language...
in which it is written. It is written in the language of mathematics, ...;
without which wanders about in a dark labyrinth."   The Lion of Gaul

  • Prev by Date: Re: Re: problem solving polynomial equations
  • Next by Date: Re: Re: How smooth graphs?
  • Previous by thread: Re: Language vs. Library why it matters / Turing
  • Next by thread: Re: Language vs. Library why it matters / Turing