Modula-2
Structured procedural language introduced by Niklaus Wirth in 1979, based on his earlier Pascal language but adds modular and incremental compilation, and a number of "programming in the large" features.
Modula 2 was hugely influential in the field of informatics and at the least 50 other languages have been based on it in addition to having a direct or indirect influence on languages like Basic, Java, C# and Object Pascal, amongst the more notable languages that have been based on M2 are Modula 3, Parallaxis, Yafl, Oberon, Oberon-2, IEC61131, Umbriel, Component Pascal and Zonnon.
A list of OS/2 implementations of Modula 2
- Canterbury Modula 2 - Discontinued
- Gardens Point Modula 2 Was available in both Commercial and Open Source variants - Discontinued.
- Logitech Modula-2 - Discontinued.
- Pecan UCSD Pascal - Add on package for the Pascal system, 16 bit OS/2 only - Discontinued.
- Stony Brook Professional Modula-2 - 16 bit only - Discontinued
- TopSpeed Modula-2 - 16 bit only - Discontinued
- XDS-x86 Modula 2 - Discontinued
A list of DOS implementations of Modula 2
- FTL Modula 2 - Discontinued
- FST Modula 2 - Discontinued - Freeware
- Gardens Point Modula 2 Was available in both Commercial and Open Source variants - Discontinued.
- Logitech Modula-2 - Discontinued - BTW the first Logitech mouse was made to support this development system.
- M2M-PC System - Discontinued, source available. Variant of the original m-code compiler from ETH.
- Pecan UCSD Pascal - Add on package for the DOS hosted UCSD Pascal system - Discontinued.
- TopSpeed Modula-2 - Discontinued
- Stony Brook Professional Modula-2 - Discontinued
- XDS-x86 Modula 2 - Discontinued
A list of Modula 2 implementations that run under Win-OS/2
- Stony Brook Professional Modula-2 - Discontinued
A list of Modula-2 implementations that run under Java
- Canterbury Modula-2 for Java - Discontinued
- modula2jcc - Current - Open source.
Editor or IDE support
- ftp://hobbes.nmsu.edu/pub/os2/dev/modula/m2emacs.zip Modula-2 editing support for OS/2 Emacs
Publications
- A list of Modula 2 Books by Peter Moylan Outdated but fairly comprehensive up until the latter half of the 90's
- Niklaus Wirth: Programming in Modula-2 reprint of the third edition.
- Herbert Schildt: Advanced MODULA-2: Programming and Techniques - ISBN-13: 9780078812453 - (1986) 300 pages.
Articles
- Jean-Pierre Dezaire: FileIO for COCO compiler generator implemented for Canterbury Modula 2.
- BNF of the Modula-2 Programming Language BNF = Backus Naur Form = Backus Naur notation.
- L. Geissmann: Separate Compilation in Modula-2 and the Structure of the Modula-2 Compiler on the Personal Computer Lilith
Tutorials and other learning material
- Richard J. Sutcliffe: Modula-2: Abstractions for Data and Programming Structures Oriented towards institutional learning rather than self help and uses ISO M2, but fairly recent.
- Dr. Mantis Cheng: A Gentle Introduction to Modula-2 A basic introduction to M2 that assumes some prior programming knowledge. Made for TopSpeed Modula-2 but uses fairly standard syntax.
Standards
There are five basic variations of the Modula 2 standard, the first four are simply the four editions of the book "Programming in Modula 2" by Niklaus Wirth and are commonly known as PIM1, PIM2 and so on, the fifth is an ISO standard called ISO 10514-1 that extends the language somewhat and in addition to the standard proper there have been some optional additions to it since it was originally submitted, but the additions are rarely implemented.
- PIM1 Original from 1979, no compiler apart from the original ETH m-code compiler is known to have implemented this version.
- PIM2 A few DOS, UCSD and CP/M compilers implemented this standard, although most DOS compilers got upgraded to PIM3.
- PIM3 The third edition is by far the most popular amongst compiler makers, who by and large shun PIM4.
- PIM4 The fourth edition, very few compilers implement this variant but one notable exception is the native OS/2 compiler Canterbury Modula-2. A HTML version of Wirth's fourth edition of "Programming in Modula-2" is available here
- ISO10514-1 ISO standard Modula 2, slightly controversial since it adds quite a bit to the language, but most modern compilers implement this version. Adds a standardised library.
- ISO10514-2 Adds an OOP layer
- ISO10514-3 Adds generics