The modern computing landscape features a galaxy of programming and data description languages, with new ones introduced continually. New ideas, introduced in one language, find their way into subsequent languages as the landscape evolves. Many important ideas first expressed in mathematical software have found their way into the most widely used general purpose languages. Perhaps one reason for this is that mathematical programming provides a rich domain of challenging, but precisely defined problems. This contrasts with the hard problems in other areas where abstractions are simpler and it is harder to evaluate different approaches. We therefore see mathematical software as a canary in the coal mine of programming languages, providing an advance testing ground for ideas.

We presents our experiences in the design and implementation of several special purpose languages applied to mathematical computing:Maple, Axiom, Aldor, OpenMath, MathML and InkML. These languages have addressed a breadth of problems, ranging from efficient compilation of higher order mathematical abstractions to flexible motion capture of two-dimensional handwriting. In terms of adoption, they range from tens to millions of users with widely differing needs. This talk outlines some of the problems these languages were intended to solve,the new ideas they introduced, and the pragmatic compromises taken along the way.