Re: Types in Mathematica

*To*: mathgroup at smc.vnet.net*Subject*: [mg62697] Re: Types in Mathematica*From*: "Steven T. Hatton" <hattons at globalsymmetry.com>*Date*: Thu, 1 Dec 2005 00:46:00 -0500 (EST)*References*: <200511191053.FAA16418@smc.vnet.net> <dlp2ci$le$1@smc.vnet.net> <200511200950.EAA04496@smc.vnet.net> <dls4vp$mmc$1@smc.vnet.net> <dm1ak3$i1n$1@smc.vnet.net> <dmjrb8$5u6$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Paul Abbott wrote: > In article <dm1ak3$i1n$1 at smc.vnet.net>, > "Steven T. Hatton" <hattons at globalsymmetry.com> wrote: > >> I will concede that experience in mathematics and physics can also >> develop the kinds of thinking which programming experience can develop. > > Actually, much of the thinking involved in mathematics and physics > _transcends_ the kinds of thinking which programming experience can > develop. Extensive knowledge of mathematics and physics definitely > assists Mathematica programming, more so than in other languages because > of the high-level functionality. The "physics" or "mathematics" way of > thinking often assists implementations of algorithms in Mathematica. > This is, I think, the key point of this thread. Hmmm ... From my experience, I find some concepts in math and physics ideally amenable to certain aspects of OOP. A vector is a geometric object independent of any particular coordinate system. The Universe can be represented by "arbitrarily" choosing a "rest" system relative to which all other coordinate systems are defined. Again, the rest system can be treated as an object. Coordinate transformations can be represented as objects, as can scalar fields and other functions of multiple variables. In many ways the corespondance between how Mathematica works, and how I think about math and physics is somewhat unnatural for me in comparison to OOP. There does seem to be some degree of correspondence between OOP and pattern matching. Pattern matching also seems to have similarities with generic programming. All of these perceived similarities are currently only intuitive "hunches" which I have not refined and formalized to any extent. The big advantages Mathematica provides over C++ are flexibility, notational expressiveness and recursive programming. The latter does exist in C++ to a limited extent in template metaprogramming. I find these comments by Bjarne Stroustrup quite interesting in this context: http://www.itworld.com/AppDev/710/lw-02-stroustrup/ "Rule-based programming (see the R++ link in Resources) has a record of failures and successes on a scale that didn't lead to mainstream adoption. That's a pity, but I don't want to call it an "academic trifle." Many of the ideas we today see as standalone languages will enter the mainstream as facilities and techniques embedded in a mainstream language, such as C++. The future will see much multiparadigm programming and many multilingual systems." -- The Mathematica Wiki: http://www.mathematica-users.org/ Math for Comp Sci http://www.ifi.unizh.ch/math/bmwcs/master.html Math for the WWW: http://www.w3.org/Math/