Jump to content

Modula-2: Difference between revisions

From EDM2
No edit summary
 
(47 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Image:Niklaus-wirth.jpg|thumb|'''Niklaus Emil Wirth'''<br>The designer of Pascal, Modula-2 & Oberon]]
Structured procedural systems language introduced by Niklaus Wirth in 1979, based on his earlier '''Modula''' language that in turn had taken its structure and keywords from the even earlier [[Pascal]] teaching language, but M2 adds systems programming features, modular and incremental compilation, and a number of "programming in the large" features, but loses some of the concurrent features of the earlier Modula.
Structured procedural systems language introduced by Niklaus Wirth in 1979, based on his earlier '''Modula''' language that in turn had taken its structure and keywords from the even earlier [[Pascal]] teaching language, but M2 adds systems programming features, modular and incremental compilation, and a number of "programming in the large" features, but loses some of the concurrent features of the earlier Modula.


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.
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 are based on M2 are [[Modula 3]], Parallaxis, [[Yafl]], [[Oberon]], [[Oberon-2]], IEC61131, Umbriel, Component Pascal and Zonnon.


Modula-2 was more popular on the 68000 based computers than it was in the Intel world, in fact for a time it was more popular for professional software development than [[C]], in particular on the [[Atari ST]] and single board systems where it was frequently used for server OS development. The reasons for this appear to be the quality of the tools available, [[ETH]] had a [[public domain]] Modula-2 compiler available that had an excellent 68000 backend developed from the original [[NS32000]] backend that the first M2 compiler/OS toolchain was developed for, and a number of third parties took that compiler and enhanced it for a number of systems, while ETH had an i86 backend it was nowhere as good as the 680xx one.
Modula-2 was more popular on the 68000 based computers than it was in the Intel world and for a time it was more popular for professional software development on that processor family than [[C]], in particular on the [[Atari ST]] and single board systems where it was frequently used for server OS development. The reasons for this appear to be the quality of the tools available, ETH had a [[public domain]] Modula-2 compiler available that had an excellent 68000 and NS32000 backends, and a number of third parties took that compiler and enhanced it for a number of systems.


By the time the Intel 386 arrived on the scene Wirth had however lost interest in M2 and had started concentrating on [[Oberon]] so there never was an equivalent PD release of the ETH M2 compiler for that architecture for smaller firms to build on, but toolkits nonetheless crop up in the unlikeliest of places, [[IBM]] for instance had an OS/2 hosted compiler that is believed to have originated on their RT 68000 system (IBM System 9000), that was used to develop parts of the original [[AS/400]] operating system (Probably parts of the I/O system). Note that this was not related to the later OS/2 based [[IBM Oberon-2]] system that was an independent development.
By the time the Intel 386 arrived on the scene Wirth had however lost interest in M2 and had started concentrating on [[Oberon]] so there never was an equivalent PD release of the ETH M2 compiler for that architecture for smaller firms to build on, but toolkits nonetheless crop up in the unlikeliest of places, [[IBM]] for instance had an OS/2 hosted compiler that is believed to have originated on their RT 68000 system (IBM System 9000), that was used to develop parts of the original [[AS/400]] operating system (Probably parts of the I/O system). Note that this was not related to the later OS/2 based [[IBM Oberon-2]] system that was an independent development.


==A list of OS/2 implementations of Modula 2==
==OS/2 implementations==
* [[Canterbury Modula 2 - Oberon-2|Canterbury Modula 2]] - Discontinued
* [[IBM Modula-2]] - Internal use only, never released - Used for cross development of portions of the [[OS/400]]
* [[Gardens Point Modula 2]] - Was available in both Commercial and Open Source variants - Discontinued.
* [[IBM Modula-2]] - Internal use only, never released - Used for cross development of portions of the [[AS/400]] OS
* [[Logitech Modula-2]] - Discontinued
* Magnum Modula-2 (Greiner Corp.) - Discontinued
* [[M2CC/C]] - Commercial - 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.
* [[Stony Brook Professional Modula-2|Stony Brook QuickMod]] - 16 bit only - Discontinued.
* [[TopSpeed Modula-2]] - 16 bit only - Discontinued
* [[XDS-x86 Modula 2]] - Commercial - Discontinued


====Libraries====
''16-bit''
*[[PMI DxfOut]] - AutoCAD files output - Commercial - Discontinued
* [[Logitech Modula-2]]
* [[Magnum Modula-2]]
* [[M2CC/C]]
* [[Pecan UCSD Pascal]] - Add on package for the Pascal system
* [[Stony Brook Professional Modula-2]], Stony Brook QuickMod
* [[TopSpeed Modula-2]]


