This document is a guide to the programming language EXALT (EXpression and ALgorithm Translator).
The original name of this language was YAL (Yet Another Language). However, that name, serving as the acronym for precisely that phrase, was already in use. My second choice for a name was FALCON (Formula and ALgorithm COmpilation and Notation), But I subsequently learned that this name has been taken, for a language whose name means Fast Array Language COmpilatioN, as part of the Polaris computer project.
Actually, it's worse than I thought, as someone else was inspired by Python to design another language called Falcon, this one apparently not acronymically named. And then there's the paper by Yi-Ke Guo, concerning the language FALCON (Functional And Logic language with CONstraints). |
EXALT is a procedural language, like BASIC, PL/I, Pascal, and many others, and shares many similarities with other such languages.
Most of the features of FORTRAN and APL have been incorporated into EXALT, as have features from several other languages, including LISP. Data structures are included, although in a somewhat limited form; and several control structures suitable for structured programming are present. The size of EXALT may, in fact, appear somewhat excessive by current standards. However, by specifying an official form for a wide variety of constructs, the language description provides for compatibility as extensions are made to subset implementations.
Explicit indication of parallel processing algorithms has been provided for the three major parallel processing architectures: vector processors (which are handled simply by allowing direct array arithmetic, as in APL and PL/I), MIMD machines, and the new dataflow architecture. Information sharing between processes in the MIMD model is handled both by a very simple mechanism for locking and unlocking certain special variables for assignment, and by the creation of special tasks for communications in a form to some extent intermediate between the monitor and CSP models.
The syntax of the language has been chosen so as to reduce the number of keystrokes required to enter programs:
These characteristics should benefit programmers; they will certainly simplify and speed parsing of EXALT programs.
It will be noted that in some ways EXALT bears a striking resemblance to FORTRAN IV (or FORTRAN 66), although there are clear differences in syntax between the two languages. Not only is this intentional, but it is also intended that (in mainframe environments, where a standard FORTRAN implementation exists) programs in FORTRAN are to be able to call subprograms in EXALT and vice versa, although with some care on the part of the EXALT programmer, without the need to specify the use of a special calling sequence. This decision has meant that some difficulties in the calling of separately compiled procedures have to be faced by the programmer. A special mode of EXALT compilation, called EASY mode, is only partly suggested here, which is intended to allow use of the language while avoiding these complications.
It is intended that EXALT will lend itself to the generation of efficient object code, although features which require significant overhead are available for use when required. Broad facilities for FORTRAN's traditional application area, scientific calculation, are provided. As well, adequate facilities for commercial applications, including a database management mechanism, are provided. So is string and list processing (arrays of MUTABLE can resemble lists; a LIST data type is also provided, but has a different purpose), and mechanisms related to embedded programming such as exception handling and process communications.
Implementors are required to fully specify the internal form of variables for the use of assembly language programmers in the case of any implementation on machines where such programming is at all possible.
The similarity of EXALT to FORTRAN, and the emphasis on compatibility and efficiency, as well as the flexibility it allows, should enable EXALT to be of service to programming areas where other languages which include modern data and control structures have not made the desired inroads.
This is not a claim that EXALT is an elegant or structured language; EXALT is a permissive language which includes facilities for structured programming, but also includes older constructs (even a version of the FORTRAN assigned GO TO, as well as an extended EQUIVALENCE statement) which tend to be frowned upon in some quarters these days.