Re: Mathematica is NOT a functional language
- To: mathgroup at smc.vnet.net
- Subject: [mg37681] Re: Mathematica is NOT a functional language
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Fri, 8 Nov 2002 02:15:47 -0500 (EST)
- Organization: Universitaet Leipzig
- References: <aqdkjd$vm$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
- Sender: owner-wri-mathgroup at wolfram.com
Hi, Mathematica allow many programming concepts. Because it should be used by as many persons as possible and all these persons should pay for a Mathematica license. It is not a good idea for a commercial product to force the customers to learn functional/logic programming if these cutsomers have 10--20 years of programming experience with FORTRAN 77 (as the most physicist have). Deep in it's internal structure Mathematica is a functional/logic language and a functional logic language uses functions, patterns and transformation rules *and* it is optimzed to do this. If someone like it, he can use Do[], For[] and Goto[] as in a FORTRAN program. This will not make Mathematica to a imperativ/procedural language. OOP is developed for simulations and graphical user interfaces where the objects *must* have its own life like a window on screen or a car in a traffic simulation. This concept is very clear realized in Objective C or Eiffel. Every programming languagage has its own taste and flavor. The taste and flavor of Mathematica is functional/logic and if someone can't exist without the object oriented flavor he should stay away from Mathematica. I don't like to to see that my beloved programming language is raped by OOP-idiots. Regards Jens Orestis Vantzos wrote: > > [I know what you're thinking; this guy is nuts!] > Anyway, Jens keeps attacking the whole OOP-Mathematica idea based on > the single premise that 'This is a Functional Language'. He even does > it in a rather abrupt manner, which I do not appreciate. > > Well guess what; Mathematica is NOT a functional language. It can > definitely be used like one.But... > > a) Wolfram in the Mathematica Book seems to suggest that Mathematica > is primarily a rules-based language...in A new kind of Science this > assumption is even stronger. > > b) Symbols and rules are the fundamentals of Mathematica. > Symbols have UpValues and DownValues (and OwnValues,etc. but let's > keep it simple). > It is true that an evaluation of the expression s_Symbol[args___] can > be thought of as 'the function s is applied to the subexpression > Sequence[args]'. > > This is ONLY a metaphor!!! > > What really happens is that the symbol s is called upon to apply its > transformation rules stored under DownValues on the expression. This > is the ONLY objective description of the process. Everything else is > an assumption on part of the programmer. > > Moreover, UpValues completely throw the functional metaphor out the > window: > in this case s_Symbol[x_Symbol,rest___] is transformed not according > to the 'function' s but according to the UpValues of 'argument' x !! > > So Jens, LISP is a functional language, since its fundamental > structures are function-based. Mathematica is just a darn good > simulation of a functional language. So good, that we have learned to > ignore that it is only a facade. > > People like me are trying to build a different interpretation of what > all these symbols and rules are doing (or can be persuaded to do) > inside Mathematica. You look at symbols and see functions; I look and see > objects. An OOP package will only be a 'simulation', since Mathematica > is not inherently OO, but I repeat that all the talk about functional > programming in Mathematica is no better in any way. > > Rules and symbols are real; the rest is a mindgame. > > Regards, > Orestis Vantzos