There aren’t very many qualitatively different types of computer interfaces in use in the world today. But with the release of Mathematica 9 I think we have the first truly practical example of a new kind—the computed predictive interface.

If one’s dealing with a system that has a small fixed set of possible actions or inputs, one can typically build an interface out of elements like menus or forms. But if one has a more open-ended system, one typically has to define some kind of language. Usually this will be basically textual (as it is for the most part for Mathematica); sometimes it may be visual (as for Wolfram SystemModeler).

The challenge is then to make the language broad and powerful, while keeping it as easy as possible for humans to write and understand. And as a committed computer language designer for the past 30+ years, I have devoted an immense amount of effort to this.

But with Wolfram|Alpha I had a different idea. Don’t try to define the best possible artificial computer language, that humans then have to learn. Instead, use natural language, just like humans do among themselves, and then have the computer do its best to understand this. At first, it was not at all clear that such an approach was going to work. But one of the big things we’ve learned from Wolfram|Alpha is with enough effort (and enough built-in knowledge), it can. And indeed two years ago in Mathematica 8 we used what we’d done with Wolfram|Alpha to add to Mathematica the capability of taking free-form natural language input, and automatically generating from it precise Mathematica language code.

But let’s say one’s just got some output from Mathematica. What should one do next? One may know the appropriate Mathematica language input to give. Or at least one may be able to express what one wants to do in free-form natural language. But in both cases there’s a kind of creative act required: starting from nothing one has figure out what to say.

So can we make this easier? The answer, I think, is yes. And that’s what we’ve now done with the Predictive Interface in Mathematica 9.

The concept of the Predictive Interface is to take what you’ve done so far, and from it predict a few possibilities for what you’re likely to want to do next.

Curious about Mathematica 9? You can see it in action in three free online events. Our experts will introduce you to new features in usability, computation, data manipulation, and visualization. Live Q&A sessions during each event will give you a chance to ask questions.

Topics covered:

Predictive Interface and Units: December 10, 1–2pm EST
Get a look at the new interface paradigm and systemwide units support. Our experts will demonstrate the next-computation Suggestions Bar, context-sensitive Input Assistant, and units features, from unit conversion to dimensional analysis.

I’m excited to be able to announce that today we’re releasing Mathematica 9—and it’s big! A whole array of new ideas and new application areas… and major advances along a great many algorithmic frontiers.

Next year Mathematica will be 25 years old (and all sorts of festivities are planned!). And in that quarter century we’ve just been building and building. The core principles that we began with have been validated over and over again. And with them we’ve created a larger and larger stack of technology, that allows us to do more and more, and reach further and further.

From the beginning, our goal has been an ambitious one: to cover and automate every area of computational and algorithmic work. Having built the foundations of the Mathematica language, we started a quarter century ago attacking core areas of mathematics. And over the years since then, we have been expanding outward at an ever-increasing pace, conquering one area after another.

As with Wolfram|Alpha, we’ll never be finished. But as the years go by, the scope of what we’ve done becomes more and more immense. And with Mathematica 9 today we are taking yet another huge step.

So what’s new in Mathematica 9? Lots and lots of important things. An amazing range—something for almost everyone. And actually just the very size of it already represents an important challenge. Because as Mathematica grows bigger and bigger, it becomes more and more difficult for one to grasp everything that’s in it.

I stumbled upon a nice project called Rosetta Code. Their stated aim is “to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another.”

After amusing myself by contributing a few solutions (Flood filling, Mean angle, and Sum digits of an integer being some of mine), I realized that the data hidden in the site provided an opportunity to quantify a claim that I have often made over the years—that Mathematica code tends to be shorter than equivalent code in other languages. This is due to both its high-level nature and built-in computational knowledge.

Here is what I found.

Mathematica code is typically less than a third of the length of the same tasks written in other languages, and often much better.

For Daniel Zicha, head of Light Microscopy at Cancer Research UK, Mathematica is the ultimate tool for biomedical research because it’s “quick to develop and then quick to test and visualize the results conveniently and interactively.”

Zicha uses Mathematica in the development of light microscopy techniques as well as in collaborative research in applications of image processing and analysis methods.

Within his collaborative research work in the area of metastasis, Zicha’s use of Mathematica to visualize and qualitatively analyze cell morphology led to the discovery of a novel metastasis suppressor. In this video, he describes Mathematica‘s role in the project and the advantages of having one environment for rapid prototyping, qualitative analysis, and interactive visualization.

At the last two annual Wolfram Technology Conferences, attendees have enjoyed amazing, and being amazed by, each other in the One-Liner Competition, which challenges participants to show us the most astounding things they can do with 140 characters or less of Mathematica code. And each time we have been surprised, inspired, and gratified by their creativity.

Now we’ve opened up the competition to you, and Mathematica users from around the world are sending us their submissions. In a Mathematica Experts Live broadcast on August 21, we’ll reveal the winner and runners-up of the competition, show you what they did, and explain how they did it. You’ll see applications you probably never thought possible, learn new Mathematica tricks and techniques, and have your socks blown off by elegant programming wizardry.

It’s back! The only event in which Mathematica experts are live on camera to answer your questions: Mathematica Experts Live.

The first Mathematica Experts Live virtual event was such a popular success that we’re doing it again. Thank you for your feedback and suggestions. Many of you asked for help with dynamic interfaces, so this time Mathematica experts will answer questions about interactivity. We’ll be ready to answer questions similar to:

How do you add a constraint to a Dynamic?

My Dynamic is slow. How can I make it faster?

What is the difference between Module and DynamicModule?

How do you change the visual appearance of a button?

How can I make custom controls?

Although the format is the same as before, this event will be 30 minutes longer. Our host will accept questions in real time and pass them to three of our user interface experts. You can also submit your question when you register for the event.

As a PhD candidate in civil engineering, Diego Oviedo-Salcedo needed a computational environment that he could use to not only explore the abstract concepts within his civil engineering research, but also to present and communicate his findings to his advisor, peers, and decision-makers. His solution: Mathematica.

Mathematica‘s enhanced built-in statistical analysis capabilities allow Oviedo-Salcedo to instantly test different ideas and methods related to assessing the impact of uncertain physical and hydrological sources on river and aquifer interactions.

In addition, Mathematica‘s easy-to-author interactivity helps him communicate his results with dynamic models—a feature that’s proven to be eye-opening within his department.

When people tell me that Mathematica isn’t fast enough, I usually ask to see the offending code and often find that the problem isn’t a lack in Mathematica‘s performance, but sub-optimal use of Mathematica. I thought I would share the list of things that I look for first when trying to optimize Mathematica code.

1. Use floating-point numbers if you can, and use them early.

Of the most common issues that I see when I review slow code is that the programmer has inadvertently asked Mathematica to do things more carefully than needed. Unnecessary use of exact arithmetic is the most common case.

In most numerical software, there is no such thing as exact arithmetic. 1/3 is the same thing as 0.33333333333333. That difference can be pretty important when you hit nasty, numerically unstable problems, but in the majority of tasks, floating-point numbers are good enough and, importantly, much faster. In Mathematica any number with a decimal point and less than 16 digits of input is automatically treated as a machine float, so always use the decimal point if you want speed ahead of accuracy (e.g. enter a third as 1./3.). Here is a simple example where working with floating-point numbers is nearly 50.6 times faster than doing the computation exactly and then converting the result to a decimal afterward. And in this case it gets the same result.