Mathematics and Computer Language

Computer programs are often "end products" -- like books, they remain relatively fixed after creation. The design and implementation of large software projects are most often in the hands of teams of experts in computer programming. The end user is not interested in the programming language or the developmental techniques, and, in fact, these things become invisible in the end product.

Many mathematicians, however, use computer programs to represent and manipulate mathematics. They are used in research projects and in instruction. The abundance of inexpensive and powerful computers has fostered growth of the experimental side of mathematics. The choice of language can be a significant factor for ease in development, maintenance, and modification of software systems targeted at specialized research and instructional areas.
The user, designer, and implementer are often the same person. We need to make it feasible for a mathematician, whose expertise lies in other areas, to become involved in the task of creating languages and software systems.

A good approach for developing software is to use evolutionary (or "middle out") design. A skeleton system is written to meet the initially known requirements for the work. As research progresses the skeleton is "fleshed out" and modified to meet the emerging needs of the project.
We need, for this work, a language and methodology that allow software to be developed and modified easily.

A source of difficulty in programming with conventional general-purpose languages is the gap between the means of expression provided by the language and the concepts of the subject area. We can reduce this gap by allowing a mathematician to create a language specifically designed for a particular subject area. In the realm of conventional compiled languages this would require writing a custom compiler – a formidable task. I have used Forth as a base language. Forth is a language suited for writing application-oriented languages. It provides the moral equivalent of writing a compiler, but is viable for a working mathematician.

The JOMA article "Evolution of a Computer Application" introduces the Forth language and illustrates the evolutionary approach. It uses, as an example, the development of Groups32 over a ten year period. [ JOMA article    preprint(pdf) ]