May 14, 2009 marks the 7th anniversary of the publication of A New Kind of Science, and it has been my tradition on these anniversaries to write a short report on the progress of NKS.
It has been fascinating over the past few years to watch the progressive absorption of NKS methods and the NKS paradigm into countless different fields. Sometimes there’s visible mention of NKS, though often there is not.
There has been an inexorable growth in the use of the types of models pioneered in NKS. There has been steadily increasing use of the kinds of computational experiments and investigations introduced in NKS. And the NKS way of thinking about computation and in terms of computation has become steadily more widespread.
Many of the specific investigations made in the NKS book have now been extended and enhanced. And even the results on fundamental physics in the NKS book are now coming closer to the mainstream.
The trickle of academic work aimed directly at pure NKS—the basic investigation of simple programs and the computational universe—has turned into a stream, though tremendous opportunity for growth remains.
And I continue to find it remarkable how many thought leaders that I run across in incredibly diverse areas turn out to have read the NKS book, often in great detail.
In June we’ll be holding our 7th NKS Summer School (this year in Italy—the first time outside the United States). Every year we receive a progressively larger number of highly qualified applications, and this year will be our largest Summer School to date.
But for me the biggest thing that’s happened this year is the emergence of Wolfram|Alpha.
When I was writing the NKS book I kept on wondering what the first “killer app” (to use a phrase from the software industry) for NKS would be.
I tried to think back what one would have imagined in 1936, when the idea of universal computing was introduced. Could one have predicted what the first killer apps for computers would be?
As it was, first there were databases—which drove the mainframe computer industry, and later there were word processors—which drove the personal computer industry.
Despite their tremendous practical importance, databases and word processors are really quite prosaic applications of an idea as powerful as universal computation.
And both of these applications could probably have been done even without the full concept of universal computation.
But the point is that the paradigm of universal computation was crucial in even imagining that either of these applications would make sense.
And so it is now with NKS and Wolfram|Alpha.
Wolfram|Alpha is, I believe, going to be the first killer app of NKS.
And remarkable though Wolfram|Alpha is, it is at some level still prosaic relative to the full power of the ideas in NKS.
Yet without the NKS paradigm, I cannot imagine I would ever have thought that Wolfram|Alpha could make sense.
There is an immensely complex web of systematizable knowledge out there in the world. And before NKS, I would have assumed that to handle something of this complexity would have required building a system that is somehow correspondingly complex—and in practice completely out of reach.
But from NKS we have learned that even highly complex things can have their origins in simple rules and simple programs.
And this is what inspired me to believe that building Wolfram|Alpha might be possible.
As a practical matter, many algorithms in Wolfram|Alpha were found by NKS methods—by searching the computational universe for programs that achieve particular purposes.
And there is a curious sense in which the discoveries of NKS about computational irreducibility are what make Wolfram|Alpha possible.
For one of the crucial features of Wolfram|Alpha is its ability to take free-form linguistic input, and to map it onto its precise symbolic representations of computations.
Yet if these computations could be of any form whatsoever, it would be very difficult to recognize the linguistic inputs that represent them.
But from NKS we know that computations fall into two classes: computationally reducible and computationally irreducible.
NKS shows that in the abstract space of all possible computations the computationally irreducible are much the most common.
But here is the crucial point: because those computations are not part of what we have historically studied or discussed, no systematic tradition of human language exists to describe them.
So when we use natural human language as input to Wolfram|Alpha, we are inevitably going to be describing that thin set of computations that have long linguistic traditions, and are computationally reducible.
Those computations cover the traditional sciences. But in a sense it is the very ubiquity of computational irreducibility that forces there to be only small islands of computational reducibility—which can readily be identified even from quite vague linguistic input.
If one looks at Wolfram|Alpha today, much of what it computes is firmly based on OKS (the “Old Kind of Science”), and in this sense Wolfram|Alpha can be viewed as a shining example of what can be achieved with pre-NKS mathematical science.
And curiously, after all these years, it is also perhaps the first clear consumerized example of universal computation at work. For now, for the first time, anyone will be able to walk up to a computer and immediately see just how diverse a range of possible computations it can do.
So what about NKS? NKS is certainly crucial to the very conceptualization of Wolfram|Alpha.
And even today one can use Wolfram|Alpha to do a little NKS: one can type in “rule 30”, or ask about other NKS systems that can readily be specified in linguistic terms.
But in the future there is tremendous opportunity to do more with NKS in Wolfram|Alpha.
Today, Wolfram|Alpha uses existing models from science and other areas, then does computations based on these models.
But what if it could find new models? What if it could invent on the fly? Do science on the fly?
That is precisely what NKS suggests should be possible. Exploring the computational universe on request, and finding things out there that are useful for some particular specified purpose.
We started a small experiment a few years ago with WolframTones where we use NKS to invent new musical tunes. But there is vastly more that can be done—directing with ordinary language, but discovering automatically with NKS.
Whether today’s computers are fast enough to do this well I do not know. But perhaps by next year, Wolfram|Alpha will not only be a killer app made possible by NKS—it will also provide an outlet for the full richness of the computational universe that has been revealed to us by NKS.
But for now: tomorrow (May 15) is the day we begin to make Wolfram|Alpha live—the first killer app of NKS.
(See the Wolfram|Alpha Blog to follow the launch.)