*[[PMI DynaMatrix]] - Math/Engineering/Matrices - Commercial - Discontinued
''32-bit''
* [[Cabot UCSD Pascal]]
* [[Canterbury Modula 2 - Oberon-2|Canterbury Modula 2]]
* [[Gardens Point Modula-2]] - Was available in both Commercial and Open Source variants
* [[XDS-x86 Modula 2]]


*[[PMI EEv]] - Algebraic expression evaluator - Commercial - Discontinued
;Libraries
*[[PMI Macro2]] - C like macro pre-processor - Commercial - Discontinued
''Open Source''
* [[Numerical Analysis Library]]
* [[PMOS]]
''Commercial''
* [[PMI DxfOut]] - AutoCAD files output
* [[PMI DynaMatrix]] - Math/Engineering/Matrices
* [[PMI EEv]] - Algebraic expression evaluator
* [[PMI Macro2]] - C like macro pre-processor
* [[PMI ModBase]] - dBase III/[[xBase]] interface and file compatibility
* [[PMI Repertoire]] - Low Level and system interface library


*[[PMI ModBase]] - dBase III/[[xBase]] interface and file compatibility - Commercial - Discontinued
;Unfinished projects
 
*[[Net Modula2]]
*[[PMI Repertorie]] - Low Level and system interface library - Commercial - Discontinued
*Modula-2 Algebra System (MAS) - Open source


====Notable but unfinished projects====
;Editors support
*[[Net Modula2]]
* [[Boxer]] - Modula-2 syntax colouring support included by default
====OS/2 text & programmers editors with Modula-2 support====
* [[BRIEF]] - M2 support included by default
* [[Boxer]] - Modula-2 syntax colouring support included by default - Commercial - Discontinued
* [[Emacs]] - With an optional mode download: {{FileLink|EMACS_Modula-2_1998-07-18.zip}}
* [[BRIEF]] - M2 support included by default - Commercial - Discontinued
* [[Emacs]] - With an optional mode download from [[Hobbes]] et al., see the links section on the Emacs page.
* [[Enhanced Editor]] - Has syntax highlighting, auto-formatting and automatic code summary for Modula-2.
* [[Enhanced Editor]] - Has syntax highlighting, auto-formatting and automatic code summary for Modula-2.


