In 2002 Stephen Wolfram released A New Kind of Science and immediately unleashed a firestorm of wonder, controversy, and criticism as the British-born scientist, programmer, and entrepreneur overturned conventional ideas on how to pursue knowledge. Earlier this month, he teased something with the capacity to create as much passion — and, likely, much more actual change — in the world of programming, computation, and applications.
Today, Wolfram gave me a glimpse under the hood in an hour-long conversation. And I have to say, what I saw was amazing.
Whether you think his 1,300-page tome on the future of scientific exploration is seminal or fanciful, you can’t question that the man is a genius. Born of Jewish parents who fled persecution in pre-WWII Germany (remind you of another scientist?), Wolfram wrote a dictionary on physics at age 12 and three books on particle physics by the time he was 14, publishing his first scientific papers at 15.
In 1988 he released the first version of Mathematica, a platform for technical computation, and in 2009, he released the Wolfram Alpha search engine, a computational knowledge engine. His new project, he says, is a perfect marriage.
“Mathematica is this perfect precise computation engine, and WolframAlpha is general information about the world,” Wolfram told me. “Now we can combine the two.”
The combination is just part of the picture. Included in the new project is natural language programming — not that a program can be created exclusively with natural language, but that a developer can use some natural language. Also included is a new definition of literally anything in your application — from code to images to results to inputs — as being usable and malleable as a symbolic expression. There’s a whole new level of automation and a completely divergent approach to building a programming language, away from the small, agile core with functionality pushed out to libraries and modules and toward a massive holistic thing which treats data and code as one. And there’s a whole new focus on computation that knows more about the world than the programmer ever could.
‘Insanely more ambitious’ than Google knowledge graph
But don’t compare it to Google’s knowledge graph or semantic search.
Above: Components of the Wolfram language.
Image Credit: Wolfram
“The knowledge graph is a vastly less ambitious project than what we’ve been doing at Wolfram Alpha,” Wolfram says quickly when I bring it up. “It’s just Wikipedia and other data.”
Google wants to understand objects and things and their relationships so it can give answers, not just results. But Wolfram wants to make the world computable, so that our computers can answer questions like “where is the International Space Station right now.” That requires a level of machine intelligence that knows what the ISS is, that it’s in space, that it is orbiting the Earth, what its speed is, and where in its orbit it is right now.
That’s not static data; that’s a combination of computation with knowledge. WolframAlpha does that today, but that is just the beginning.
Search engines aren’t good at that, Wolfram argues, because they’re too messy. Questions in a search engine have many answers, with varying degrees of applicability and “rightness.” That’s not computable, not clean enough to program or feed into a system.
“We want to be right,” Wolfram told me. “Making the world computable is a much higher bar than being able to generate Wikipedia-style information … a very different thing. What we’ve tried to do is insanely more ambitious.”
It’s so ambitious, and so far-reaching, that it’s hard to describe. Wolfram says that of all the different things he’s done in his life, this is the most horribly complicated to explain. Remember, this is a man who has written on particle physics. It’s both intellectually deep and far-reaching, with many implications — “tentacles,” Wolfram calls them — into different areas of programming and science and knowledge and business.
There’s no good elevator pitch for the language, and even though it’s not entirely released yet, there are 11,000 pages of documentation already. In one of any number of nutshells, however, it’s a giant leap forward in building accessibility to the world’s knowledge, in making programs — and eventually things — smart.
Making the computer do the work
“In general, what we’re trying to do is so that as long as a person can describe what they want, our goal is to get that done. A human defines what the goal should be, and a computer does its best to figure out what that means, and does its best to do it,” Wolfram says.
I watched him do it, live.
Above: Countries and flags in South America, thanks to Wolfram language
Image Credit: John Koetsier
In about 30 seconds, Wolfram created a small web application that drew circles on a web page and included a user interface so a visitor could make them bigger or smaller, or change their colors. That’s doable simply because the Wolfram language — with its access to a vast reservoir of knowledge — knows what a circle is and can make it, and it automatically provides web-native user controls to manipulate it. It was a trivial example, but in another 30 seconds, Wolfram built a code snippet that defined the countries in South America and displayed their flags. Then he called up a map of Europe and highlighted Germany and France in different colors computationally, in seconds.
This is only possible because the new Wolfram computational framework includes the complex and precise algorithms developed in over 20 years of Mathematica development, plus the knowledge engine built up inside WolframAlpha.
And the results are shocking.
Automation through information
“The level of automation is incredibly higher than people could ever have before – it’s incredibly powerful,” Wolfram says. “Anything that WolframAlpha knows, your app knows.”
Which is kind of where the natural language story comes in. Wolfram the language knows that South America is a continent, because WolframAlpha the knowledge engine knows that. In the same way, it knows what countries belong to South America, what their flags are, the population of those countries, the map shapes and outlines of them, and probably hundreds of thousands of other data elements. All of which can be accessed simply by typing in “South America.”
Above: Calling up a map of Europe, with Germany and France highlighted, in a line or two of code. Bold-faced lines are the ones Wolfram actually typed himself.
Image Credit: John Koetsier
In other words, “South America” is not a variable to be assigned, or an object or class to be instantiated. It’s a phrase that is known and understood, with significance and meaning and connections that can be pulled into your program with very little effort, and no external data sources. And, that knowledge source is continually updating and growing to match the updating and changing world.
That’s kind of wow — a big change in how developers can start approaching applications. And it’s not limited to physical reality.
“Just as we curate knowledge, we also curate APIs, devices, and digital information,” says Wolfram. “So just as we know things about Ecuador, we also know things about the Twitter API – just as you get the population of Ecuador, you can learn something about the Twitter API.”
With Wolfram’s ability to create apps quickly, that’s a game-changer.
Natural language input — kids can code?
It changes the economics of building applications, because what used to take hours or days or weeks to do, can now take minutes. Currently, Wolfram meets many people who have an interesting idea or algorithm or application, but can’t complete it for lack of time or a team of developers or money. That could all change.
“It will spawn a whole mass of new startups,” Wolfram told me. “Now it becomes realistic for someone to build out a complete algorithm and automation system in a few hours.”
It also changes who can program, because instead of programs being tens of thousands of lines of code, they’re 20 or 200. And that means kids can code or novice programmers can get started — and build significant apps.
Above: View code, or view image
Image Credit: John Koetsier
“Together with natural language inputs, it changes who can be a sophisticated programmer,” Wolfram says. “You’re writing programs that are only a few lines long – it’s a language where you can immediately get things done, not take 10 lines to get hello world. It will flatten out the landscape of who gets to write sophisticated programs.”
Which could boggle your mind a little.
Thanks to Mathematica’s long history and WolframAlpha’s big brain, the Wolfram language knows and can operate on many things, with built-in functions for data manipulation and analysis, visualization and charting, images, geography, geometry, sounds, scientific data, almost automatic U.I. building, financial data, social data, and even deployment to the cloud. It’s a mishmash of all those things, and much more, which is one of the most difficult things to wrap your head around — it’s so different from a traditional neat separation of data and code and interface.
Of course, while there’s natural language input, there’s also a syntax and structure to Wolfram language, plus operators and other constructs that are still necessary to create a functioning, bug-free program that does what you want it to do. Which means that there’s still learning to do — no-one is going to start dictating in Wolfram and expect to build an app.
Where to Wolfram: Raspberry Pi, smartphones, devices
Those apps will live in many places.
Recently, Wolfram released a version of Mathematica for Raspberry Pi, the tiny credit-card-sized computers, which means that the Wolfram language is now on available for free for many developers. My question to Wolfram the man, however, was that if the Wolfram language is this vast monolithic thing full of the knowledge of the world, how does it fit on one little Pi?
“It’s a slightly complicated story,” Wolfram says. “The Wolfram engine is a rather portable kind of thing, but obviously the knowledge of the world is something that is a big thing … it’s centralized, it’s in the cloud, and it depends on feeds.”
So in the desktop version of Wolfram, the detailed mapping that he has been showing me comes seamlessly from the cloud. On Raspberry Pi, something similar is happening; the Pi is doing the “crunchy computation,” but ever so often, it’s reaching out the cloud for pieces of fruit and crust and whatever other data it needs.
People who are building web apps, Wolfram says, will likely use the Wolfram cloud to make that happen. But there will be private cloud solutions as well. Developers who are building mobile apps will be able to get an embedded version of the Wolfram engine, and then use an API to get whatever data you need. All code, however, can simply be copied and pasted between cloud and device and desktop — it’s all the same.
Building in Java or Objective-C and not about to learn the Wolfram language? Never fear:
“Another way to do it is to use a function call from a native language like Java,” Wolfram told me. “You’ve got variables in your Java code, and we synthesize the code you need to go from Java to the form that you need it in to send it into our engine, and then sent results back to Java. It will look as if you’re just calling Java, but it will be reaching out to our cloud.”
Sentient code and intelligent objects
One of the first phrases that came to my mind when I first read Wolfram’s tease — “something very big is coming” — was sentient code. That’s simply due to the level of automation and intelligence that the Wolfram language is starting to encompass, and that fact that the engine treats data and code in similar ways.
I questioned Wolfram on that.
“What we’re trying to do is that the programmer defines the goal, and the computer figures out how to achieve that goal,” he said. That’s different than telling the computer to go figure out something new that’s interesting – that’s a diffferent challenge — but I’m interested in that too.”
Wolfram has dabbled in smart programs that create new art or knowledge, including Wolfram Tones, which creates new forms of music automatically based on your inputs, and he touched on it in A New Kind of Science. It’s something he says many people are working on “in secret,” often for financial services companies that play the hedge funds. And the Wolfram engine already adds a level of intelligence to how it does things, and how it presents the results.
It’s not quite to artificial intelligence, but it might be coming. Maybe in a massively distributed form.
“Today, there are probably 10-50 billion computers in the world today, depending on how you define them, and lots of devices have computers in them,” he told me. “In the near future, almost everything will be made of computers — even small objects. At that point, computation becomes even more important that it is today, and things are adaptable and modifiable at all levels.”
Then he started to slow down, thinking as he spoke. Wolfram is talking, perhaps, about the singularity, the point at which intelligence is the single defining factor of everything, and development accelerates at a pace we can’t currently begin to comprehend, and the world changes much more rapidly and much more profoundly than we can imagine.
“I’ve thought a bit about what the world is like in that situation, but I haven’t figured it all out yet,” Wolfram said. “A certain amount you can guess … but a lot is hard to see.”
If that point in history ever approaches, perhaps it will come as a result of smart systems that approach intelligence. Perhaps, the Wolfram language is one of the forerunners of just such a system.
And maybe that’s why it’s so bloody hard to understand — and explain. As Wolfram said in his teaser post:
So far I can see only the early stages of what this will lead to. But already I can tell that what’s happening is our most important technology project yet. It’s a lot of hard work, but it’s incredibly exciting to see it all unfold. And I can’t wait to go from “Coming Soon” to actual systems that people everywhere can start to use…