An Interview with Stephen Wolfram

Stephan Collart, Euromath Bulletin 2(1) (1996).

SC: What has been in your view the most important effect of Mathematica since its release?

SW: Basically that we’ve defined a whole new way for people to use computers—and that more than a million people have found out that it’s a good idea. For your audience, I’d say the most important thing is that lots and lots of people from all sorts of fields have now been exposed through Mathematica to issues about computers and mathematics—and have started to care about them.

I guess I have to say that I really don’t know all the effects Mathematica has had. Only a tiny fraction of our users ever explicitly tell us what they do with Mathematica. People have certainly told me that Mathematica has revolutionized all sorts of fields—including some I’ve barely heard of. It’s really a wonderful experience to build a tool like Mathematica, and then every year to see people doing more and more impressive things with it. I’ve put an incredible amount of work into Mathematica, and finding out that it makes a difference to so many people is really great.

From an intellectual point of view, I think one of the more important effects of Mathematica is that it has communicated advanced computer language ideas to a much wider audience than they ever reached before. There are a huge number of people who had only ever used languages like Fortran before, but who now understand symbolic expressions, rule-based programming and so on. I think that’s pretty important for the progress of computing as an intellectual endeavor.

SC: Where has Mathematica not met your expectations?

SW: Technically I think Mathematica is great. I’m always thinking of more things to make it do, but I’m very happy with what’s there. One thing I guess I’m slightly disappointed about is that we don’t seem to have managed to communicate some of the intellectual advances in Mathematica as thoroughly as I’d like to people in areas like computer science and mathematics. I think some very exciting intellectual things have been achieved in Mathematica—particularly in the area of language design—but there are still lots of people in fields like academic computer science who don’t understand what’s been done.

I guess another thing is that some people who I would have thought really should don’t seem to appreciate the overall design of Mathematica. One of the things I’m proudest of in Mathematica is the way all the pieces fit together—the fact that there are a fairly small number of powerful principles from which the whole system is built. I would have thought that mathematicians and people like that would immediately appreciate this kind of thing. And certainly some do. But among mathematicians and the like there are still an amazing number of feature hunters out there who don’t seem to understand the crucial value—both intellectual and practical—of good design. It seems like the axiomatic training and abstract aesthetic of mathematics doesn’t seem to translate as often as I would have expected to an understanding of system design.

SC: With the benefit of hindsight, is there anything you would have developed differently in Mathematica?

SW: Surprisingly little, actually. Of course it’s very scary when one makes a system that lots of people use: one has to get things right the first time—one can’t go back later and make incompatible changes. But eight years on I’m actually very pleased with how few things I would have done differently.

I guess there is one decision that I sometimes think about: the decision to call the thing we built “Mathematica”. I had thought that referring to mathematics was a good thing to do—but I didn’t realize how many people out there really really despise mathematics. They think mathematics is just something unpleasant that they have to do in school, and they want to forget about it as quickly as possible. The funny thing is, though, that in fact they’re often using mathematics—at least through Mathematica—doing all sorts of kinds of analysis, modelling and so on. I think mathematics really has a major image problem, and with the name Mathematica we’re at least somewhat tied to it. For all sorts of reasons, I’d love to improve the general image of mathematics—and I’ve tried doing it in various ways—but I think most academic mathematicians are still in denial that there’s any problem. Perhaps they’ll change their minds when the public makes it clearer that there isn’t going to be any more money for mathematics unless people get a better impression of it.

SC: Symbolic computation as a research discipline has an uneasy existence between mathematics and computer science. Will this change? What can be done to change it?

SW: Gosh, I’m not sure exactly what you mean. I’m not a great fan of a lot of academic work that goes on these days. I think a lot of areas of academia have become incredibly introverted: people just write papers that other people in their fields will read. They don’t seem to care much about anything outside. And there are all sorts of elaborate rituals that have developed about how to do academic work, how to present it, how to publish it, etc. It’s mostly fairly recent—last 50 years or so—and I guess it’s inevitable, given how large the academic enterprise has become. But assuming things go on the way they are, I’m afraid that over the next few decades we’ll almost certainly see the end of academia as a serious force in society….

SC: Some observers see a research crisis in mathematical computation—a dearth of both fundamental and practical advances; others are concerned about a looming funding crisis. How do you see the situation?

SW: Well, I think Wolfram Research has one of the largest—if not the largest—R&D effort in mathematical computation anywhere. And certainly I’m pretty happy with the stuff we’re getting done—which ends up being both practical and fundamental. I don’t know so much about the academic mathematical computation scene. But I’m a bit surprised you ask about funding. I think Mathematica has really opened up the market for mathematical computation—and there are starting to be a fair number of people and groups who make their living quite well from distributing Mathematica packages. And there’s certainly room for more of that kind of thing—quite independent of begging for money from governments and the like.

SC: In what areas of mathematics do you see an underdeveloped potential for computational methods? What could be done to encourage developments?

