When this conference was first being put together, people thought it would be good to have someone talk about general issues of mathematical notation. And there was an obvious candidate speaker--a certain Florian Cajori--author of a classic book entitled A History of Mathematical Notation. But upon investigation, it turned out that there was a logistical problem in inviting the esteemed Dr. Cajori--he has been dead for no less than seventy years.
So I guess I'm the substitute.
And I think there weren't too many other possible choices. Because it turns out that so far as we could all tell, there's almost nobody who's alive today who's really thought that much about basic issues regarding mathematical notation.
In the past, the times these things have ever been thought about, even a bit, have mostly coincided with various efforts to systematize mathematics. So Leibniz and other people were interested in these things in the mid-1600s. Babbage wrote one of his rather ponderous polemics on the subject in 1821. And at the end of the 1800s and the beginning of the 1900s, when abstract algebra and mathematical logic were really getting going, there was another burst of interest and activity. But after that, pretty much nothing.
But in a sense it's not surprising that I've been interested in this stuff. Because with Mathematica, one of my big goals has been to take another big step in what one can think of as the systematization of mathematics. And I guess in general my goal with Mathematica was somehow to take the general power of computation and harness it for all kinds of technical and mathematical work. There are really two parts to that: how the computation inside works, and how people get to direct that computation to do what they want.
One of the big achievements of Mathematica, as probably most of you know, was to figure out a very general way to have the computations inside work and also be practical--based on just doing transformations on symbolic expressions, with the symbolic expressions representing data or programs or graphics or documents or formulas or whatever.
But just being able to do computations isn't enough; one also has to have a way for people to tell Mathematica what computations they want done. And basically the way that people seem to communicate anything sophisticated that they want to communicate is by using some kind of language.
Normally, languages arise through some sort of gradual historical process of consensus. But computer languages have historically been different. The good ones tend to get invented pretty much all at once, normally by just one person.
So what's really involved in doing that?
Well, at least the way I thought about it for Mathematica was this: I tried to think of all the possible computations that people might want to do, and then I tried to see what chunks of computational work came up over and over again. And then essentially I gave names to those chunks, and we implemented the chunks as the built-in functions of Mathematica.
In a sense, we were leveraging on English in a crucial way in doing this because the names we used for those chunks were based on ordinary English words. And that meant that just by knowing English, one could get at least somewhere in understanding something written in Mathematica.
But of course the Mathematica language isn't English--it's a tremendously stylized fragment of English, optimized for explaining computations to Mathematica.
One might think that perhaps it might be nice if one could just talk full English to Mathematica. After all, we already know English so we wouldn't have to learn anything new to talk to Mathematica.
But I think there are some good reasons why we're better off thinking at a basic level in Mathematica than in English when we think about the kinds of computations that Mathematica does.
But quite independent of this we all know that having computers understand full natural language has turned out to be very hard.
OK, so what about mathematical notation?
Since most of the people who use Mathematica already know at least some mathematical notation, it seems like it would be really convenient if we could just have Mathematica understand ordinary familiar mathematical notation.
But one might have thought that that just wouldn't work at all. Because one might have thought that one would run into something like what one runs into with ordinary human natural language.
But here's the surprising fact--that certainly surprised me a lot. Unlike with ordinary human natural language, it is actually possible to take a very close approximation to familiar mathematical notation, and have a computer systematically understand it. That's one of the big things that we did about five years ago in the third version of Mathematica. And at least a little of what we learned from doing that actually made its way into the specification of MathML.
What I want to talk about here today is some of the general principles that I've noticed in mathematical notation, and what those mean now and in the future.
This isn't really a problem about mathematics. It's really more a problem in linguistics. It's not about what mathematical notation could conceivably be like; it's about what mathematical notation as it's actually used is actually like--as it's emerged from history and presumably from the constraints of human cognition and so on.
And, in fact, I think mathematical notation is a pretty interesting example for the field of linguistics.
You see, what's mostly been studied in linguistics has actually been spoken languages. Even things like punctuation marks have barely been looked at. And as so far as I know, no serious linguistic study of mathematical notation has been made at all in the past.
Normally in linguistics there are several big directions that one can take. One can see how languages evolved historically. One can see what happens when individual people learn to speak languages. And one can try to make empirical models of the structures that languages end up having.