So I want to talk today about an idea. It’s a big idea. Actually, I think it’ll eventually be seen as probably the single biggest idea that’s emerged in the past century. It’s the idea of computation. Now, of course, that idea has brought us all of the computer technology we have today and so on. But there’s actually a lot more to computation than that. It’s really a very deep, very powerful, very fundamental idea, whose effects we’ve only just begun to see.
Well, I myself have spent the past 30 years of my life working on three large projects that really try to take the idea of computation seriously. So I started off at a young age as a physicist using computers as tools. Then, I started sort of drilling down, thinking about the computations I might want to do, trying to figure out what primitives they could be built up from and how they could be automated as much as possible. Eventually, I created a whole structure based on symbolic programming and so on that let me build Mathematica. And for the past 23 years, at an increasing rate, we’ve been pouring more and more ideas and capabilities and so on into Mathematica, and I’m happy to say that’s led to many good things in R and D and education, lots of other areas. Well, I have to admit, actually, that I also had a very selfish reason for building Mathematica. I wanted to use it myself, a bit like Galileo got to use his telescope 400 years ago. But I wanted to look, not at the astronomical universe, but at the computational universe.
So we normally think of programs as being complicated things that we build for very specific purposes. But what about the space of all possible programs? Here’s a representation of a really simple program. So, if we run this program, this is what we get. Very simple. So let’s try changing the rule for this program a little bit. Now we get another result, still very simple. Try changing it again. You get something a little bit more complicated, but if we keep running this for awhile, we find out that, although the pattern we get is very intricate, it has a very regular structure. So the question is: Can anything else happen? Well, we can do a little experiment. Let’s just do a little mathematical experiment, try and find out.
Let’s just run all possible programs of the particular type that we’re looking at. They’re called cellular automata. You can see a lot of diversity in the behavior here. Most of them do very simple things. But if you look along all these different pictures, at rule number 30, you start to see something interesting going on. So let’s take a closer look at rule number 30 here. So here it is. We’re just following this very simple rule at the bottom here, but we’re getting all this amazing stuff. It’s not at all what we’re used to, and I must say that, when I first saw this, it came as a huge shock to my intuition, and, in fact, to understand it, I eventually had to create a whole new kind of science.
This science is different, more general, than the mathematics-based science that we’ve had for the past 300 or so years. You know, it’s always seemed like a big mystery how nature, seemingly so effortlessly manages to produce so much that seems to us so complex. Well, I think we’ve found its secret. It’s just sampling what’s out there in the computational universe and quite often getting things like Rule 30 or like this. And knowing that, starts to explain a lot of long-standing mysteries in science. It also brings up new issues though, like computational irreducibility. I mean, we’re used to having science let us predict things, but something like this is fundamentally irreducible. The only way to find its outcome is, effectively, just to watch it evolve. It’s connected to, what I call, the principle of computational equivalence, which tells us that even incredibly simple systems can do computations as sophisticated as anything. It doesn’t take lots of technology or biological evolution to be able to do arbitrary computation, just something that happens, naturally, all over the place. Things with rules as simple as these can do it. Well, this has deep implications about the limits of science, about predictability and controllability of things like biological processes or economies, about intelligence in the universe, about questions like free will and about creating technology.
You know, working on this science for many years, I kept wondering, “What will be its first killer app?” Well, ever since I was a kid, I’d been thinking about systematizing knowledge and somehow making it computable. People like Leibniz had wondered about that too 300 years earlier. But I’d always assumed that to make progress, I’d essentially have to replicate a whole brain. Well, now I got to thinking: This scientific paradigm of mine suggests something different. And, by the way, I’ve now got huge computation capabilities in Mathematica, and I’m a CEO with some worldly resources to do large, seemingly crazy, projects. So I decided to just try to see how much of the systematic knowledge that’s out there in the world we can make computable.
So, it’s been a big, very complex project, which I was not sure was going to work at all. But I’m happy to say that it’s actually going really well. And last year we were able to release the first website version of Wolfram Alpha. It’s purpose is to be a serious knowledge engine that computes answers to questions. So let’s give it a try. Let’s start off with something really easy. Hope for the best. Very good. Okay. So far so good. (Laughter) Let’s try something a little bit harder. Let’s say … Let’s do some mathy thing and with luck it’ll work out the answer and try and tell us some interesting things things about related math. We could ask it something about the real world. Let’s say — I don’t know — What’s the GDP of Spain? And it should be able to tell us that. Now we could compute something related to this, let’s say the GDP of Spain divided by, I don’t know, the — hmmm … let’s say the revenue of Microsoft.
The idea is that we can sort of just type this in, this kind of question in however we think of it. So let’s try asking a question, like a health related question. So let’s say we have a lab finding that — you know, we have an LDL level of 140 for a male aged 50. So let’s type that in, and now Wolfram Alpha will go and use available public health data and try to figure out what part of the population that corresponds to and so on. Or let’s try asking about, I don’t know, the international space station.
And what’s happening here is that Wolfram Alpha is not just looking up something; it’s computing, in real time, where the international space station is right now, at this moment, how fast it’s going and so on. So Wolfram Alpha knows about lots and lots of kinds of things. It’s got by now, pretty good coverage of everything you might find in a standard reference library and so on. But the goal is to go much further and, very broadly, to democratize all of this kind of knowledge, and to try and be an authoritative source in all areas, to be able to compute answers to specific questions that people have, not by searching what other people may have written down before, but by using built in knowledge to compute fresh new answers to specific question.
Now, of course, Wolfram Alpha is a monumentally huge, long term project with lots and lots of challenges. For a start, one has to curate a zillion different sources of facts and data, and we built quite a pipeline of Mathematica automation and human domain experts for doing this. But that’s just the beginning. Given raw facts or data to actually answer questions, one has to compute, one has to implement all those methods and models and algorithms and so on that science and other areas have built up over the centuries. Well, even starting from Mathematica, this is still a huge amount of work. So far, there are about 8 million lines of Mathematica code in Wolfram Alpha built by experts from many, many different fields.
Well, a crucial idea of Wolfram Alpha is that you can just ask it questions using ordinary human language, which means that we’ve got to be able to take all those strange utterances that people type into the input field and understand them. And I must say that I thought that step might just be plain impossible. Two big things happened. First, a bunch of new ideas about linguistics that came from studying the computational universe. And second, the realization that having actual computable knowledge completely changes how one can set about understanding language. And, of course, now with Wolfram Alpha actually out in the wild, we can learn from its actual usage. And, in fact, there’s been an interesting coevolution that’s been going on between Wolfram Alpha and its human users. And it’s really encouraging. Right now, if we look at web queries, more than 80 percent of them get handled successfully the first time. And if you look at things like the iPhone app, the fraction is considerably larger. So, I’m pretty pleased with it all.
But, in many ways, we’re still at the very beginning with Wolfram Alpha. I mean, everything is scaling up very nicely. We’re getting more confident. You can expect to see Wolfram Alpha technology showing up in more and more places, working both with this kind of public data, like on the website, and with private knowledge for people and companies and so on. You know, I’ve realized that Wolfram Alpha actually gives one a sort of whole new kind of computing that one can call knowledge-based computing, in which one’s starting, not just from raw computation, but from a vast amount of built-in knowledge. And when one does that, one really changes the economics of delivering computational things, whether it’s on the web or elsewhere.
You know, we have a fairly interesting situation right now. On the one hand, we have Mathematica, with its sort of precise, formal language and a huge network of carefully designed capabilities able to get a lot done in just a few lines. Let me show you a couple of examples here. So here’s a trivial piece of Mathematica programming. Here’s something where we’re sort of integrating a bunch of different capabilities here. Here we’ll just create in this line a little user interface that allows us to do something fun there. If you go on, that’s a slightly more complicated program that’s now doing all sorts of algorithmic things and creating user interface and so on. But it’s something that’s very precise stuff. It’s a precise specification with a precise formal language that causes Mathematica to know what to do here.
Well, then on the other hand, we have Wolfram Alpha, with all the sort of messiness of the world and human language and so on built into it. So what happens when you put these things together? I think it’s actually rather wonderful. With Wolfram Alpha inside Mathematica, you can, for example, make precise programs that call on real-world data. Here’s a really simple example. You can also just sort of give vague input and then try and have Wolfram Alpha figure out what you’re talking about. Let’s try this here. But actually I think sort of the most exciting thing about this is that it really gives one the chance to democratize programming. I mean, anyone will be able to just sort of say what they want in plain language, then, the idea is, that Wolfram Alpha will be able to figure out what precise pieces of code can do what they’re asking for and then show them examples that will let them pick what they need to build up bigger and bigger, precise programs. So, sometimes, Wolfram Alpha will be able to do the whole thing immediately and just give back a whole big program that you can then compute with. So here’s a big website where we’ve been collecting lots of educational and other demonstrations about lots of kinds of things. So, I don’t know, I’ll show you one example, maybe here. This is just an example of one of these computable documents. This is probably a fairly small piece of Mathematica code that’s able to be run here.
Okay. Let’s zoom out again. So, given our new kind of science, is there a general way to use it to make technology? So, with physical materials, we’re used to kind of going around the world and discovering that particular materials are useful for particular technological purposes and so on. Well, it turns out, we can do very much the same kind of thing in the computational universe. There’s an inexhaustible supply of programs out there. The challenge is to see how to harness them for human purposes. Something like Rule 30, for example, turns out to be a really good randomness generator. Other simple programs are good models for processes in the natural or social world. And, for example, Wolfram Alpha and Mathematica are actually now full of algorithms that we discovered by searching the computational universe. And, for example, this — we go back here — This has become surprisingly popular among composers finding musical forms by searching the computational universe. In a sense, we can use the computational universe to get mass customized creativity. I’m hoping we can, for example, use that even to get Wolfram Alpha to routinely sort of do invention and discovery on the fly and to find all sorts of wonderful stuff that no engineer and no process of incremental evolution would ever come up with.
Well, so, that leads to sort of an ultimate question. Could it be that someplace out there in the computational universe we might find our physical universe? Perhaps there’s even some quite simple rule, some simple program for our universe. Well, the history of physics would have us believe that the rule for the universe must be pretty complicated. But in the computational universe we’ve now seen how rules that are incredibly simple can produce incredibly rich and complex behavior. So could that be what’s going on with our whole universe? If the rules for the universe are simple, it’s kind of inevitable that they have to be very abstract and very low level, operating, for example, far below the level of space or time, which makes it hard to represent things. But in at least a large class of cases, one can think of the universe as being like some kind of network, which, when it gets big enough, behaves like continuous space in much the same way as having lots of molecules can behave like a continuous fluid. Well, then the universe has to evolve by applying little rules that progressively update this network. And each possible rule, in a sense, corresponds to a candidate universe.
Actually, I haven’t shown these before, but here are a few of the candidate universes that I’ve looked at. Some of these are hopeless universes, completely sterile, with other kinds of pathologies like no notion of space, no notion of time, no matter, other problems like that. But the exciting thing that I’ve found in the last few years is that you actually don’t have to go very far in the computational universe before you start finding candidate universes that aren’t obviously not our universe. Here’s the problem: Any serious candidate for our universe, is inevitably full of computational irreducibility, which means that it is irreducibly difficult to find out how it will really behave, and whether it matches our physical universe. A few years ago, I was pretty excited to discover that there are candidate universes with incredibly simple rules that successfully reproduce special relativity and even general relativity and gravitation and at least give hints of quantum mechanics. So, will we find the whole of physics? I don’t know for sure. But I think at this point it’s sort of almost embarrassing not to at least try.
Not an easy project. One has got to build a lot of technology. One’s got to build a structure that’s probably at least as deep as existing physics. And I’m not sure what the best way to organize the whole thing is. Build a team, open it up, offer prizes and so on. But I’ll tell you here today that I’m committed to seeing this project done, to see if, within this decade, we can finally hold in our hands the rule for our universe and know where our universe lies in the space of all possible universes — and be able to type into Wolfram Alpha “the theory of the universe,” and have it tell us.
So I’ve been working on the idea of computation now for more than 30 years, building tools and methods and turning sort of intellectual ideas into millions of lines of code and grist for server farms and so on. With every passing year, I realize how much more powerful the idea of computation really is. It’s taken us a long way already, but there’s so much more to come. From the foundations of science to the limits of technology to the very definition of the human condition, I think computation is destined to be the defining idea of our future.
Chris Anderson: That was astonishing. Stay here. I’ve got a question.
So, that was, fair to say, an astonishing talk. Are you able to say in a sentence or two how this type of thinking could integrate at some point to things like string theory or the kind of things that people think of as the fundamental explanations of the universe?
Stephen Wolfram: Well, the parts of physics that we kind of know to be true, things like the standard model of physics. What I’m trying to do better reproduce the standard model of physics or it’s simply wrong. The things that people have tried to do in the last 25 years or so with string theory and so on have been an interesting exploration that has tried to get back to the standard model, but hasn’t quite gotten there. My guess is that some great simplifications of what I’m doing may actually have considerable resonance with what’s been done in string theory, but that’s a complicated math thing that I don’t yet know how it’s going to work out.
CA: Benoit Mandlebrot is in the audience. He has also shown how complexity can arise from a simple start. Does your work relate to his?
SW: I think so. I view Benoit Mandlebrot’s work as kind of one of the founding contributions to this kind of area. Benoit has been particularly interested in nested patterns, in fractals and so on, where the structure is something that’s kind of tree-like, and where there’s sort of a big branch that makes little branches, and even smaller branches and so on. That’s kind of one of the ways that you get towards true complexity. I think things like the Rule 30 cellular automaton get us to a different level. In fact, in a very precise way they get us to a different level because they seem to be things that are capable of complexity that’s sort of as great as complexity can ever get …
I could go on about this at great length, but I won’t.
CA: Stephen Wolfram, thank you.
Stumble it! Bookmark it! Digg it! Menéame! Fresqui Suscribe Suscribe