January 1, 1993
How did SMP influence Mathematica?
One of the ideas I had in SMP was, “Figure out a good programming paradigm and just stick to it”. This was a mistake. I think it’s not a trivial mistake. You might think, “If there is a natural way to specify how programs should work, that maybe hooks into some way that has to do with how the brain processes ideas about things, then you should just figure out that way and stick to it”. But it turns out that while there are some kinds of programs that can be written very nicely using this [transformation rule] paradigm, there are others that are horrendous to write using it, but that are straightforward to write using, say, procedural programming or functional programming…
What I decided to do in building Mathematica, and have been very happy with, is to admit that there is going to be more than one paradigm for writing programs. Then the trick is to put in those paradigms in such a way that the edges fit together properly, so that you can move easily from one paradigm to another. So you can have pure functions and have them interact with transformation rules and interactive procedural programming and so on, and have a fairly seamless interface.