SW: I think the opportunities of computer experiments are absolutely vast. It’s like the situation about three hundred years ago with physics experiments. Even the easy stuff hasn’t been done. I’ve spent some of the past fifteen years trying to do a bunch of the easy computer experiments—and I’ve discovered some incredibly interesting things. There’s amazing stuff out there to find.

But here’s a question for your audience: will mathematicians consider what’s done to be mathematics? What is mathematics these days? I think it’s become defined—like so many other areas of science—more by its methodology than by its content. Mathematics is not about general questions concerning abstract systems. It’s about what you can investigate and prove theorems about. That’s very limiting. In fact, almost by definition it means you can’t find things that are really surprising.

It’s worth noticing that in most fields of science, the number of experimentalists is far larger than the number of theoreticians. Mathematics is pretty much unique in having very few experimentalists. My guess is that one of the big things that will happen in mathematics—whether everyone in the field likes it or not—is that there will be a big shift towards experimentation as the methodology to use. I think one of our big contributions with Mathematica is to make that experimentation easy enough that one can do it without being sure one knows what results will come out—so one is really exploring.

SC: One paradigm currently attracting interest is knowledge-based symbolic algorithms and computing. Do you see potential for this approach?

SW: I’m afraid I don’t know what “knowledge-based symbolic algorithms” are. If that means programs with tables in, then yes, those are useful—especially when one has the pattern-matching capabilities of Mathematica. I wish academic computer scientists would use less jargon! It really gets fairly funny when people like me build big computer science systems but can’t remember the official names of the things they’re doing!

SC: One discernable computational trend in networking is remote software: do you see consequences for symbolic computation systems?

SW: MathLink has always been runnable over a network, and an increasing number of people are doing it. The advantages are mainly practical, but they’re significant.

SC: Will parallelism—and systems which support it—be a decisive issue?

SW: Not in the near future, I think. As you perhaps know, I was quite involved with massively parallel computing 10 or 15 years ago. As you also know, the marketplace for parallel computing never really happened. I don’t see that changing anytime soon. The traditional general purpose design of processors has too much market momentum behind it. Of course, small-scale parallelism based on networks of ordinary computers is happening. In fact, I myself use it often—running many copies of Mathematica on different machines in our company, and having the whole thing controlled by MathLink connections.

SC: Do you believe that any further major general-purpose symbolic computation systems could be successfully launched in the future?

SW: You mean Mathematica competitors? It depends what you mean by “major”. If we don’t do anything really stupid, I think it’s unlikely anyone else will reach a million users in the forseeable future. But the more successful we are, the more there’ll be people who’ll want to claim that they’re building systems that are like ours. There’s certainly nothing impossible about building something like Mathematica—after all, we’ve done it. But it’ll take a great deal of effort, and I very much doubt the marketplace would be all that interested.

SC: One sees a multiplication of smaller specialized systems whose design is also increasingly sophisticated. What balance and relationship do you see in future between specialized and comprehensive systems?

SW: I guess the specialized systems that seem to me to make the most sense are the ones built in Mathematica. They start from all the stuff we’ve done, then add specialized abilities. I don’t know why there are so many people building specialized systems in languages like C. I guess it may conceivably make for a better story for an academic paper—though I’m not quite sure why—but I don’t think it’s a good use of effort. What on earth is the point of building yet another parser, often based on a really simple-minded language design? Why not just use Mathematica?

Of course, sometimes people are really concerned about efficiency, and want to write incredibly bit-hacked stuff. So then they probably have to write the core of their systems in C. But I think the scheme that makes the most sense in cases like that is to have the core in C, then to use MathLink to connect it to Mathematica, so you can use Mathematica as the interface to the system. There have been quite a few systems made this way, and I think it’s a pretty good approach. It’s a way where one can really use software components sensibly, without rebuilding a lot of stuff that surely isn’t the point of an algorithmic project.

SC: The community has proponents of ‘free’ software. Increasing numbers of researchers and better software engineering might make public domain systems increasingly serious contenders. What future do you see for the roles of free and commercial software?

SW: Free software is fine when it doesn’t cost much to develop and support. But you can’t expect to have a really vital long-term product and make it free. What we see a lot with Mathematica packages is that the first versions are free: they’re made by one or two people at a university or some such. But once the packages get serious—have real documentation, quality assurance, etc.—they have a real price. And the result is that money is made that supports the future development of the packages, and so on.

Perhaps you’re asking whether I think software should be distributed for free in general. I guess I think that intellectual property protection is a pretty good feature of civilized society. Now of course there are some people who think software development should always be paid for by the government or something, and then distributed free. Well I tend to think that the less the government has to get involved in, the better. Let people who want software pay for it; it really doesn’t make sense to tax everyone in order to get software for a small segment of society developed. It’s really very selfish on the part of mathematicians or whoever to expect all the taxpayers out there to support their particular software interests.

SC: The reception of the Mathematica system in the mathematical comunity has on occasion raised unexpectedly high feelings, and has sometimes appeared to take on the dimensions of a zealot’s war of disparagement against hype. Do you have an explanation for this fairly unique occurrence? What is your view of the matter?

