A high-level programming language designed by Niklaus Wirth at ETH in 1978. It is a derivative of Pascal with well-defined interfaces between modules, and facilities for parallel computation. Modula-2 was developed as the system language for the Lilith workstation.
The central concept is the module which may be used to encapsulate a set of related subprograms and data structures, and restrict their visibility from other portions of the program. Each module has a definition part giving the interface, and an implementation part.
The language provides limited single-processor concurrency (monitors, coroutines and explicit transfer of control) and hardware access (absolute addresses and interrupts). It uses name equivalence.
DEC FTP archive (ftp://gatekeeper.dec.com/.1/DEC/Modula-2/m2.tar.Z).
[“Programming in Modula-2”, N. Wirth, Springer 1985].
L. Cardelli et al, DEC and Olivetti, 1988. A descendant of Modula-2+ and Cedar, designed for safety and simplicity. Objects, generics, threads, exceptions and garbage collection. Modules are explicitly safe or unsafe. As in Mesa, any set of variables can be monitored. No multiple inheritance, no operator overloading. Uses structural equivalence. “Modula-3 Report”, Luca Cardelli […]
Machine-independent intermediate language for compilation of Modula-3*. “Modula-3pi Language Definition”, E.A. Heinz, TR, U Karlsruhe 1993.
“Modula-P: A Language for Parallel Programming Definition and Implementation on a Transputer Network”, R. Hoffart et al, IEEE Conf Comp Langs 1992.
Adds a Prolog layer to Modula-2. “Modula-Prolog: A Software Development Tool”, C. Muller IEEE Software pp.39-45 (Nov 1986).