Functional, Linear, Object-Oriented (via Wolfram's Eclipse IDE-based Workbench) Procedural, Rule-Based and Symbolic are just some of the ways programmers can write applications leveraging Mathematica's symbolic structure. Not only is this highly flexible model great for exploring different programming approaches to solve computationally challenging problems, it also adapts to whatever model is optimal for the task at hand. After exploring the functional programming aspects of Mathematica, my own appreciation for different approaches was enhanced and I didn't feel shackled to solving problems using the belabored OO approach. In fact, Mathematica has achieved its amazing calculation speed and efficiency by not adopting the pack mentality of following the latest methodology craze but rather continued to refine its own computational engine constructions. It's no wonder that most of the attendees I interviewed at the recent Mathematica Conference were converts from other programming languages sold on the flexibility and power that Mathematica's programming models had to offer.
Because Mathematica's documentation is constructed as a Mathematica notebook, all the code elements and demonstrates are live and fully executable. This aids tremendously in the learning of what functions can do as well as provide copious examples to copy and paste as a framework to start from. Mathematica 7's documentation has been further revamped to provide outstanding organization to what could be over 10,000 pages of printed material. The interface provides several different organizational approaches to accessing the information, from an attractive Documentation Center summary page, a Function Navigator hierarchy to a Virtual Book for those who prefer to meticulously read everything sequentially to a clean Google-style search bar for impatient programmers like me. The documentation is available both locally and mirrored on the web. Wolfram's website further extends the demonstrations embedded in the help system with the Wolfram Demonstrations Project, a web site showcasing numerous mathematical models categorized by genre's ranging from Physical Sciences to Engineering & Technology. Not only does this resource promote Mathematica's abilities but also further assists Mathematica users with code that can be incorporated into their own projects.
Brand new software releases are rarely perfect, and Mathematica 7 is no exception. For this review, I evaluated the 64-bit Linux edition of the program and encountered a few annoying bugs and non-working functions. After resolving my initial license key issues with Wolfram's tech support staff (the application is tightly locked down by machine ID), palettes and certain windows had the annoying tendency of popping up underneath my Linux desktop application bar. Apparently someone in QA failed to check that condition or assign it a high enough priority to fix in time for the program's release. Hitting the ALT-F7 to move the misaligned window and expose its title bar. Another annoying omission is the fact that the new Speak function simply does not work on the Linux platform. This was one of the first functions I tried since I was curious to see if Mathematica actually embedded its own voice synthesizer or simply relied on whatever default was installed on the host operating system. The latter turned out to be the case, but only on the Windows and Mac OSX versions. Regardless of whether a voice synthesis package like Cepstral or Festival was installed, the Speak function simply did not work. After following up with Wolfram, they confirmed that this finding was indeed the case and that there were no immediate plans to enable this function on Linux. While I constructed my own LinuxSpeak function (LinuxSpeak[phrase_] := Run["swift", phrase]) to correct this oversight and work with the Cepstral text-to-speech sound set, the dream of a talking cross-platform mathematically-oriented application was shelved for now. I also encountered one unexpected crash to the desktop while running a particularly hairy nested function set. I suspect it was due to exhausting RAM or an overflowed stack but even after searching for a crash dump log which I never did locate, I still don't know what precisely caused the fault. Fortunately that occurred only once in the whole time I used the program over the many days I put it through its paces.
While 500+ new features, many of which are major additions, delivers tremendous value to both new Mathematica users and those looking to upgrade, there are so many more that Wolfram can build upon in future editions. One of the biggest areas I would like Wolfram to consider is collaboration. When I met with the many talented scientists, researchers and engineers at the Mathematica Conference, I saw a group of passionate, dedicated, enthusiastic individuals willing to share their knowledge and best practices. I thought, "Wouldn't it be great if I could have permissive access to these highly intelligent minds while working on my own Mathematica programs?" Including a screen sharing, IM-like client that categorized accessible individuals by industry or subject expertise wouldn't be too difficult and would give Wolfram a seriously valuable database of active users. Chat rooms could be monitored/managed by Wolfram tech support and developers and screen-casted collaborative notebooks within the actual Mathematica environment could show off new approaches or features and saved locally for further development and exploration. In line with the collaboration request, Mathematica would need to keep track of collaborative changes by supporting either its own version control system or providing hooks into popular source control systems like Git and Subversion. While these can be used today outside of the Mathematica environment, building such utility into the program's File menu would be a relatively easy feature to add and help promote version control and distributed teams.
Less ambitious requests would be for simple enhancements to the Mathematica notebook structure to include such features as unlimited Undo/Redo, automatic scrap collection, clean-up and more intelligent reformatting of notebook elements would all be welcome additions.
Mathematica 7 has re-ignited my interest in mathematics much the way my brother's TI-59 did years ago. Just as I was blown away by the cutting edge calculation power and programmability of that computational system at the time, so too am I thrilled by the sheer mathematical universe, programming flexibility and multi-core goodness that Mathematica delivers. Existing Mathematica users have little reason not to upgrade to this latest release while programmers and computer systems engineers who have yet to experience how easy and powerful this remarkable platform is should unhesitatingly request the 15-day trial from Wolfram's website and take it for a test drive. Strap in and enjoy the ride!