Re: Language vs. Library why it matters / Turing
- To: mathgroup at smc.vnet.net
- Subject: [mg61427] Re: Language vs. Library why it matters / Turing
- From: "Steven T. Hatton" <hattons at globalsymmetry.com>
- Date: Wed, 19 Oct 2005 02:16:06 -0400 (EDT)
- References: <dipr57$hfl$1@smc.vnet.net> <dj2770$bif$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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