Modula-2 Language
_________________________________________________________________________
Modula-2 was designed and released in the '70s by Niklaus Wirth as the "serious' language for large application and system software to follow up on the "teaching" language, Pascal, that he had worked on in the 60's and 70's.
The major design idea was to foster reduction in complexity via "information hiding" while at the same time providing the programmer with all necessary tools for low level programming within the framework of a strongly typed language.
The public interface of a software module (which is the DEFINITION MODULE) is published (and can be developed) separately from the code itself (which is the IMPLEMENTATION MODULE).
If changes, or even major revisions of the code are limited to the Implementation Module, they need not propagate to other code that uses your module. Client code can see only what is in the Definition Module.
Modula-2 thus provides an ideal platform for "Abstract Data Types": an ADT is a programmer-defined object type along with a collection of functions providing the complete set of allowable operations on the objects of that type.
The ADT approach fosters programming with objects, though some important features of true Object Oriented Programming are conspicuously missing: ADT objects themselves have no initialization and termination routines (though Modules do), and there are no inheritance relationships.
In the 90's, an ISO language standard for Modula-2 was developed and published (ISO/IEC 10154-1) which defined the language in detail, and added a few things without materially changing Modula-2's basic design and elegance. Notably, this included a module termination routine,
a well defined mechanism for exception trapping and recovery, and a standard IO library that all implementations are expected to provide.
In addition, two standard extensions defining how a language implementor should, if desired, provide an extended language in two areas: One defined language additions to provide true Object Oriented Modula-2 (with Classes, inheritance, and garbage collection).
The other was a Generic Programming Extension, to provide template-like modules that still maintain type checking safety.
Modula-2 Links
-