or, the sound of me slowly losing my mind.
The advent of the computer algebra system (CAS) has been met at my university’s School of Mathematics and Statistics with the creation of a second-class, badly specified “Computing” strand in the syllabus, which ostensibly teaches us how computing works in the context of mathematics. Naturally, they chose the worst CAS to do so in.
I have some prior experience with CASes, of course: I used the Python-powered Sage a few years ago, and I got Wolfram Mathematica in 2013 (and learned how to use it fairly well), so I’m certainly very biased in the way I think about things.
Both Mathematica and Sage of those systems are infinitely superior to the toy system we got dropped on us: Maple. Maple, from Waterloo Maple (“Maplesoft”), appears to be written in the worst language for numerics processing (Java), claims to be more symbolically powerful than Mathematica, and pretends to be fast, functional and syntactically consistent. It has an especially bizarre syntax that tries to unify the Wirthian school of language design (a side-effect of the era it was developed, I suppose) with “normal” mathematical syntax, which has fantastic inconsistencies anyway.
By comparison, the formally-defined language of Mathematica (known as “Wolfram”) appears to be heavily influenced by Lisp in its ability to fully unroll and manipulate symbolic expressions as data structures using normal techniques (if I ask for the 0th part of an expression, I get the expression head, and I can then set it to apply different functions, for instance). Mathematica’s mathematical operators make more sense from a computer science perspective (==
for equality tests, as opposed to Maple’s =
; and =
for assignment, as opposed to Maple’s :=
) and the syntax isn’t ambiguous about function definition, which smells very Pascal indeed.
In fact, if you consider the Maple language, you’ll find glaring problems with it. As M.T. Khan and W. Schreiner noted in Khan, Schreiner, “On Formal Specification of Maple Programs” and Khan, Schreiner, “Towards the Formal Specification and Verification of Maple Programs”, you can’t formally verify, let alone specify, the Maple language due to its glaring inconsistencies (and sure, you will almost certainly run into incompleteness problems in describing the system in itself) and its arcane and neurotic syntax.
By comparison, of course, the Wolfram language in Mathematica just so happens to be self-consistent (if not perfectly complete).
And, of course, Mathematica is actually under active development, which is a damn’ sight more than can be said for Maple, which appears to be slowly rotting.