==A list of DOS implementations of Modula 2==
==DOS implementations==
* [[FTL Modula 2]] - Discontinued
*[[Fitted Software Tools Modula-2]] - Freeware
* [[FST Modula 2]] - Discontinued - Freeware
*FTL Modula-2 (Workman & Associates)
* [[ITC STS-XP]] - Commercial - Discontinued
* [[ITC Modula-2 Software Development System]]
* [[Gardens Point Modula 2]] Was available in both Commercial and Open Source variants - Discontinued.
* [[Gardens Point Modula 2]] Was available in both Commercial and Open Source variants
* [[Logitech Modula-2]] - Discontinued - BTW the first Logitech mouse was made to support this development system.
* [[Logitech Modula-2]] - the first Logitech mouse was made to support this development system.
* [[M2CC/C]] - Commercial - Discontinued.
* [[M2CC/C]]
* [http://www.cfbsoftware.com/modula2/ M2M-PC System] - Discontinued, source available. Variant of the original m-code compiler from ETH.
* [http://www.cfbsoftware.com/modula2/ M2M-PC System] - 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.
* M2SDS Modula-2 (Interface Technologies Inc.)
* [[Stony Brook Professional Modula-2]] - Discontinued
* PCollier Modula-2
* [[Stony Brook Professional Modula-2|Stony Brook QuickMod]] - Commercial - Discontinued.
* [[Pecan UCSD Pascal]] - Add on package for the DOS hosted UCSD Pascal system
* [[TaylorModula-2]] - Commercial - Discontinued
* [[Stony Brook Professional Modula-2]], Stony Brook QuickMod
* [[TopSpeed Modula-2]] - Commercial - Discontinued
* Taylor Modula-2 (Tayloris Software AG)
* [[XDS-x86 Modula 2]] - Discontinued
* [[TopSpeed Modula-2]]
 
* [[XDS-x86 Modula 2]]
====DOS text & programmers editors with Modula-2 support====
* [[Boxer]] - Modula-2 syntax colouring support included by default - Commercial - Discontinued
* [[BRIEF]] - M2 support included by default - Commercial - Discontinued


==A list of Modula 2 implementations that support Win-OS/2==
;Libraries
*[[Stony Brook Professional Modula-2]] - Discontinued
* [[Numerical Analysis Library]] - Open Source
* [[TopSpeed Modula-2]] - Commercial - Discontinued - Cross compilation from DOS or OS/2 only
* [[PMI DxfOut]] - AutoCAD files output
* [[PMI DynaMatrix]] - Math/Engineering/Matrices
* [[PMI EEv]] - Algebraic expression evaluator
* [[PMI Macro2]] - C like macro pre-processor
* [[PMI ModBase]] - dBase III/[[xBase]] interface and file compatibility
* [[PMI Repertoire]] - Low Level and system interface library
* [[PMOS]] - Open Source


==A list of Modula-2 implementations that run under Java==
;Editor support
*[[Canterbury Modula-2 for Java]] - Discontinued
* [[Boxer]] - Modula-2 syntax colouring support included by default
*[https://code.google.com/p/modula2jcc/ modula2jcc] - Current - Open source.
* [[BRIEF]] - M2 support included by default


==Editor or IDE support==
==Java implementations==
* ftp://hobbes.nmsu.edu/pub/os2/dev/modula/m2emacs.zip Modula-2 editing support for OS/2 [[Emacs]]
*[[Canterbury Modula-2 for Java]]
*[https://code.google.com/p/modula2jcc/ modula2jcc] - Open source.


==Publications==
==Publications==
* [http://www.pmoylan.org/pages/m2/m2biblio.html 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'' – Springer Verlag 1985, ISBN 3-642-83567-8
* Günter Dotzel: [http://www.modulaware.com/history/M2ref.pdf MODULA BIBLIOGRAPHY] - Very old and outdated (1986), however at the same time very comprehensive.
* Kaare Christian: ''A Guide to Modula-2'' – Springer Verlag 1985, ISBN 3-540-96242-5
* Niklaus Wirth: [http://link.springer.com/book/10.1007%2F978-3-642-96878-5 Programming in Modula-2] reprint of the third edition.
* Herbert Schildt: ''Advanced MODULA-2: Programming and Techniques'' – Prentice Hall 1987, ISBN 0-07-881245-3
* Herbert Schildt: Advanced MODULA-2: Programming and Techniques - ISBN-13: 9780078812453 - (1986) 300 pages.
* [[John Gough]]; George Mohay: ''Modula-2: A Second Course in Programming'' – Prentice-Hall 1988, ISBN 0724808280


;Articles
;Articles
* Niklaus Wirth: [//www.inr.ac.ru/~info21/pdf/Modula-Oberon-June-2007.pdf Modula-2 and Oberon] - Historical overview
* Jean-Pierre Dezaire: [http://www.modula2.org/projects/FileIO_4_MOD32.php FileIO for COCO compiler generator] implemented for [[Canterbury Modula 2 - Oberon-2|Canterbury Modula 2]].
* Jean-Pierre Dezaire: [http://www.modula2.org/projects/FileIO_4_MOD32.php FileIO for COCO compiler generator] implemented for [[Canterbury Modula 2 - Oberon-2|Canterbury Modula 2]].
* [http://cui.unige.ch/isi/bnf/Modula2/BNFindex.html BNF of the Modula-2 Programming Language] BNF = Backus Naur Form = Backus Naur notation.
* [//cui.unige.ch/isi/bnf/Modula2/BNFindex.html BNF of the Modula-2 Programming Language] BNF = Backus Naur Form = Backus Naur notation.
* L. Geissmann: [http://www.cfbsoftware.com/modula2/ETH7286.pdf Separate Compilation in Modula-2 and the Structure of the Modula-2 Compiler on the Personal Computer Lilith]
* L. Geissmann: [//www.cfbsoftware.com/modula2/ETH7286.pdf Separate Compilation in Modula-2 and the Structure of the Modula-2 Compiler on the Personal Computer Lilith]
* [http://ecommons.cornell.edu/handle/1813/7450 Modula and the Design of a Message Switching Communication System] - This and sister publication [http://ecommons.cornell.edu/handle/1813/7451 The Design of Parallel Systems: An Application and Evaluation of Modula] are historically interesting since it is one of the few instances of paper that describe actual use of Modula, the predecessor to Modula-2.
* [//ecommons.cornell.edu/handle/1813/7450 Modula and the Design of a Message Switching Communication System] - This and sister publication [//ecommons.cornell.edu/handle/1813/7451 The Design of Parallel Systems: An Application and Evaluation of Modula] are historically interesting since it is one of the few instances of paper that describe actual use of Modula, the predecessor to Modula-2.


;Tutorials and other learning material
;Tutorials and other learning material
* Richard J. Sutcliffe: [http://www.arjay.bc.ca/Modula-2/Text/index.html Modula-2: Abstractions for Data and Programming Structures] Oriented towards institutional learning rather than self help and uses ISO M2, but fairly recent.
* Richard J. Sutcliffe: [http://www.arjay.bc.ca/Modula-2/Text/index.html 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: [http://www.csc.uvic.ca/~mcheng/360/notes/LANG.html 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.
* Dr. Mantis Cheng: [https://freepages.modula2.org/gintro/A%20Gentle%20Introduction%20to%20Modula-2.htm 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.


;Reviews
;Reviews
* L. J. Ribar:OS/2 Programming goes Modula-2 - Computer Language magazine Nov. 1990 - pages 83 to 89.
*D. Taylor: ''Software Reviews: Metrowerks Modula-2 PSE'' - Computer Language (Nov 1990) - pp 91-95
* A. Schulman: [https://archive.org/details/byte-magazine-1989-10 Modula-2 and OS/2 Join Forces] - BYTE magazine August 1989 - Pages 171 to 174.
*B. R. Anderson: ''Stony Brook Modula-2'' - Journal of Pascal, Ada & Modula-2 (May/Jun 1990) - pp 69-73
* D. Taylor: Software Reviews: Metrowerks Modula-2 PSE - Computer Language magazine Nov. 1990 - pages 91 to 95.
*S. R. Ladd: ''Modula-2 Compilers: New Kids on the Block Mature'' - Computer Language (Mar 1989) pp 99-110
* D. A. Righter: Programmer's Corner: TopSpeed Modula-2 with Object Extensions. - Journal of Pascal, Ada & Modula-2 July/August 1990  - pages 56 58.
* B. R. Anderson: Stony Brook Modula-2 - Journal of Pascal, Ada & Modula-2 May/June 1990 - Pages 69 to 73.
* S. R. Ladd,: Modula-2 Compilers: New Kids on the Block Mature. - Computer Language magazine March 1989 pages 99 to 110.
* Joel Pitt: [https://books.google.co.uk/books?id=1y8EAAAAMBAJ&pg=PA55 Volition Systems' Modula-2 programming language] - A review of the Volition Systems Modula-2 that became part of [[Pecan UCSD Pascal]] - From Infoworld magazine - 1983
* M. E. Haltiwanger: Software Reviews. -  Journal of Pascal, Ada & Modula-2 Januar/Februar 1989 - pages 54-56 (Reviews TopSpeed 1.12)


;Introductions
;Introductions
* Jim Merritt: [https://books.google.co.uk/books?id=zeMDAAAAMBAJ&pg=PA52 Modula-2 language is worth it] - From Popular Mechanics magazine 1984
* Jim Merritt: [http://books.google.com/books?id=zeMDAAAAMBAJ&pg=PA52 Modula-2 language is worth it] - Popular Mechanics 1984


==Links==
==Links==
* [http://www.pmoylan.org/pages/m2/modula2.html Peter Moylan's Modula-2 page] - Extensive collection of links and info on Modula-2 and OS/2.  
* [http://www.pmoylan.org/pages/m2/m2biblio.html A list of Modula 2 Books by Peter Moylan] Outdated but fairly comprehensive until the latter half of the 90s
* Günter Dotzel: [http://www.modulaware.com/history/M2ref.pdf Modula Bibliography] - Very old and outdated (1986), however at the same time very comprehensive.
* [http://www.pmoylan.org/pages/m2/modula2.html Peter Moylan's Modula-2 page] - Extensive collection of links and info on Modula-2 and OS/2.
* [http://www.modula2.org/ Modula-2 Org] - M2 info, links and a ISO M2 tutorial.
* [http://www.modula2.org/ Modula-2 Org] - M2 info, links and a ISO M2 tutorial.
* [http://www.modulaware.com/mdltr_.htm The MODulator] - Modula-2 and Oberon articles from the gents behind the ModulaWare company in Switzerland, used to be a paper newsletter back in the day.
* [http://www.modulaware.com/mdltr_.htm The ModulAtor] - Modula-2 and Oberon articles from the gents behind the ModulaWare company in Switzerland, used to be a paper newsletter back in the day.
* [http://zx.oberon2.ru Oberon2.ru] - Massive Russian site dedicated to all things Wirthian, forum in particular strong. Primarily targeted towards [[Oberon]] but quite a lot of M2 info there as well.


====USENET====
;USENET
* [news:comp.lang.modula2 comp.lang.modula2] - Very low volume - Go to the [https://groups.google.com/forum/#!forum/comp.lang.modula2 Google groups version] if you or your ISP are newsgroup challenged in some way.
* news:comp.lang.modula2 - Very low volume


==Standards==
==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.
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''' [http://www.fh-jena.de/~kleine/history/languages/Wirth-Modula2.pdf Original from 1979], no compiler apart from the original ETH m-code compiler is known to have implemented this version.
* '''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.
* '''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, biggest change is better support for multi-dimensional arrays.  
* '''PIM3''' The third edition is by far the most popular amongst compiler makers, who by and large shun PIM4, biggest change is better support for multi-dimensional arrays.  
* '''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 [http://freepages.modula2.org/report4/modula-2.html available here]
* '''PIM4''' The fourth edition, very few compilers implement this variant but one notable exception is the native OS/2 compiler [[Canterbury Modula-2]]. An HTML version of Wirth's fourth edition of "Programming in Modula-2" is [http://freepages.modula2.org/report4/modula-2.html 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-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-2''' Adds an OOP layer
* '''ISO10514-3''' Adds generics  
* '''ISO10514-3''' Adds generics  


[[Category:Programming Languages]][[Category:Modula-2]]
[[Category:Programming Languages]][[Category:Modula-2]]

Latest revision as of 15:11, 27 January 2024

Niklaus Emil Wirth
The designer of Pascal, Modula-2 & Oberon

Structured procedural systems language introduced by Niklaus Wirth in 1979, based on his earlier Modula language that in turn had taken its structure and keywords from the even earlier Pascal teaching language, but M2 adds systems programming features, modular and incremental compilation, and a number of "programming in the large" features, but loses some of the concurrent features of the earlier Modula.

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 are based on M2 are Modula 3, Parallaxis, Yafl, Oberon, Oberon-2, IEC61131, Umbriel, Component Pascal and Zonnon.

Modula-2 was more popular on the 68000 based computers than it was in the Intel world and for a time it was more popular for professional software development on that processor family than C, in particular on the Atari ST and single board systems where it was frequently used for server OS development. The reasons for this appear to be the quality of the tools available, ETH had a public domain Modula-2 compiler available that had an excellent 68000 and NS32000 backends, and a number of third parties took that compiler and enhanced it for a number of systems.

By the time the Intel 386 arrived on the scene Wirth had however lost interest in M2 and had started concentrating on Oberon so there never was an equivalent PD release of the ETH M2 compiler for that architecture for smaller firms to build on, but toolkits nonetheless crop up in the unlikeliest of places, IBM for instance had an OS/2 hosted compiler that is believed to have originated on their RT 68000 system (IBM System 9000), that was used to develop parts of the original AS/400 operating system (Probably parts of the I/O system). Note that this was not related to the later OS/2 based IBM Oberon-2 system that was an independent development.

OS/2 implementations

  • IBM Modula-2 - Internal use only, never released - Used for cross development of portions of the OS/400

16-bit

32-bit

Libraries

Open Source

Commercial

Unfinished projects
  • Net Modula2
  • Modula-2 Algebra System (MAS) - Open source
Editors support

DOS implementations

Libraries
Editor support
  • Boxer - Modula-2 syntax colouring support included by default
  • BRIEF - M2 support included by default

Java implementations

Publications

  • Niklaus Wirth: Programming in Modula-2 – Springer Verlag 1985, ISBN 3-642-83567-8
  • Kaare Christian: A Guide to Modula-2 – Springer Verlag 1985, ISBN 3-540-96242-5
  • Herbert Schildt: Advanced MODULA-2: Programming and Techniques – Prentice Hall 1987, ISBN 0-07-881245-3
  • John Gough; George Mohay: Modula-2: A Second Course in Programming – Prentice-Hall 1988, ISBN 0724808280
Articles
Tutorials and other learning material
Reviews
  • D. Taylor: Software Reviews: Metrowerks Modula-2 PSE - Computer Language (Nov 1990) - pp 91-95
  • B. R. Anderson: Stony Brook Modula-2 - Journal of Pascal, Ada & Modula-2 (May/Jun 1990) - pp 69-73
  • S. R. Ladd: Modula-2 Compilers: New Kids on the Block Mature - Computer Language (Mar 1989) pp 99-110
Introductions

Links

USENET

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, biggest change is better support for multi-dimensional arrays.
  • PIM4 The fourth edition, very few compilers implement this variant but one notable exception is the native OS/2 compiler Canterbury Modula-2. An 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