Ten years ago, I wrote an article for Dr. Dobb’s Journal on Analytical Computing. Many of the techniques I discussed there, like hybrid symbolic-numeric computing and automated code generation have since revealed themselves as indispensable tools for engineering. Others, like exact computing, have yet to reveal their potential.
A lot has happened since that article, of course, and it’s about time I share some thoughts about what the current challenges are. There are three areas that are top of my mind and that I would like to discuss here: Parallel computing, collaborative software and user interface abstractions.
In the past, computer processor performance has steadily increased as a result of higher clock speeds and according to Moore’s law. The end of Moore’s law has been predicted numerous times over the past decade but, somehow, chip manufacturers have always been able to find ways of keeping it alive and I expect them to keep going at this for at least my lifetime.
However, one crucial aspect has changed. While, in the past, more processing power automatically resulted in higher application performance, this is no longer the case. Multi-CPU and multi-core architectures require the software to change in order to take advantage of their full potential and programs have to be re-coded to run in parallel. To the user of analytical computing, this means that they need to explicitly restate their computational problems in a form that lends itself to parallelization. There are exceptions, of course, like the parallel BLAS implementations that are available from multiple sources and yield impressive, automatic speed-ups on multi-core architectures, for matrix operations.
In general, though, I believe that the application software needs to catch up quickly and remove the burden of thinking parallel from the end user. Think about having a 64-core computer on your desktop in a couple of years and running compute-intensive software that only takes advantage of 1/64th of that power. Completely unacceptable! We have taken major steps in this direction with Maple already but much work remains to be done.
Social networking has exploded over the past few years with millions of people taking advantage of seamless collaboration tools. This is quickly reaching a point where, whatever application you are running on your computer, you expect it to connect to your personal network of friends and colleagues.
Analytic computing tools are no exception. Vast amounts of worksheets, models, calculations and datasets are exchanged daily over the web and there is huge, largely untapped potential for a tight integration of online collaboration with the application software. Watch for exciting developments in this area in Maple, very soon!
Finally, user interface abstraction has been a topic that’s close to my heart for many years. When we released Maple 10 in 2005, we changed the game by taking a sophisticated mathematical engine and made its power easily accessible to novice users. You no longer had to learn a cryptic syntax or know a vocabulary of system-specific commands in order to get your work done. The UI provides an abstraction that guides you, point-and-click, all the way to the solution. Simple to complex calculations are now easy to perform. Crucial, as well, is that Maple’s programming language remains accessible in the background for maximum control and power. With every release of Maple since then we have continued on the path to making more and more complex mathematics easily accessible.
MapleSim has been the next major milestone in user interface abstraction. Now, mathematical models of physical systems can be built by drag-and-drop of prebuilt components, like motors, joints, transistors, etc. Instead of writing down systems of equations, you build a graphical representation and the equations are generated automatically. You can simulate your systems in MapleSim, of course, plot its behavior and even watch a 3D animation but the magic happens when you display the generated equations in Maple, where you can use the entire mathematical tool-chest to manipulate, analyze and optimize your model.
It’s been a very exciting decade and we have no intention of slowing down anytime soon…