Jeopardy, IBM, and Wolfram|Alpha

About a month before Wolfram|Alpha launched, I was on the phone with a group from IBM, talking about our vision for computable knowledge in Wolfram|Alpha. A few weeks later, the group announced that they were going to use what they had done in natural language processing to try to make a system to compete on Jeopardy.

I thought it was a brilliant way to showcase their work—and IBM’s capabilities in general. And now, a year and a half later, IBM has built an impressive level of anticipation for their upcoming Jeopardy television event. Whatever happens (and IBM’s system certainly should be able to win), one thing is clear: what IBM is doing will have an important effect in changing people’s expectations for how they might be able to interact with computers.

When Wolfram|Alpha was launched, people at first kept on referring to it as a “new search engine”—because basically keyword search was the only model they had for how they might find information on a large scale. But IBM’s project gives a terrific example of another model: question answering. And when people internalize this model, they’ll be coming a lot closer to realizing what’s possible with what we’re building in Wolfram|Alpha.

So what really is the relation between Wolfram|Alpha and the IBM Jeopardy project?

IBM Watson and Wolfram|Alpha

Continue reading

Knowledge-Based Computing and Version 2.0 of the Wolfram|Alpha API

Wolfram|Alpha is making possible a whole new very interesting and very powerful kind of computing. And with the release today of version 2.0 of the Wolfram|Alpha API, it’s going to be considerably easier for a broad range of software developers to take advantage of it.

I’m happy to say that it seems as if Wolfram|Alpha is pretty useful to humans—for example through the wolframalpha.com website. But it also turns out that Wolfram|Alpha is extremely useful to programs. And in fact, even today, the number of requests coming to Wolfram|Alpha each second from programs often exceeds by some margin all the requests coming directly from humans.

The reason for this popularity is really pretty simple: Wolfram|Alpha completely changes the economics of a lot of programming. You see, these days a remarkable number of programs rely on having some kind of knowledge. And traditionally, the only way to get knowledge into a program was for the programmer to painstakingly put it there.

But with Wolfram|Alpha in the picture, it’s a different story. Because built into Wolfram|Alpha is already a huge amount of computable knowledge. And if a program is connected to Wolfram|Alpha, then it can immediately make use of all that knowledge.

Whether one’s building a website or a mobile app or desktop software or an enterprise application, the point is that one can use Wolfram|Alpha as a “knowledge-based computing” platform—so that having all sorts of computable knowledge becomes effectively free from an engineering point of view.

How does a program communicate with Wolfram|Alpha?  It uses the Wolfram|Alpha API. (These days, API is pretty much a term on its own, but it comes from “Application Program Interface”.)
Continue reading

An App for Every Course, and More

Today we’re releasing the first three of a planned series of “course assistant” apps, built using Wolfram|Alpha technology.

Wolfram Algebra Wolfram Algebra plot

The long-term goal is to have an assistant app for every major course, from elementary school to graduate school. And the good news is that Wolfram|Alpha has the breadth and depth of capabilities to make this possible—and not only in traditionally “computational” kinds of courses.

The concept of these apps is to make it as quick and easy as possible to access the particular capabilities of Wolfram|Alpha relevant for specific courses. Each app is organized according to the major curriculum units of a course. Then within each section of the app, there are parts that cover each of the particular types of problems relevant to that unit.
Continue reading

Touch Press: The Second Book

“Someone has to make the first great ebook publishing company; it might as well be us.” So I said a few weeks before the iPad was released this April. And a little while later Touch Press was formed. The iPad was released, and simultaneously, Touch Press’s first book The Elements was released. The book has been on the iPad bestseller list ever since—in addition to being featured in all sorts of iPad television commercials and the like.

Well, it’s good for a publishing company to have a successful first book.  But for me it’s been getting a little old telling people that I’m a partner in a new publishing company, but so far we’ve only published one book. So it’s exciting to be able to say that as of this week, Touch Press has a second book: Solar System.

Cover

Continue reading

100 Years Since Principia Mathematica

A hundred years ago this month the first volume of Whitehead and Russell’s nearly-2000-page monumental work Principia Mathematica was published. A decade in the making, it contained page after page like the one below, devoted to showing how the truths of mathematics could be derived from logic.

The cardinal number 1

Principia Mathematica is inspiring for the obvious effort put into it—and as someone who has spent much of their life engaged in very large intellectual projects, I feel a certain sympathy towards it. Continue reading

Programming with Natural Language Is Actually Going to Work

I love computer languages. In fact, I’ve spent roughly half my life nurturing one particular very rich computer language: Mathematica.

But do we really need computer languages to tell our computers what to do? Why can’t we just use natural human languages, like English, instead?

If you’d asked me a few years ago, I would have said it was hopeless. That perhaps one could make toy examples, but that ultimately natural language just wouldn’t be up to the task of creating useful programs.

But then along came Wolfram|Alpha. In which we’ve been able to make free-form linguistics work vastly better than I ever thought possible.

But still, in Wolfram|Alpha the input is essentially just set up to request knowledge—and Wolfram|Alpha responds by computing and presenting whatever knowledge is requested. But programming is different. It is not about generating static knowledge, but about generating programs that can take a range of inputs, and dynamically perform operations.

So the first question is: how might we represent these programs?

Continue reading

The Free-Form Linguistics Revolution in Mathematica

With the release of Mathematica 8 today, the single most dramatic change is that you don’t have to communicate with Mathematica in the Mathematica language any more: you can just use free-form English instead.

Wolfram|Alpha has pioneered the concept of specifying computations with free-form linguistic input. And with Mathematica 8, the powerful methods of Wolfram|Alpha become available within the Mathematica environment.

All one has to do is to type an = at the beginning of a line. Then what follows is taken as free-form linguistic input.

Example of free-form linguistic input

You don’t have to use precise Mathematica syntax. You can type things in just the way you think about them, in free-form English. But what happens is that Mathematica calls on Wolfram|Alpha to try to interpret your input, and turn it into precise Mathematica code.

Continue reading

Mathematica 8!

Mathematica 8

Mathematica 8 is released today! It’s a huge and important release. With dramatic breakthroughs—and major broadening of the whole scope of Mathematica.

After 8 versions and 22 years most software systems have decayed to slow and lumbering development. But not Mathematica. In fact, with Mathematica it’s quite the opposite. As the years go by, Mathematica development is actually speeding up.

What has made that happen? Partly it’s our tenacious and broadening pursuit of ambitious long-term goals. But partly, it’s a remarkable reflection—and validation—of the core principles on which Mathematica has always been built.

Continue reading

The Poetry of Function Naming

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.

Continue reading