Aviva Directory » Computers & Internet » Programming » Aldor

Originally known as A#, Aldor was developed as the extension language of the Axiom computer algebra system but is now used largely in other settings.

A factor of its design was that it needed to be expressive enough to capture the high-level objects and relationships that would surface in modern mathematics. It needed to be efficient enough for resource-intensive symbolic and numeric computing needs. It also had to be modular to accommodate large libraries of independently developed facilities that might be used together in any combination. As a result, the formulation of the language attempted to balance the mathematical need for generality and uniformity with the practical demands of symbolic and numeric computation.

As a trade-off, types, and programs are first-class values in Aldor, which may be created and used dynamically. However, the language does require that certain information about the types and function be known before the program is executed.

An optimizing compiler was developed for Aldor. Programs are first compiled into a low-level intermediate language, undergoing a number of optimizing transformations. From this, C, Lisp, or native object code is generated, and interlanguage interfaces support natural linking with C, C++, and Fortran programs. Originally, the Aldor compiler was used to produce libraries for Axiom, but the later emphasis has been on the production of stand-alone programs or modules used in the Maple programming language.

Aldor is a strongly typed functional programming language with a higher order type system and strict evaluation, with all values treated uniformly and memory managed automatically.

There are two levels to the Aldo type system, each belonging to some unique type, known as its domain, and the domains of expression can be inferred statically. Each domain is itself a value belonging to the domain Type. Additionally, domains may belong to a number of subtypes (of Type), known as categories, which can specify properties of domains, such as which operations they export, and are used to specify interfaces and inheritance hierarchies.

The most significant difference between the two-level domain/category model and the single-level subclass/class model is that the domain is an element of a category, while a subclass is a subset of a class. This eliminates some of the problems in the definition of functions with multiple related arguments.

The initial design of the Aldor programming language occurred between 1985 and 1995, with successive implementations, led by Stephen Watt. The language was a compiled extension language for the Scratchpad II system at IBM Research, at which time it was known as A# (A sharp).

In 1990 and 1991, IBM partnered with the Numerical Algorithms Group to release Scratchpad II under the Axiom trademark. The second release of Axiom included the A# compiler. Axiom XL (Axiom extension language) was used as an interim name before it became known as Aldor.

From 1996 to 2000, the Numerical Algorithms Group continued to extend Aldor, with support from the ESPRIT Frisco project, adding a Fortran foreign function interface.

The language draws from several other programming languages, including Ada, C++, CPL, Clu, Fortran, Haskell, Lisp, ML, Pascal, Pebble, and Russel. It also borrowed from an earlier language designed by Richard Jenks and Barry Trager at IBM Research, the main difference being that Aldor is more heavily functional, and dependent types are completely integrated with Aldor so that all expressions have expressible types.

In 2001, an official website was formed to distribute the language independently of Axiom.

Currently distributed as free and open-source software under the Apache License 2.0, Aldor is compatible with the Linux, Solaris, and Windows operating systems. Sources for Aldor are available for non-commercial purposes under the Aldor Public License Version 2.0 and can be retrieved from the SVN server.



Recommended Resources

Search for Aldor on Google or Bing