Stephen Wolfram: “Implementing calculations everywhere”
Translation of a report by Stephen Wolfram, read them at the festival SXSW 2014. The original text can be found here .
Two weeks ago, I gave a speech at the SXSW conference in Austin, Texas.This article is a slightly refined thesis of the report (this is a synopsis of the text, including demonstrations, which had to be abandoned during the presentation) : ')
So, quite a lot has been planned for this hour.
In general, I would like to tell a story that has happened to me over the past 40 years, which is beginning to bring amazing results just now. I mean, we can practically observe these results today. I would like to present for the first time to you the whole range of technologies, which is a rather significant result of these forty years of work. And I think this is quite important.
I always liked to present live programs. But today I'm going to risk more than usual and demonstrate many things that are still at the testing stage. I hope that at least most of them work.
So, the main task is to start taking calculations seriously. Understand the idea of computing as such, and then create a technology that will allow you to implement them everywhere — after which you will see what this will lead to.
You could say I was chasing this idea for 40 years. I have been balancing for a long time at the junction of science and technology - I create more and more large-scale building blocks and build an ever higher tower from them. And every few years I manage to see where it will grow further. In my opinion, it turns out great. However, in the last few years something amazing happened - a kind of great unification, which leads to the technological Cambrian explosion . And today, for the first time, I will partially present it to you.
But for a start, a little history . 40 years ago I was a 14-year-old youngster who first touched a computer (it was then the size of a table). I did not often use it as something fundamental, but I tried using it to understand some things from physics that really interested me. At that moment I discovered some important things that I have been using so far. But now I understand that the most important thing that I understood then was not about physics at all: the better the tools we use, the deeper we can dig. “Mathematics on paper” was not very good for me, and at that time it was a serious problem for those who wanted to study physics. However, I realized that calculations can be done on a computer and began to create tools for this. Very soon, with my programs, I was the best in mathematical calculations for physics.
Back in 1981 year. This year, something amazing happened for a 21-year-old scientist - I turned it all into my first product and my first company. The important thing is that it made me realize that software products can stimulate intellectual thinking. I had to figure out how to create a language for mathematical calculations on a computer, and it took me a lot to understand about calculations in order to achieve the goal. And then I again plunged into the fundamentals of science using the tools created.
In the end, I realized that while everything is good with mathematics, its fundamental concept needs to be generalized. I began to study the entire universe of all kinds of formal systems, which is essentially a universal computational universe of possible programs. I set up small experiments - as if I directed my computational telescope on parts of this universe and looked at what was there. What I saw was amazing. Below I will show you some simple programs. Some do very simple things, but there are those who, with seeming simplicity, do surprisingly complex things.
This is my favorite program, because I saw it first in this class of programs. It is called rule 30, and 30 years later it is still on the back of my business cards. ( See note 1 at the end. )
The simplest program. The simplest initial condition. But she does something crazy. It creates complex structures from nothing, which is a rather interesting phenomenon. I think it reflects the great secret of how nature works. And yes, I spent many years studying this - an incredibly interesting activity.
But in the process of studying these things, I realized that I needed more advanced tools than those that I had. And, for the most part, I created Mathematica . It is a bit ironic that the name of the program is the word “mathematics”. Because she initially thought to expand the boundaries of classical mathematics. The main super-idea is to get to the very essence of mathematics and find its computational foundation on which everything will be built. I managed to do this in the language of the Mathematica system. For many years he showed himself perfectly, and we constantly supplemented and refined it. ( See note 2 at the end. )
In fact, Mathematica last year celebrated its 25th anniversary . For 25 years, it has been used to invent, discover, and study countless things in a huge number of universities, large companies, and similar organizations around the world. I myself managed about 10 years to work with Mathematica for my own scientific research. I discovered a lot of interesting things in the field of science, technology and philosophy and wrote a book about it, which is called A New Kind of Science. ( See note 3 at the end. )
But let's go back to the past: when I was a teenager, I was really interested in one thing - the systematization of information. And it seemed to me that the day would come when a person could create a system that could automatically answer questions about almost everything. By the time I found out a lot about how to automate the process of answering questions related to mathematics. But I wanted to somehow summarize this opportunity to answer any questions. Our world needs something like universal artificial intelligence similar to the human brain. And this task already seemed very difficult.
Every 10 years or so, I come back to this idea and come to the conclusion that, yes - it is still very difficult. But while I was conducting my research, I realized something important: sometimes the execution of even a very simple program can produce structures that are similar in complexity to the human brain.
In fact, there is not much difference between brain-like intelligence and these structures. The consequences of such thinking are the dilemma between free will and predestination , as well as the search for extraterrestrial intelligence . However, such programs made me realize that in order to answer many different questions, it is not necessary to create artificial intelligence similar to the brain. Maybe enough of the usual calculations, like those that underlie the system Mathematica.
I was not sure that now is the right decade and even the right time for this, but the advantages of owning a small company allowed me to conduct an experiment. Now I am happy to state that, as it turned out, the task was not so difficult - we created Wolfram | Alpha .
You enter something there in a natural language, and the system uses all the power of the data, knowledge, methods and algorithms embedded in it to simply generate a report about what you asked. Yes, by the way, if you are using Wolfram | Alpha, you must have noticed that yesterday the web interface of Wolfram | Alpha acquired a new elegant look. Wolfram | Alpha knows a lot. Thousands of areas of knowledge and quintillons of data particles truly cover a huge area of human knowledge.
And in fact, every day many millions of people ask the system about all sorts of things, directly on the site, through mobile applications and through technologies like Siri, which also knows how to contact Wolfram | Alpha.
So, what we have: Mathematica, which has become the foundation for a language for describing and performing any technical calculations. And we also have Wolfram | Alpha, which knows everything about our world and interacts with it with the help of an extremely ambiguous natural language. Well, Mathematica has been growing for more than 25 years, and Wolfram | Alpha is only 5. We are constantly inventing new ways to expand the basic directions of these systems further and further. But now something truly global and incredible has happened. And for me personally, a completely different area has become a catalyst for this: cloud technologies.
Then it seemed to me that the Cloud does not carry something qualitatively new - I thought it was just practical. But I was wrong. Now I finally understand that this is the very detail that allows us to combine two global approaches to computing (Mathematica and Wolfram | Alpha) to make something much more global.
Now I must admit that the result of all this has considerable intellectual complexity. However, it is extremely practical. I have always liked situations where big ideas lead to truly useful innovative products, as it happens in Wolfram Research. We took one super-idea and make many (hopefully useful) products. At some level, to describe each product is quite simple, but the most exciting thing is that they present themselves together. And I would like to talk about this today. But, I will say in advance - although this story seems extremely important to me, it is not at all easy to tell.
But, the main thing is to start. At the heart of all is what we call the Wolfram Language . We are just now starting to release it. ( See note 4 at the end. )
The core of the Wolfram Language has been “grown” in Mathematica for over 25 years. There it was perfectly tested, and now we are adding there all the new ideas and technologies from Wolfram | Alpha and from the Cloud . This allows us to move to a new level of quality. I am delighted with this.
The idea is to create a knowledge-oriented language. A language that has a huge amount of knowledge about computing and about our world. The fact is that most programming languages are oriented towards basic machine operations. They provide many excellent ways to control executable code. Sometimes they have libraries for specific things.
But our idea of the Wolfram Language is exactly the opposite - to create a language in which as much of it is embedded. Where language itself can perform as much as possible. Where everything is automated as much as possible.
Ok, let's see how it works.
You can use the Wolfram language fully interactively using the laptop interface we created for Mathematica.
Ok, here everything is clear. Let's do something a little more complicated:
Yes ... it's a big number. It looks almost like a bunch of random numbers, like, say, 60 thousand points taken from some sensor.
How can we analyze them? All that may be required is already built into the Wolfram language.
So, let's say we can calculate the average value accurately and approximately:
We can calculate the asymmetry coefficient:
Or hundreds of other statistics, tests or visualizations.
This addiction looks a little weird in fact. But let me now not go into details explaining this effect.
Good. Here is something completely different. Let's allow the Wolfram language to access the account of a certain Facebook user and extract the graph of his friends :
OK, we got the graph, what's next? The Wolfram language knows how to work with graphs and networks. Let's say let's calculate its division into communities:
Let's try something different. Now we will get the image from my little camera:
So we got it. Now let's do something with it. We can simply take this image and put it in some function:
We got the image, broken into small pieces. Let's do the same interactive:
Now we will turn each of the fragments at a certain angle:
Now, let's sort them by color. We can do this way some fun application, the output of the outstanding table of fragments:
Ok, that's quite funny. Why don't we write about it on our Twitter?
OK. In fact, the thing is that the Wolfram language simply knows a lot of things. He can analyze graphs and networks. He knows how to work with images, performs the most sophisticated algorithms for their processing. The Wolfram language is also aware of the world around it. For example, we could ask him when the sun rose this morning in the place where we are:
Or the time between sunrise and sunset today:
Or we could get the current air temperature where we are now:
Or a graph of temperature vs. time over the past day:
This language is actually a very large object and based on what we did for Wolfram | Alpha, it can also answer many questions in the form of a natural language. And what is really powerful is that we can use it to designate objects in the real world.
Let's just enter “Ctrl” + “Shift” + “=” + “nyc” (the first three keys are needed just to start the free input interface):
And this design is converted to the object “New York City”. So, now we can find the temperature difference where we are in New York:
OK. Let's do something more complicated, find the countries bordering Ukraine:
Now we find the lengths of the borders of these countries:
And create a table from the data:
Or, maybe we will make a cloud of country names, and we will connect the size of each of the names with the length of the corresponding border:
Or we can find all the former republics of the USSR:
And display their flags:
Now let's find a flag of which country is closest to French:
Pretty simple, isn't it?
Or let's take the first few former Soviet republics and create maps of their capitals, on which we will mark a circle with a radius of 10 miles:
I think it's pretty amazing that you can do this kind of thing right inside a programming language, with just one line of code.
And, you know, there are a huge number of areas of knowledge built into the Wolfram language. We created all this for more than a quarter of a century.
The language has knowledge of both algorithms and the world.
There are two big principles in it . First, maximum automation - automate as much as possible. You ask what you want the language to do, and he himself figures out how to do it. There may be hundreds of algorithms for doing something in different cases. But what we want to do is a meta-algorithm that chooses the best way to do it. Thus, all that a person has to do is to define his goals, after that it’s up to the system that will strive to solve the problem in the fastest, most accurate and beautiful way.
For example, there is a Classify function that classifies data by performing the classical machine learning task. You simply type Classify and put in it a small training set of uppercase numbers (images) and values corresponding to them:
At the exit you get a classifier.
We can apply it to what we have just drawn:
Well, well, here's another important thing about the Wolfram language: it is consistency and uniformity of everything. We strive to combine everything in the language. Even though this is a huge system, if you do something with geographic data in it, we make it perfect for what you do with graphs and networks.
I spent a decent part of the last 25 years of my life creating the rigorous system design that is required to implement these concepts. It was fascinating, but it was hard work. Spending all this time trying to make things obvious, so that the language is easy to learn, memorize, and guess at some function if you don’t even know if it exists. But you know, due to the fact that all the existing building blocks of the language are so well suited to each other, we are witnessing the emergence of new powerful algorithms. And we had a great time, inventing thousands and thousands of new algorithms, which became possible only in our language, in which we have all these different areas connected to each other.
And in fact there is one really fundamental idea, thanks to which we were able to implement this kind of integration. It lies in the fact that the Wolfram language has a main fundamental feature - it is a symbolic language. If you simply type x in the language, it will not give an error that x is not defined. x is just something, the symbol x is what the language can work with. Of course, this is very good for math.
Ok, talking about embedding, let me mention one more part of our technology stack. It is believed that Wolfram Language describes the world. The same applies to the description of devices, machines, and so on.
In this regard, it is very convenient that we have a product that can work with our Mathematica system, which is called SystemModeler and performs large-scale system modeling and simulation.
Now it also integrates into the Wolfram Language.
So, let's say, here is the rectifier circuit:
And that's all it takes to model this device.
And display the parameters of this model:
And there is one more thing. We create the functionality to use the natural language understanding abilities we have created for Wolfram | Alpha, and we make them customizable. Now it is of course important for those who are processing requests to databases or device management. It will also be interesting for those who interact with models. Let's say, look at the car that works on the street and be able to get a lot of information about it on request to the mobile application about it, and then run a simulation of its work in the Cloud.
There are many possibilities. But well, how can people use them? Over the next few weeks a sandbox will be open on the Internet for those who want to try the Wolfram Language. We have a gallery of examples that gives a first presentation and serves as a good start.
Also, over 100,000 ready-made examples of interesting codes are available for you, which are in the Wolfram Language documentation .
Wolfram Programming Cloud will also be out very soon. It will be completely free to start working in it and implement the simplest ready-made applications.
So what does this mean?
I think it's pretty exciting. Because I think that we actually changed our approach, moved from algorithmic ideas to the implementation of finished products. If you pass by our exhibition taking place during the festival, you will see how we program live. And it is quite possible, we can even create small products on the spot for those who wish. But I believe that our Programming Cloud will lead to an increase in algorithmic startups. It will be really interesting to see what happens.
Another thing that I think will change: learning programming. I believe that the Wolfram Language is exceptionally good for education. Because it is a language in which you can do real things surprisingly easily. You can see the calculations in practice in various areas and observe their power. And, by the way, without much effort you can get acquainted with a bunch of modern ideas from the field of modern computing equipment and technology ... and all this in close connection with the real world.
The ability to use natural language makes it easy to get started. For serious programmers , I believe, possessing the possibilities of programming in natural language, in those places where you plan to connect to the real world, is very powerful. But for beginners it will be really nice that there is an opportunity to create things just in ordinary language.
For example, we can simply write the following - draw a pink dodecahedron (build a pink dodecahedron):
And here we have the automatically generated code.
We at Wolfram Research are extremely interested in educational opportunities. We have material that will be enough for hundreds of thousands of great projects for hackathons.
You know, every summer, for more than a dozen years, we organize an extremely successful summer school dedicated to the New Type of Science, on which I myself worked for a long time.
There we are successfully engaged in science in real time. Also, a summer camp for high school students has been operating for several years.
We use our experience to create a variety of options for using the Wolfram Language in programming training. For over 25 years we have been working closely in the field of education. Here Mathematica is incredibly widely used. And I am happy that Wolfram | Alpha has become a kind of universal tool for students.
Coming even more interesting.
For example, the Chinese version of Wolfram | Alpha is almost ready.
We are going to add the ability to implement the full range of possibilities for the analysis of the educational process, using our cloud system. You know, there are so many possibilities here. As, for example, with our CDF format - Computable Document Format ( Format of Calculated Documents) - which has been used for several years to create interactive Demonstrations .
By the way, here is our website containing about 10,000 pre-made Demonstrations.
Now, with our Cloud system, we can run any of them directly in the browser using Cloud CDF, so they can be easily integrated into the network educational environment. An example of this is the recently launched project from Versal .
On the other hand, from the point of view of other areas, besides education, a lot happens in the corporate sphere. For several years, we have been developing full-scale bespoke complexes based on our Wolfram | Alpha platform. But now with the advent of the Data Science Platform, we will get, in fact, an infinitely modifiable version of these features. And of course, all this is integrated between the desktop and cloud versions. We are also going to create private cloud services.
But this is all just the beginning. Since what we got with the Wolfram Language technology stack, this is a kind of universal platform for creating ready-made solutions. And we are already on the way a whole set of such solutions. It’s just incredible to watch how what we have been working on for 25 years is going to put together in this way.
Of course, for our small private company of about 700 talented people, this is a big test - to cope with all the prospects.
We began to promote the company. Such as Touch Press , which makes e-books for iPad.
We have a lot more in our plans, and we need more entrepreneurs and investors working with us.
Well, what about more distant future?
I thought about it for a long time. Now I have too little time to say everything. So I will tell only about a small part.
We are trying to take all the knowledge of our civilization and turn it into a calculated form. So that we can use them everywhere. For example, in Wolfram | Alpha, we essentially perform calculations on demand. You ask about something, and Wolfram | Alpha does it.
Further more. We are going to make the calculations predictive, and, with the help of the Wolfram Language, we have done a lot to get closer to this. Imagine being able to model the whole world and predict what will happen in the future. Tell you what you would like to do in your next step. Now, whenever you use the Wolfram Language, you always see this little Predictive Interface Proposal for Further Actions panel, which uses fairly non-trivial calculations to suggest you what to do next.
But the real way to make it all work is to use the knowledge of yourself. For a long time I was very enthusiastically engaged in personal analytics . Here, for example, the 25-year history of my e-mail activity.
Since machines have more sensors and memory than ours, the clues they give us will get better and better. And at a certain stage, the machines will seize the initiative, because people are trying to stick to the automatic prompts they are given.
But here, that I recently realized. I am interested in history and visited the archives of Gottfried Leibniz , who lived 300 years ago, but already had many modern ideas about computation. But in his time, the only thing he had was a very primitive calculator, which he himself designed.
Today, billions of computers work. So I thought about extrapolation. And I realized that at some point we will not just have a lot of computers - literally everything will contain computers.
Biologists are already a little imbued with this idea. But one day it will not make sense to create anything from “stupid” materials; instead, everything will be made of fully programmable structures.
What does this mean for us? Well, of course, this blurs the line between software and hardware. And it also means that the languages we create will become part of what everything is made of. I have been interested in fundamental physical theory for a long time. And, in fact, the research that I conducted allows me to think that there is a real possibility that we have finally found a new approach that will allow us to get this theory. In fact, this approach is that our physical Universe can be found in the computational universe of all possible universes.
There is an interesting point in all this: one day, everything will surely contain computers. Of course, when this happens it will still be great to discover some fundamental physical theory, and then I would like to do it, but this discovery will no longer be of great importance because, in essence, physics is the machine code (programming language) of the Universe, and everything we are dealing with will be already at the level that we can program as we like.
So what does all this mean for humanity? Without a doubt, we will be able to realize this world, in which programming will go further than is happening now in biological objects. You can actually create any universe for yourself. I imagine the moment when a repository will appear containing trillions of such entities. Each of which launches any fragment of the computing universe that it wants.
And what happens next? Many calculations will be made. From the research that I conducted, and, in part, from the Principle of Computational Equivalence — I think that this is all reminiscent of the situation Copernicus found himself in. It seems to me that there is no serious difference between these calculations and what is happening in the Universe, or even in much smaller programs.
From a certain point of view, the only feature of this repository of trillions of entities is that it is based on our particular history. Now, as you know, I have to deal with all these technical things, but it turned out that I love working with people; It seems to me that this is why I decided to create a company and be the leader of many people. In a sense, observing how much becomes possible, and how much can be generalized and virtualized with technology, actually makes me think that people are becoming more important than ever. After all, if everything is possible, what is important is determined only by what a person wants or chooses.
This is something like a giant version of what we do with the Wolfram Language. Humanity sets goals for itself, and technology automatically tries to achieve them. And the more we try to involve computing in all areas of knowledge, the more it all becomes possible. And you know, I believe that the widespread use of computing will definitely be the determining factor of our time in history.
I must say that I am very glad that I live at the very time when I can bring something to this matter. This is a great honor and joy to me. And I am also very glad that today I had the opportunity to tell you a little about it.
Many thanks for your attention!
NOTE 1
Rule 30 is essentially a logical function of three arguments, which has the form: p XOR (q OR r). It can be represented in the form of 8 rules, according to which triples of cells of the upper tier are transformed into the lower one (see fig. Below). The initial line - the first one on top - contains one black square (True) and a set of white squares (False), infinite in both directions. The central column generates a qualitative sequence of pseudo-random numbers and it is on this rule that the default pseudo-random number generation method in the Mathematica system is built.
NOTE 2
The very name Mathematica was coined by Steve Jobs. Prior to that, Stephen thought of calling the system differently:
NOTE 3
After his release, Stephen Wolfram’s book became a bestseller and spawned an avalanche of media discussion. The book contains a large number of rare and valuable information, from the use of cellular automata to solve problems of hydrodynamics and systems for the automatic proof of mathematical theorems to an understanding of the design of the pattern on the shells of Kauri mollusks.
NOTE 4
Video-introduction of Stephen Wolfram in the Wolfram language