SW: I’m not quite sure what you mean. Any successful enterprise will have its detractors—that’s just the way the world works. I guess mathematicians can sometimes get a little more righteously out of control than other folk—witness the Unabomber. But I think that considering the level of success we’ve had, there have been surprisingly few detractors—even in mathematics.

SC: One strange aspect of symbolic computation is that the production of mathematical software is an almost invisible, unrecorded discipline. Do you have an explanation for this?

SW: That’s true in almost any field that involves actually building things. We’ve always been very happy for software historians to come in and study our efforts. But almost nobody’s ever done it. And we ourselves are more interested in developing new technology than in writing academic papers and things about technology we’ve already developed.

SC: The use of symbolic computational tools in teaching is a controversial topic where transatlantic differences are particularly evident; what is your view on the matter?

SW: I guess the use of calculators is controversial too. I think anything that’s new will be controversial, and will remain so until the people who didn’t grow up with it die off. I think it’s fairly obvious that having a tool available is better than not having it available. And certainly it looks to me as if some rather nice things have been done with Mathematica—and particularly with Mathematica notebooks—in the courseware area.

SC: Lisp was built on the tradition of the lambda calculus. When Prolog became popular a good dozen years ago, it also spawned a flurry of research into the semantics of logic programming. The evaluation model of Mathematica as a programming language is at least as complex and interesting: why has there been no comparable interest?

SW: I’ve wondered that myself. There has been some work, but there could certainly be much more. Perhaps it’s another sign of the decay of academic computer science. After all, thinking about evaluation models is intellectually quite difficult, especially when there’s a real system out there to stop people being able to hide in pure formalism. But I think there are some really interesting questions to address about evaluation. There are a few people in my company who study it, but I wish more people would work on it.

SC: What is your most important short-term plan for Mathematica?

SW: To get version 3.0 out. Probably by the time people are reading this, 3.0 will be out. But right now we’re still working on putting the finishing touches to it. We’ve been working on 3.0 for about five years, which is an incredibly long time in the modern world. I’m really excited about 3.0—it’s got an incredible amount of important new stuff in—both practical and conceptual. I think 3.0 is really going to blow people away—there’s a lot in it that nobody had any idea could be done. But right now—these few months—the big thing is grinding through all those details that make a software really work reliably across all sorts of machines and so on.

SC: What is your most important long-term plan for Mathematica?

SW: Well, I’m not sure how long term you mean. I’m sure Mathematica will still be being developed when I’m an old man. The core will be the same, but there’ll be lots of new stuff made possible by new computer technology, new mathematics, and so on. My plan with our company is to keep doing what we’ve been doing for ten years already—trying to push the state of the art, and trying to do everything we do in a way that is really set up to survive for posterity. We’ve managed to build a great team of people at the company, and I think we’re well set up to go on discovering and implementing important things for a long time to come.

SC: You have been working on a book about science for some time. Can you sketch some of your ideas? Are there implications for symbolic computation and symbolic computation systems?

SW: Well, that’s a whole other discussion. What I’m trying to do is a pretty big thing: I’m trying to build a whole new way of thinking about science. If you look at most of science for the past three hundred or so years, there’s been a common theme all the way through: that nature should be somehow or another be described by mathematical equations. The idea worked so well for people like Newton that I guess everyone’s been trying to do the same thing ever since. Well, the problem is that in a lot of areas mathematical equations haven’t ended up working—it’s been pretty much of a flop in areas like biology, for instance. So what I’ve been interested in for a long time is whether there is an alternative that one can find. And what I realized about fifteen years ago is that yes, there is. Instead of using equations, one can use programs. The universe presumably follows some kind of definite rules. But why should those rules involve just things like integrals and derivatives—the kinds of constructs invented in human mathematics? Why not more general logical constructs—like the ones that we’re now familiar with in computer programs?

Well, thinking about that raises a very fundamental question: what do simple computer programs actually typically do? Usually we build programs to perform specific tasks. But what if we just started building programs at random? How would they behave? I started answering this question in the early eighties, with cellular automata. And I found some pretty surprising things. But what I’ve been doing the last few years is to try to really build a systematic science out of it all. It’s really fun—I guess it must be a bit like what happened a few hundred years ago when people first did the obvious physics experiments. I’m doing the obvious computer experiments. And the things I’m discovering are really interesting. In fact, I guess I keep on discovering such interesting stuff that I don’t feel ready to finish my book. But hopefully I’ll get it done before too long, and then other people will be able to get involved—which will be good.

You ask how what I’m doing might be relevant to symbolic computation. Well, I think I’ve discovered some things which will really change peoples’ view of what the process of computing is all about. But it’s a long story; another time.

How does it all relate to Mathematica? Well, it’s pretty straightforward—Mathematica is what’s allowed me to do the science I’m doing. I planned it this way—but it’s extremely satisfying to see that it’s really worked out. And in the long term I suspect that the science I’m doing could never have been discovered if I hadn’t taken all the time and effort it’s taken to build Mathematica.