For nearly a quarter of a century, one of the responsibilities that I’ve taken most seriously is the shepherding of the design of Mathematica. Partly that has involved establishing foundational principles, and maintaining unity and consistency across the system. But at some point all the capabilities of Mathematica must get expressed in the individual built-in functions—like Table or NestList—that ultimately make up the system.
Each one of those functions encapsulates some piece of repeated computational work—often implemented by some deep tower of algorithms. And each one of those now 3000 or so functions requires a name.
We’re currently in the closing weeks of a (spectacular!) new version of Mathematica, and I spent part of last week doing final design reviews for some fascinating new areas of the system. And as part of those design reviews, we were confirming and tweaking some of the names we’re going to use for new functions.
The naming of functions is a strange and difficult art—a bit like an ultimately abstracted form of poetry. The goal is to take the concept and functionality of a function, and capture the essence of it in one, or two, or perhaps three, words (like Riffle, or DeleteCases, or FixedPointList)—chosen so that when someone sees those words, they immediately get the right idea about the function. In even the most succinct forms of ordinary poetry, you get at least a handful of words to communicate with. In function names, you typically get at most perhaps three.
Last week I gave a talk at the 2010 Emerging Technologies conference at MIT. I talked about many of my favorite topics, but with a particular orientation toward the future of the technology industry.
Here’s a transcript of the talk:
The Emerging Computation Revolution
When we look back on the history of technology, I think we’ll see that the greatest revolution of the 20th century was the arrival of the concept of computation.
And in these years today, I think we’re seeing something else happen: the emergence of a second set of revolutions made possible by the concept of computation.
And it’s those revolutions that I want to talk about here today.
Now, needless to say, I’m quite involved in these. And for me it’s really been about a 30-year journey getting to the point we’re at today—slowly understanding what’s possible.
Well, behind me here I have one of the fruits of that—Wolfram|Alpha.
And I want to talk about that, and about the idea of knowledge-based computing that it’s making possible.
There’s a lot of knowledge in the world. A lot of data that’s been systematically collected. A lot of methods, models, algorithms, expertise that have been built up.
And ever since I was a kid I’ve wondered whether we could somehow make all of this computable. Whether we could somehow build something that’s a bit like those old science fiction computers.
So that we could just walk up to a machine, and immediately be able to answer any question that can be answered on the basis of the knowledge that our civilization has accumulated.
It’s an ambitious goal. And when I first thought about this nearly 40 years ago, it seemed very far off.
But every decade or so since then I’ve returned to this. And finally, earlier this past decade, I started to think that perhaps it wasn’t crazy to actually try to build something like this.
There were several things that made that possible.