ACEnetica

Discussion about the use of self-organisation for automatically "programming" networks of processing nodes.

Saturday, September 24, 2005

Mathematica

On www.wolfram.com/products/mathematica it says Mathematica is "The Way the World Calculates". That is sales blurb so I'll allow them a little exaggeration.

It then goes on to say:

"From simple calculator operations to large-scale programming and interactive-document preparation, Mathematica is the tool of choice at the frontiers of scientific research, in engineering analysis and modeling, in technical education from high school to graduate school, and wherever quantitative methods are used."

That is is bit more restrained, and I imagine it is not too far from the truth.

I have been a long-time user of Mathematica since version 1 was released in 1988, and prior to that circa 1980 (when I was doing my PhD on QCD) I used SMP which was the direct ancestor of Mathematica. I cannot exaggerate how much Mathematica has influenced me. It was immediately clear right from version 1 that here was something really new and potentially useful. I say "potentially" because for many years (and versions) I was tantalised by what Mathematica could do in principle, but I was disappointed by its slow compute speed which was a relic of its roots in symbolic algebra. All of these problems have now gone away, and Mathematica is my main tool for technical computing of all sorts, including computationally challenging problems such as image processing. I can do everything I want within one environment, so my "laboratory notebook" is now a hyperlinked web of notebooks containing elements such as text, graphics, maths, software, etc. Apart from idle jottings and scribbles, I have not kept a paper notebook since around 2000. There are no artificial boundaries between the different types of element in Mathematica notebooks which gives me an enormous efficiency advantage over people who don't use Mathematica.

I no longer think of Mathematica as a computer language. It is actually a notation that extends standard mathematical notation into the world of algorithms. Loosely speaking, equations and algorithms are now the same thing for me, because Mathematica is what "breathes the fire into the equations".

I might sound as if I am evangelising about Mathematica, but I am not. I have heard people complain about its price, but that is false economy. It currently costs around £1,600 for a commercial license, much cheaper for teachers, and extremely cheap for students. Based on its productivity and the amount of time you save it pays for itself very quickly.

However, there is a downside. The learning curve for Mathematica is long, especially for people who have used only procedural programming languages (e.g. Fortran, Basic, C++, Matlab, etc) because you have to make a mental shift to the functional programming style. However, these problems are alleviated by the extremely logical and unified structure of Mathematica.

There is another downside that I do find irritating. You need a full Mathematica installation on any computer on which you want to run software that you have written using Mathematica. This means that it is much more difficult to get non-Mathematica users to pay attention to what you are doing than it would otherwise be. Currently it is not possible for you to wrap your software in a standalone EXE. There are various translators that will convert Mathematica to other languages, but they impose strong constraints on what Mathematica constructs you are allowed to use; I have found them to be useless for serious work.

There is a Mathematica newsgroup at comp.soft-sys.math.mathematica where world experts hang out to solve your every Mathematica problem.

I intend to use Mathematica for any code that I might publish in this blog. I will try to ensure that the code can be read as pseudocode by non-Mathematica users, though I will be programming functionally rather than dysfunctionally.

Tag:

0 Comments:

Post a Comment

<< Home