Rick Sutcliffe Arjay Books  Arjay   by
  Rick Sutcliffe
Books  
SearchSite Web  FreeFind

Modula-2.com

Modula-2 webring logo Modula-2 Webring
[ List all | Random | <<Prev | Next >> | Join | ]

The Shareware Modula-2 Text

Modula-2 Frequently Asked Questions

What is new in version 2.38 (2012 07 25)?

The most exciting active work on Modula-2 is the R10 project. More information on Modula-2 R10 is now available in 1.11. There are minor changes in several places, including the GNU version update, a cleanup of sections 4.7+ and 2.3+, additions to 1.7.10, 1.17, 3.2, 4.4, 4.9. Section 4.14 on operating systems is new. Excelsior apparently no longer is involved with Modula-2 and those references have been deleted. The StonyBrook compiler, as modified by ADW is now freely available.

What was new in version 2.37 (2011 07 01)?

Two years have passed with only a few comments being made, so little was done here. However, changes have accumulated, so here is a new edition. A link checker revealed some twenty dead or inaccessible links. All have been ruthlessly removed, and some sections renumbered, particularly after 4.8. A new mailing list for Objective Modula-2 is at 2.6. The Amiga Aglet item has been updated. Some additional resource lists have been added after the main bibliography. The GNU information has been updated. ISO compatibility information has been updated. Modula-2 R10 is mentioned in a new question at 1.11.


SUMMARY:

1. Answers to many questions about Modula-2 as a programming notation may be found in the shareware textbook. As always, users should pay the shareware fee. See section 1.4.

2. Answers to most other frequently asked questions about Modula-2 will be collected by Rick Sutcliffe at Trinity Western University and included in this document from time to time as it is revised.

3. Submissions should be mailed to -- rsutc-AT-arjay.bc.ca (modify address in the obvious way)

4. Anyone making a submission guarantees that they have the right to do so (copyright holder, or information in the public domain) and that the information is not from any source whose copyright lies with another.


CONTENTS:

1. WHAT IS MODULA-2?

2. WHERE IS MODULA-2 DISCUSSED?

3. WHERE CAN I GET MODULA-2 COMPILERS?

4. WHERE CAN I GET SOURCE CODE, OTHER INFO?

5. SPECIFIC QUESTIONS ON CODE AND ALGORITHMS

6. WHAT ARE SOME REFERENCE MATERIALS ON MODULA-2?

Appendix: AUTHOR INFORMATION AND DISCLAIMERS


1. WHAT IS MODULA-2?

A. Modula-2 is a programming notation that corrects some of the deficiencies of Pascal. It is suitable for learning programming, for large projects written and maintained in the fashion of professional software engineers, and for real time embedded systems. Modula-2 is small, expressive, easy to learn, and to read.

1.1 Who developed Modula-2?

A. Modula-2 was developed by Niklaus Wirth at ETH in Zurich, Switzerland in the late 70's. Wirth also developed Algol-W, Pascal, Modula, and Oberon and the Lilith computer, a natively Modula-2 machine (see section 1.15).

1.2 Where is this language described?

A. In Programming in Modula-2 3rd edition published by Springer-Verlag in 1985. For the purposes of distinguishing this from later variants, this description will be referred to herein as classical Modula-2.

1.3 How do you pronounce Herr Wirth's name?

A. It is incorrect to call him by his value (worth.) Instead his name is veart.

1.4 Can I get a simple introduction to ISO Modula-2?

Yes, the latest revised and corrected edition of the shareware text as of 2004 is at http://www.modula-2.com/ Mirror (for the text, not the FAQ): TWU http://www.csc.twu.ca/rsbook/index.html

1.5 How does Modula-2 fit into the language zoo?

A. It is a descendent of Pascal and Modula, and one predecessor of Modula-2+, Modula-2*, Modula-3, Modula-2 R10, Oberon, Oberon-2, and various object oriented versions of these. The latter languages are not replacements for Modula-2, merely later notations in the same family, having strengths and weaknesses of their own. Modula-2 is sometimes classified with Ada and C++ as the trio of modern languages in view of their expressive power. Modula-2 is smaller and more readable than either. Modula-2 strongly influenced later versions of Pascal and Python.

1.6 What are the differences between Modula-2 and Standard Pascal?

A. Modula-2 has separately compiled library modules, and makes much less use of blocks (begin...) than Standard Pascal. Identifiers are case sensitive; there is no goto label; and I/O is in libraries rather than built in. The IF statement is more versatile; and there are facilities for concurrent programming via coroutines. Extended Pascals may have some of these features.

1.7 What is ISO Standard Modula-2?

A. A committee of ISO JTC1/SC22/WG13 with delegates from several countries met from 1987 to work on a standard description of Modula-2 and a set of standard library modules.

A2. The official home of the ISO Modula-2 working group WG13 is at http://sc22wg13.twi.tudelft.nl/

1.7.1 What is the status of ISO Standard Modula-2?

A. The international standard (IS 10514) was voted on and is official. The Object oriented extensions and Generic extensions were also voted on and are official.

1.7.2 Where can I get the Modula-2 standard?

A1. Contact your national standards body or ISO (the publisher.)

A2. For a slightly older version, try looking in ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/standard/draft4/

1.7.3 What format is the standard document in?

A. Latex.

1.7.4 Who was the convenor of the standards group (WG13)?

A. Martin Schoenhacker of Vienna was the last convenor.

1.7.5 When was the last WG13 meeting?

A1. It was March 17-18 1997 in Linz, Austria. For more details, follow http://sc22wg13.twi.tudelft.nl/docs/meetings.html

1.7.6 When is the next WG13 meeting?

A1. No meeting is currently on the schedule. One may be held if necessary to do routine maintenance on the standards, but at this time WG13 is in maintenance mode--not operating actively.

1.7.7 Will I be able to read the standard?

A1. The concrete syntax is written in a variation of EBNF (Extended Backus-Naur Formalism) and should be accessible to most.

A2. Much of the base document's details are written in VDM-SL (Vienna Development Method - Specification Language) which is a formalism for giving a precise definition of a programming language in a denotational style. It is worth learning VDM-SL if you plan to write a compiler or use formal methods to do any design work.

1.7.8 Can I at least get electronic copies of the definition modules?

A. Yes, in ftp://FTP.twu.ca/pub/modula2/ISOLibraries/ISODEFMods/ or ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/standard/libdefs/

1.7.9 Can I get ISO library code to port?

A. Yes, a partial ISO library is available from Rick Sutcliffe, the FAQ maintainer. He has done an ISO I/O library for the Mac, and StonyBrook ported this to their system. Anyone else is welcome to do a port provided: (1) TWU gets a license to the software produced (2) All code changes are marked and submitted to Rick Sutcliffe for the benefit of anyone else who wants to do a port.

1.7.10 Can I get copies of the grammar?

A1. Yes, in http:/www.arjay.bc.ca/Modula-2/Text /Appendices/Ap3.html

A2. For classical Modula-2, see also Coco (section 4.9)

A3. There are nice syntax diagrams for classical Modula-2 in http://cuiwww.unige.ch/db-research/Enseignement/analyseinfo/Modula2/BNFindex.html

and there are syntax diagrams for ISO Modula-2 stored at http://www.arjay.bc.ca/Modula-2/Text/Appendices/Ap2.html

A4. See also http://www.modula2.net

1.8 What difference is there between classical and ISO Modula-2?

A. ISO Modula-2 has resolved most of the ambiguities in classical Modula-2. It adds the data type COMPLEX and LONGCOMPLEX, exceptions, module termination (FINALLY clause) and a complete standard I/O library. There are numerous minor differences and clarifications.

1.8.1 What else has WG13 done?

A. WG13 has completed two additional standards (separate from the main one) for (a) object oriented Modula-2 and (b) generic programming facilities. Older versions of the generics proposal are stored in the directory ftp://FTP.twu.ca/pub/modula2/WG13/

1.9 What is (was) Turbo Modula-2

A1. Borland prepared CP/M versions of Modula-2 and sold them for a time in Europe (also in North America via a distributer.) One of these versions later migrated to become TopSpeed Modula-2.

A2. Another Amiga Turbo Modula-2 Compiler was written by Amritpal S. Mann.

1.10 What is (was) Top Speed Modula-2

See also 1.9. Eventually, Top Speed merged with Clarion, a maker of database products, who used Modula-2 as their DB language, and for a time sold Top Speed separately. Later still, this became SoftVelocity, but the Modula-2 compiler has vanished. A fuller history is available at http://www.attryde.com/clarion/.

1.11 What is Modula-2 R10?

Modula-2 R10 is a modern revision of classic Modula-2, undertaken by B.Kowarsch and R.Sutcliffe starting in 2009 and still very active. Primary design goals were type safety, utmost readability and consistency, and suitability as a core language for domain specific supersets. Targeted areas of application are systems implementation, engineering and mathematics. A particular strength of the design is a set of facilities to make library defined abstract data types practically indistinguishable from built-in types and thereby eliminate one of the primary causes of feature growth.

A first public draft of the language specification was published in 2010. Pragmas were finalised in 2011 and 2012. The specification is now under editorial review. It can be downloaded from: http://modula2.net/resources/M2R10.pdf

A reference compiler along with a standard library is also under development. The project is hosted at: http://bitbucket.org/trijezdci/m2r10

Information can also be found at: http://modula2.net/m2r10.shtml

1.11.1 What are the differences between Modula-2 R10 and PIM?

A. A document at http://modula2.net/resources/Diff-R10-PIM.pdf summarizes these.

1.12 Where and for what is Modula-2 used?

A1. Modula-2 is widely used for teaching the fundamentals of sound programming techniques, data structures, and software engineering in many parts of the world. It has been the language of choice in much of Europe, though Java and C++ have made great inroads. Modula-2 has features that make it superior to other languages for large projects and for programming and real time controllers.

A2.Here is a reply by Andrew Trevorrow (akt@kagi.com) who is the author of several Macintosh programs written in p1 Modula-2: OzTex (standard Tex implementation on the Mac) X-Words (a meta-Scrabble word game), Anagrams (a fast and friendly anagram generator), LifeLab (a software laboratory for 2D cellular automata, Googolator (an arbitrary-precision calculator, X-Words Deluxe (a meta-Scrabble-like game), and CrossCards (a combination of Scrabble and Poker.) His home page is: http://www.trevorrow.com/

"Back in 92-93 I worked for the Australian National Uni's Research School of Earth Sciences writing Noble, a large suite of programs to control mass spectrometers and analyze all the data. Everything was written in Modula-2 (the only reason I took the job!). In fact, one of the reasons I decided to try making a living from shareware was so that I could keep using Modula-2."

A3. General Motors and its subsidiary Delco have done their programming in General Motors Modula-2. Up to a point, all GM car computers were programmed in this language, though the keeper of the FAQ is unable to confirm that this is still the case.

A4. Here is a message sent in by a maker of test equipment:

Our BoardWizard range of test equipment has compilers,pseudo-code interpreters and a complete test operating system written in M2. The code was written for one tester in 1987 and has been maintained from that date to the present. New tester models have added and new interface and UI code has been written, indeed sections have been completely re-written but much of the core test logic is untouched since about 1990 when I shifted to management. Much of the code is unknown to those who maintain it - yet when i look at it after several years I can still explain it to others even though comments are sparse. I believe that that is the hallmark of a great programming language. (Emphasis added.)

Dave Appleton,
Technical Manager
Goldtron Technologies                       Tel : (065)-870-9886
(Ex- Proteq Technologies)                   Fax: (065)-777-2118
26 Ayer Rajah Crescent #07-01               www:  http://www.proteq.com.sg
Singapore  139944                           

A5. Here is an answer sent in by a developer:

Magic Mouse Productions
12615 Sir Francis Drake Blvd.
Inverness, CA 94937 USA
1-415-669-7010
http://www.magicmouse.com

The following products were made using Modula-2. The programs are all about 100,000 lines long, and 99% Modula-2, with about 1% assembler code for performance in critical areas.

    Flying Colors 2, Anime Designer DragonBall, Action Designer Ultraman, Tamagotchi 
        Sketch, Curious George Paint and Print Set -- all paint and creativity programs.
    Gorgeous Mail -- a new years card making program
    JuniorNet web activities -- various creativity activities for JuniorNet web subscription service
    Discus -- CD label making program
    Web Workshop Deluxe -- Web site design product

A5A. Here is a later rant sent in by the same person.

We make commercial software using Modula-2, and have been doing so since the first appearance of the Logitech "Multiscope" compiler about 17 years ago, and about a million lines later we are still using Modula-2 to great effect.

I am proud to announce that Web Workshop Pro, a kids website editor, is about to go "golden" and be released to the public. The program, written in 98% Modula-2 (with a small assembler section), is reliable, fast, and very efficiently coded. An almost identical product in feature set and user interface style (but not as good) called Site Central was written in C, and is 4 times larger in executable. There is no better way to compare languages than to see two similar products implemented in the same environment (macintosh + windows), and see the result.

We use the excellent StonyBrook compiler (a fully integrated development environment) for Windows (it still works!), and the wonderful p1 compiler under the Macintosh MPW development environment (ed. note: now available in XCode; MPW is defunct).

We have a porting tool that converts between the two compilers, although recent improvements to the StonyBrook compiler make it almost possible to have identical source code.

We have implemented a quickdraw emulation layer for windows which allows programs to run identically between macintosh and windows platforms. This very layer eluded a very large company years ago, and is crucial to having a single code base that operates on the mac and windows in an identical manner.

100,000 lines of code, about 10 months to do. one programmer. Less than 100 total bugs. I have an 800kb demo if anybody wants to have one e-mailed.

Until I get a chance to build a compiler for my BEADS language, which will reduce programming effort by at least 10:1, Modula-2 is the simplest, cleanest, easiest to read, tends-to-build-a-reliable-product language on the planet.

Java stinks! Modula-2 rules! (editor's note: Ouch!)

A6. Frank Schoonjans mentions MedCalc (statistical software for Windows, http://www.medcalc.be, developed using Stony Brook Modula-2, his main work.

A7. (revised 2005 09 06) The keeper of the FAQ notes that he still occasionally gets contracts to evaluate Modula-2 code in takeover situations and the like. Usually this code is for controllers, other real time devices, telecommunications applications, and the like (sorry, specifics are under non-disclosure). However, there can be little doubt that apart from real time applications, Modula-2 use has declined steadily since the early 1990s. The author still finds it invaluable for teaching new programmers good habits, but acknowledges that without a new suite of uses, little will remain of it in a few more years. Perhaps the GNU project and the Objective Modula-2 project for Cocoa (and other environments already using Objective C) will breathe new life into the language. Modula-2 is not the only good notation to suffer in the mad rush to conform to C++ peer pressure. Overweight big brother Ada has also vanished. Lots of real-life programmers use Delphi (Pascal++) but there are virtually no textbooks available. Likewise for Smalltalk. Much work takes place in scripting languages (Perl, php, JavaScript/ECMAScript, AppleScript, Python, etc.) or in Java however these are all to some degree unsuitable for commercial work on large projects.

A8. The Proceedings of the Joint Modular Languages Conference, JMLC 2003 (LNCS 2789), contains an article by Koltashev wherein he discusses the benefits of using Modula-2 for the onboard-software used in Russian telecommunications satellites.

A9. The p1 page notes a number of large commercial products written using its compiler. These include Andrew Trevorrow's programs described above in A2, the magicmouse software mentioned in A5, Curious George Paint and Print Studio published by HMI Interactive (http://www.hminet.com), the Anime designer Dragon Ball Z, and the CAD program Pythagoras (http://www.pythagoras.net)

A10. (Tom Breedon) Though I've unfortunately moved on in my "day job" to Windows support :( :( :( with an occasional task in HTML shuffling (even worse!), I used to do scientific research laboratory programming, and my Photomultiplier Monitoring program, for long term data collection using very sensitive Hamamatsu PMTs, written with Stony Brook M2 starting about 8 years ago is still being used, and in fact has spread to a number of laboratories here and there.

1.13 Why do some universities use Modula-2 for teaching instead of C or C++?

A1. Modula-2 is a type-safe language and its compilers will therefore catch many errors that otherwise show up only at run time. While professional programmers need to learn C++ because it is commonly used, it is important to begin a discipline of deliberate, engineered programming at the outset. Modula-2 is easier to write in, easier to read (it reads left to right) and easier to debug. It lends itself well to software engineering of very large projects. Modula-2 is a higher level language than C++, particularly with respect to pointers, all of which have types that depend on what is pointed to, and that can be treated as addresses only by flagging this fact in the code. A good computing science department (such as the one at Trinity Western University, where I teach,) tries to inculcate a way of thinking (as a software engineer, not a hacker) and beyond that, a breadth of ideas. At TWU C, C++, Java, Prolog, php, and other languages, are taught in appropriate courses, and on a variety of platforms, but not to beginners. Frankly, if I had to switch, my first choice would be Delphi, Ada or Oberon, and after that Java (if it ever became reliably cross platform.) If I had to try teaching beginners C++, I would retire. Objective Modula-2 seems interesting, though.

A2. Popularity no more implies soundness or superiority when considering tools such as Modula-2 and C++ than it does when considering hardware operating systems (Windows vs Mac) and applications (Word vs NisusWriter). Marketing means selling the sizzle of appearance not the steak of content; those who know this and can apply it consistently win the marketing wars with inferior or even poor products. The market situation is no reason to give up on the basics of sound tools and methodology. If anything the crisis implied by the inability of large companies to maintain poorly designed and bloated software and OSs implies that the industry needs to return to basics before it is going to advance much farther.

1.14 Why is Modula-2 a good language for large commercial projects?

A1. It supports modular design which reduces errors and cuts down on maintenance time. This also allows platform dependencies to be isolated, increasing portability. I/O is found in several type-specific modules, so linkers only patch in the I/O code that's needed, making programs smaller and faster. This is in sharp contrast to, say, the versatile but resource hungry printf in C.

A2. see: Griffith, Laurie Modula-2 is three times less error prone than C, Proceedings of the Second International Modula-2 Conference, Loughborough University of Technology, UK, September 1991, pp 332-338.

1.15 Where do I get information on YAFL?

A. This is yet another OO and Generic derivative of Modula-2. The homepage for the language is at http://www.phidani.be/yafl/index.html

1.16 Where do I get information on the Lilith Computer?

A1. This was the natively Modula-2 machine Wirth once built. A collection of documentation and other material is located at http://cfbsoftware.com/modula2/

A2. Further information including source for an emulator is located at ftp://jdreesen.dyndns.org/ftp/

1.17 Is there a GNU Modula-2?

There is a GNU Modula-2 project which is alive and well and its web site is: http://www.nongnu.org/gm2/homepage.html/. GNU Modula-2 is a front end for the GNU Compiler Collection (GCC). GNU Modula-2 is complete and implements PIM2, PIM3, PIM4 and ISO dialects. Also implemented are a complete set of free ISO libraries and PIM libraries. The current release status of GNU Modula-2 is 1.0.4 . It is known to build on Debian, GNU/Linux, MacOS X Snow Leopard, Solaris, and Cygwin.

1.18 Are there any M2 compilers that support Cocoa and/or GNUstep, say an Objective Modula-2?

A: The Objective Modula-2 project has defined language extensions for Modula-2 to support Cocoa and GNUstep natively by adding support for the Objective-C object model and runtime system to the language. The language specification can be obtained from the project's home page and an open source reference compiler is under development. The project's FAQ also mentions interest in adding the same language extensions to GNU Modula-2. More information on the project's work in progress can be found at http://objective.modula2.net

1.19 Are there any M2 compilers with Xcode integration

A: The latest p1 compiler runs under XCode. Some partial support for this functionality can be obtained from the language specification file (gives syntax colouring) available for download at: http://modula2.net/resources/Modula2.xclangspec

1.20 Is there any Modula-2 compiler for iPhone application development?

A: Not yet. However, Objective Modula-2 targeting the Objective-C runtime and associated frameworks (including Cocoa Touch) will be usable for iPhone development once the reference compiler is completed.

2. WHERE IS MODULA-2 DISCUSSED?

2.1 COMP.LANG.MODULA-2

This is an internet newsgroup for questions, answers, and discussions on Modula-2. You may read it under this name on any machine on which you have a news account.

2.1.1 How do I post a message to comp.lang.modula2?

A. Post to that group using a news program on any computer connected to the network. or use Google Groups. http://groups.google.com/group/comp.lang.modula2/topics

2.1.2 How do I retrieve old messages from comp.lang.modula2?

A. Your local news server probably keeps old messages only for a few weeks. You should be able to mark the entire group as unread and browse whatever is available there.

2.2 Amiga lists

A. A mailing-list for the Amiga Turbo Modula-2 Compiler written by Amritpal S. Mann. To subscribe, send a message to maillist@econet.demon.co.uk with SignOn turbo-list as the Subject. Once subscribed, you will receive a copy of all messages sent to the address turbo-list@econet.demon.co.uk.

2.3 ModulaTor

This is a regular publication by Guenter Dotzel of ModulAware. Back issues are available at: http://www.modulaware.com/mdltr_.htm

2.4 IRC

There is an IRC channel #modula-2 on freenode. Point your browser to: http://webchat.freenode.net/?channels=modula-2

2.5 Objective Modula-2

You can join this Mailman list at: http://modula2.net/mailman/listinfo/objm2

3. WHERE CAN I GET MODULA-2 COMPILERS?

3.1 Where can I get commercial Modula-2 compilers?

In this section, the listings are by name of the manufacturer (marked M) or distributor (marked D.)

A+L AG
activity  D
products  Compilers, applications, and books.
platforms various
office    Daderiz 61
          CH-2540 Grenchen
          Switzerland
contact   Albert Meier
e-mail    aplusl@spectraweb.ch
voice     +41/65/52 03 11
fax       +41/65/52 03 79


Gardens Point
activity  MD
products  Gardens Point Modula-2 (non-ISO)
platforms Various Unix, including Linux but not Solaris 10, and FreeBSD, DJGPP, EMX (OS/2) 
            and MS-DOS (no Mac)
office    Queensland University of Technology
          Gardens Point Branch
          2 George Street
          POB 2434 Brisbane
          Queensland Australia 4001
contact   John Gough
e-mail    GOUGH@qut.edu.au
contact   Jeffrey Ledermann
e-mail    lederman@dstc.qut.edu.au
web       http://plas.fit.qut.edu.au/gpm/
voice     +61 7-864-2132
fax       +61 7-864-1801
see mail list and net sections


Mandeno Granville Electronics Ltd
activity   MD
products  Mod51 :  80x51 Cross Compiler, ISO extensions
               Optimised for Embedded Control, Includes some 
               IEC1131 Extensions.
          DbgX51 : Remote Debugger for Mod51 Compiler
          IcePGM : ICE and Programmers, for FLASH cores,
               using Mod51 platforms DOS Hosted
office    128 Grange Rd
          Auckland 3
          New Zealand
contact
e-mail    Mod51@DesignTools.co.nz
voice     +64 9 6300 558
fax       +64 9 6301 720
web       http://www.designtools.co.nz/


ModulAware
activity  MD
prod/plat Compaq OpenVMS Alpha: Modula-2 and Oberon-2
            64 bit native-code HP Alpha compiler, MaX V5.02 and A2O V3.0, and 64 bit Oberon System V4
          Compaq OpenVMS VAX: Modula-2
web       www.modulaware.com


p1 GmbH
activity  MD
products  XCode hosted ISO compliant compilers
platforms Macintosh OS X (command line and Xcode; will generate universal binaries)
office    Hogenbergstrasse. 20
          80686 Munich
          Germany
contact   Elmar Henne
e-mail    eh@p1.space.net
voice     +49 89-546 13 10
fax       +49 89-580 25 97
web       http://www.awiedemann.de/compiler/index.html


Real Time Associates Ltd.
activity  D
products  Compilers, books, and training courses
platforms numerous
office    Canning House 59
          Canning Road Croyden Surrey
          CR0 6QF UK
Tel: +44 20 8656 7333
Fax: +44 20 8656 7334


Stony Brook Software/ADW
activity MD
products  Stonybrook Modula-2 ISO compatible. (Environment, editor,
  resource editor, librarian, context sensitive help, optimizing compiler,
  linker, debugger, many extra libraries, including COM, RTL sources)
  Also offers Pascal+
platforms 16bit DOS, 32bit DOS extended, 16bit Windows, 32bit Windows
     32-bit Linux on IA-32 processors, 32-bit Solaris/SunOS on SPARC processors.
office 
     StonyBrook is now defunct, bought out by Saperion of Berlin, who will not 
     continue the compiler. The last release was number 31. However, the code 
     has been licensed to ADW Software, 
     and they have the right to re-commercialize 
     the compiler if they wish. 


TERRA Datentechnik
activity  MD
products  Logitech/Multiscope Modula-2 and support
          Distributor for Stony Brook Modula-2 (see listing)
          Logitech compatible libraries for Stony Brook Modula-2
          Real and protected mode ROM tools for 80x86 based embeeded
          Modula-2 systems
          TERRA M2VMS/Alpha and M2VMS/VAX
platforms 16bit DOS, 32bit DOS extended, 16bit Windows, 32bit Windows,
          DEC OpenVMS/Alpha and OpenVMS/VAX
office    Bahnhofstrasse 33b
          CH-8703 Erlenbach
          Switzerland
voice     +41 01 910 35 55
fax       +41 01 910 19 92
bbs       +41 01 910 35 31
e-mail    M2Master@TerraTerra.ch
web       http://www.TerraTerra.ch/

3.2 Where can I get a free/shareware compiler on the net?

ADW Software
products:       Pythagoras, ADW Modula-2 (from Stony Brook) ISO compatible.
                (Environment, editor,  resource editor, librarian, context
                sensitive help, optimizing compiler, linker, debugger, many 
                extra libraries, including COM, RTL sources)
platforms:      32 and 64 bit versions for Windows
NOTE:           As of December 2011, ADW has decided to make their Stony Brook
                derived compiler freely available. It can be downloaded from
                modula2.org.
contacts:       ADW Software Osseven 12 2350 Vosselaar Belgium
Tel.            +32 14 61 32 70
Fax.            +32 14 61 82 15

Fitted Software Tools (FST) Modula-2 for DOS  ftp://ftp.psg.com/pub/modula-2/fst/fst-40s.lzh
contact:        Roger Carvalho
e-mail:         res09tkd@verizon.co
Note:           This compiler was developed by Roger Carvalho but is no longer
                actively supported. It essentially conforms to PIM version 3, 
                but also supports some simple and interesting OOP extensions.
Contact:        P. O. Box 867403 Plano, TX 75023 USA
Warning: A reader cautions that FST may not work at all if you have an AMI BIOS.

Amiga Aglet Modula-2
Version:        3.1-AOS4 (2.28.2010)
Description:    compiler for AOS4 running natively
Author:         tmb@virginia.edu (Tom Breeden)
Status:         "as-is", unwarrantied, freeware compiler package
                now compiles itself!
Platforms:      AmigaOne AOS4 PPC
Web:            http://home.ntelos.net/~tbreeden/ 
Features:       some ISO compatibility, including ISO IO Libr 
                (courtesy R. Sutcliffe et.al.)
                interface to most Amiga system librs, including Reaction
                includes 50+ programming support modules, with source
                IDE using CygnusEd or GoldEd or Turbotext
Future:         will continue with Amiga OS

m2f
Title:          m2f
Description:    a complete Modula-2 compiler based on 2nd Edition PIM
Keywords:       Modula-2 compiler linux
Author:         gaius@glam.ac.uk (Gaius Mulley)
Site:           http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/web/m2fabout.html
Platforms:      gcc
Copying-policy: GPL
succeeded by GNU Modula-2

GNU Version
Title:          GNU Modula-2
Release:        1.0.3 (ISO complete)
Description:    a complete Modula-2 compiler based on PIM
Author:         gaius@glam.ac.uk (Gaius Mulley)
Site:           http://www.nongnu.org/gm2/
Platforms:      BSD, GNU/Linux, MacOS X, Solaris; 32 and 64 bit
Copying-policy: GPL (libraries vary)
available in source and binary in rpm or tar.gz format from
Features:
  It can build all of the University of Ulm libraries, has a good selection of Logitech compatibility libraries, all the m2f libraries and all ISO libraries. This is a successor project to m2f.

      
NOTE: Mide3de2 is a windows IDE for the FST modula-2 compiler. It is available from http://sourceforge.net/projects/mide3de2/

Gardens Point Modula-2 for DOS, Linux and FreeBSD (non-ISO)
  ftp://ftp.fit.qut.edu.au//pub/gpm_modula2/
  ftp://ftp.psg.com/pub/modula-2/gpm
(The EMX version runs under OS/2 in protected mode and can be used to
generate OS/2 PM applications. It relies on the GNU tools from the EMX
package ported by Eberhard Mattes mattes@azu.informatik.uni-stuttgart.de which can be found at: ftp.uni-stuttgart.de/pub/systems/os2/ and various 
other mirror sites.)

MacLogimo for Macintosh Classic (not X)
  ftp://ftp.psg.com/pub/modula-2/mac/maclogimo/

MacMETH Modula-2 for Macintosh Classic (not X)
MacMETH is released as part of RAMSES
http://www.sysecol.ethz.ch/RAMSES/MacMETH.html
RAMSES provides a full featured programming environment for Mac OS 9,
containing all of MacMETH (compilers, linkers, symbolic break debugger,
macro editor or language support for Alpha editor) plus hundreds more of
libary modules useful in the context of programing and for scientific
applications. Contact: Andreas Fischlin andreas.fischlin@ito.umnw.ethz.ch

Megamax Modula-2 for the Atari
  This is freeware now and comes with complete source including 
  compiler. It runs on all Atari Computers an compatibles and on 
  emulators such as MagicMac (Macintosh) and MagiCPC (PC-
  compatibles). The documentation is entirely in german. Available 
  from: http://www.tempel.org/files-e.html

Ulm's Modula-2 System m2c (non-ISO)
   web page:  http://www.mathematik.uni-ulm.de/modula/
   all distributions come along with all sources which may be
   freely distributed under the terms of the GNU General Public License
   SPARCv8 / Solaris to version 10
      ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/ulm/sun4/
   MC68020 / SunOS 4.x
      ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/ulm/sun3/
contact: Andreas Borchert borchert@mathematik.uni-ulm.de

M2Amiga (Open source Modula-2 Compiler for the Commodore Amiga)
Sources and Binaries can be obtained from http://m2amiga.claudio.ch/

3.3 How about a Summary of ISO Products for Major platforms?

MS-DOS: ModulAware, Stony Brook

Windows95/NT: Stony Brook, XDS

Windows32/64: ADW

OS/2: XDS

MacOS9: p1 (version 7.3

MacOS X: p1 (version 8-9), GM2

BSD: GM2

Linux: XDS

GNU/Linux: XDS, GNU

OpenVMS: ModulAware

3.4 Is there such a thing as a decompiler for Modula-2?

Nope. But feel free to write one. Be sure to include a facility to produce the planning documents from which the Modula-2 code could be constructed and one to find out what the users wanted before the planning documents were written.

3.5 Are there other lists of compilers for Modula-2

There is a list at http://www.modula2.net/resources/compilers.shtml of Modula-2 compilers ordered into categories that go from "most current" to "most nostalgic". Most current in today's world means open-source, followed by free of charge, then commercial. Most nostalgic means abandoned and unavailable products or projects.

4. WHERE CAN I GET SOURCE CODE, OTHER INFO?

4.1 Is there source code or other info available on the net?

A. Here are some net sites I have accessed at one time or another. I am not sure if all are still available or what is in them.

ftp://ftp.psg.com/pub/modula-2/

http://www.arjay.bc.ca/Modula-2/m2faq.html ( Home of this FAQ)

ftp://ftp.inf.ethz.ch/pub/

ftp://NIC.SWITCH.CH

ftp://ftp.mathematik.uni-ulm.de/pub/soft/modula/

WWW sites

http://dir.yahoo.com/Computers_and_Internet/Programming_and_Development/Languages/Modula_2/

http://modula2.org

http://www.cfbsoftware.com/modula2/x68000.aspxThe sources, executable and manual of Brian R. Anderson's MC68000 cross-assembler (described in DDJ in 1986) written in Modula-2.

4.2 What other FAQs or lists of pages are available?

A1. http://www.modula2.net/resources/compilers.shtml

A2. http://modula2.net

A3. http://freepages.modula2.org

4.3 Where can I find graphics libraries, etc?

A. Try the PMOS library for various platforms at the following site:

ftp://ftp.psg.com/pub/modula-2/code (North America)

4.4 Are there any mathematical libraries available?

A1. See Numerical Procedures in Modula-2 -- authorized translation of Numerical recipes in Pascal from PolyWare (Klara Vancso): klarav@telic.nl (work) OR k.vancso@tip.nl (home) The CD-ROM has the Modula-2 sources. See http://www.nr.com Note that sources given in this book are of the "quick and dirty" variety and cannot be sold as such, only in compiled form.

A2. There is a computer Algebra system in Modula-2 that includes a LISP interpreter also written in Modula2 at: http://krum.rz.uni-mannheim.de/mas/

A3. LMathLib is a library that defines a number of mathematical functions for Modula 2 programs. Unlike other libraries of the same kind, LMathLib patches the Modula 2 compiler. All library functions are inlined as assembler code for the Floating Point Unit. This results in faster code compared to the traditional solution with subroutine calls. Due to this machine dependent technique, you can use the library ONLY with the (free) GMD Modula System Mocka for Linux on INTEL based machines. You can get the LMathLib library via anonymous ftp from ftp://tee-1.tee.uni-essen.de/pub/Mocka/(132.252.131.33) Documentation is included.

4.5 Where can I get a Modula-2 to C converter?

A: The program mtc is available from

ftp://ftp.Uni-Koeln.DE/usenet/comp.archives/languages/modula-2/mtc/

Several of the compilers available work or can work by producing C or C++ code and can also serve this purpose. See p1, XDS and Ulm's m2c (not the same as mtc) listings for examples.

4.6 Where can I get a Modula-2 to Component Pascal converter?

A.This is available from http://www.lrz.de/~Bernhard_Treutwein/m2o.txt

Note: Component Pascal is an Oberon dialect, but the translator does not use any CP specific features, i.e. generates standard Oberon-2.

4.7 Are there any compiler construction tools available?

A1. Some old ones appear in ftp://ftp.gmd.de/GMD/cocktail/

A2. Coco/R generates recursive descent parsers and their associated scanners from attribute grammars. Full source code, and a variety of simple example applications are supplied in the distribution kits. The Modula versions (1.50 is the latest) are available from ftp://ftp.ssw.uni-linz.ac.at/pub/Coco/

See also:

ftp://ftp.inf.ethz.ch:/pub/software/Coco
ftp://ftp.psg.com:/pub/modula-2/coco

There are versions for the MS-DOS compilers (JPI, FST, Logitech, StonyBrook, Gardens Point), for the Mocka compiler for Linux and FreeBSD, as well as for the Gardens Point Unix compilers, including Linux and FreeBSD. There is also a version that produces TurboPascal units very similar to the Modula-2 modules. This is also FreePascal compliant now. Pat Terry's textbook "Compilers and Compiler Generators" that uses Coco/R is now online at http://www.scifac.ru.ac.za/compilers

A3. A copy of the EBNF for ISO Modula-2 can be found in Appendix 3 of the shareware text at:

http://www.modula-2.com

A4. The Amsterdam Compiler Kit (ACK) generates lexers and parsers in a variety of languages, including Modula-2. Seehttp://tack.sourceforge.net/

A5. ANTLR has become one of the most popular lexer and parser generator. It comes with ANTLRworks, a graphical IDE for grammar and parser development which can be used to generate syntax diagrams, verify grammars, build parse trees, ASTs, all without writing a single line of code, simply by writing a grammar in an EBNF-ike notation. See: http://www.antlr.org/

ANTLR grammers for PIM3, ISO, R10, and Objective Modula-2 are all available at: http://modula2.net

4.8 Does there exist something to convert a C header file to a Modula-2 DEFINITION MODULE file for me?

A. Try looking at the XDS Ltd site for the H2D freeware product on some platforms

A21. See also the GNU project and the utility h2def.

4.9 Where can I get the C code of a Modula-2 compiler?

A. Most Modula-2 compilers are written in Modula-2. Indeed, though there are exceptions, and there are usually good reasons for the exceptions (cross compiling, fitting into an existing framework), most compilers for a given language are written in that language.

4.10 What language is the linker written in?

A. That depends. If the linker is system wide (designed for multiple languages) it could be written in almost any language. If it icomes with the Modulaq-2 package and is designed for linking files produced by a Modula-2 compiler, it may well be written in Modula-2.

4.11 What can I do with old sources from Modula Corp?

A. From the former president Richard Ohran (ROhran@vinca.com): "Modula Corp. is dead. Do whatever you like."

4.12 Isn't there a Modula-Prolog project somewhere?

A. Try ABB Corporate Research and Carlo Muller, who may license it to you for non-commercial purposes. mailto:cadamuller@swissonline.ch

4.13 Is C. Lins SCL library available?

A. Yes, at http://www.aha.ru/~uranus/download/scl.zip

4.14 What about operating systems written in Modula-2?

A. This answer provided by Christolph Schlegel:
These are systems which are "outdated" but still very interesting.
Medos    LUMOS   Kronos
These are perfect systems for learning through simplicity.

4.15 Can you help me with my assignments?

A1. Some people may give you hints, but please do not subvert your professor and your education by submitting work other people do for you.

A2. Here are two answers submitted to the newsgroup in response to a desperate student's plea for ANY Modula-2 program. The first is rather prosaic; the second a little more imaginative:

MODULE homework;

IMPORT STextIO;

BEGIN
  LOOP
    STextIO.WriteString ("I will do my own homework.");
    STextIO.WriteLn;
  END;
END homework.

main()
{
    int i;

    for(i=0; i i++)  
        printf("I will do my own homework.\n");

}

Followup Question: Is that Modula-2? I just finished my first course in Modula-2 and that don't look at all familiar. I'm not looking forward to the final exam.

A. (Pat Terry) Computer Science changes sooo rapidly. Haven't you discovered Modula-2++ yet?

5. SPECIFIC QUESTIONS ON CODE AND ALGORITHMS

5.0 Where can I get general information on algorithms?

A Try the site http://www.cs.sunysb.edu/~algorith/

5.1 Where can I get an algorithm for an efficient random number generator?

A1. Pierre L'Ecuyer: Efficient and Portable Combined Random Number Generators, Communications of the ACM, vol. 31, no. 6, pp. 742-749. The RNG has a period of approximately 2.3E+18. Generating 1 000 000 numbers per second, that means that it would take over 73 000 years before it repeated a sequence.

A2.Look in the PMOS library. This one uses the 'Minimal standard random number generator' described by Park & Miller, CACM 31,10,Oct 88 p1192. The code has been checked for the 10001st random as specified in Park & Miller p1195. One site is: ftp://ftp.psg.com/pub/modula-2/code/random/

A3. A pseudo random generator using the subtractive method taken from Knuth, Seminumerical Algorithms, 3.2.2 and 3.6, belongs to Ulm's Modula-2 System that is distributed under the terms of the GPL (and in case of the library under the terms of the LGPL). More informations may be found at http://www.mathematik.uni-ulm.de/modula/ and http://www.mathematik.uni-ulm.de/modula/man/man3/RandomGenerator.html

5.2 How can I prevent NIL pointer errors?

A.First guard your reference by writing

IF (myPointer # NIL) AND (myPointer^.fieldname =)...etc.

Because Modula-2 has short circuited Boolean expression evaluation, the first part guards the second from being evaluated inappropriately. Then, take the radical, unC-like step of checking your code design for the logical error that led to the incorrect reference in the first place.

5.3 Why doesn't my IF statement compile?

A.See the example in the last subsection. Boolean expressions must be delineated with parentheses.

5.4 Can I assume numeric variables are set to zero and Booleans to FALSE?

A. No. The values of variables are random until your code sets them. Declaring does not initialize.

5.5 Why do conversions from real to whole types sometimes crash?

A.You need to protect your conversion code by using MAX (TYPE) and MIN (TYPE) which are part of the ISO Modula-2 base language.

5.6 Does a CASE statement always need an ELSE clause?

A. No, but it's not a bad idea, even if you think you have covered all the cases. If you have, a good compiler might optimize your code away, but if you haven't, you could be in for trouble.

5.7 What are the system types to which all other parameters are compatible?

A. Just LOC and ARRAY OF LOC (one dimension). This does not work for multidimensional arrays of LOC, and there are no defined BYTE and WORD types, though implementations may include them as well.

5.8 How do I control the serial port, mouse, network card, TCP/IP or other communications protocol or peripheral?

A.These are system dependent, and no modules for this can be found in the standard. A vendor MAY supply them. Ask.

5.9 Does the object model for OO-Modula-2 have garbage collection or not?

A. BOTH traced (collected) and untraced (roll your own memory management) objects are available in ISO OO Modula-2.

5.10 What is the arity of inheritance for OO-Modula-2?

A. Single inheritance only.

5.11 What do you use the generic extensions for?

A. These allow you to write code for structures such as lists or queues, or for routines such as a sort, without initially specifying the data types that are in the structure or the target of the routine. The initial module is called a generic module. Such modules can be refined for the specific data types by a refining separate module (library) or a refining local module.

5.12 How do I clear the screen?

A. This non-standard functionality may be present in a module called Terminal.

5.13 How do redirect screen and keyboard I/O?

A. This non-standard functionality may be present in a module called InOut or (in an extension to ISO versions) in RedirStdIO. The procedure to use is OpenInput (or OpenOutput). Unfortunately these behave differently in every version (one of the reasons we built a standard). Some versions produce a prompt at runtime, others take a file name. The latter may or may not require a file extension. They may look for the name as you have provided it and if they don't find it, try with the default extension .txt Others have a way of entering the extension. You will have to consult the documentation.

5.14 Why use the colon before the type in a VAR declaration, and why have the vertical bar as a case separator rather than a semicolon?

A. These are both "syntactic sugar" to help the compiler know what it's doing. For instance, if there were no colon in a type declaration, the compiler would not know the last identifier is supposed to be a type name because it wouldn't know it was last until checking the next token. Lookaheads are expensive. Also, there was no need for subsequent committees and designers to change this from Wirth's definition. After all, there is no ambiguity here.

6. WHAT ARE SOME REFERENCE MATERIALS ON MODULA-2?

A1. A shareware text I have written (and that MAY be the only currently maintained English language instructional text on Modula-2) is available. See section 1.4.

A2.The manuals for some of the commercial products contain much useful information.

A3. The Gardens Point sites have documentation available (see their listing above.)

A4. A variety of ETH papers are stored at http://www.inf.ethz.ch/research/disstechreps/techreports/index?range=100

A5. What follows is a BIBLIOGRAPHY of some published materials:

Adams, J. Mack Gabrini, Philippe J & Kurtz, Barry L. An Introduction to Computer Science with Modula-2 Lexington, MA D.C. Heath & Co 1988

Backhurst, Nigel G. Mastering Modula 2 Wilmslow Sigma 1988

Beidler, John & Jackowitz, Paul Modula-2 Boston Prindle Weber & Schmidt 1985

Blaschek, G. & Pomberger, G. Introduction To Programming With Modula-2 Springer-Verlag 1990

Budgen, David Software Development with Modula-2 Reading, MA Addison-Wesley 1989

Carmony, Lowell A. & Holliday, Robert L. A First Course In Modula-2 New York Computer Science Press c1990

Carroll, D. W. Advanced Modula-2 Programming for the IBM PC XT and AT Elsevier 1986

Chirlian, Paul M. Introduction to Modula-2 Beaverton, Or. Matrix Publishers

Christian, Kaare A guide to Modula-2 New York Springer-Verlag 1986

Cooling, J.E. Modula-2 for Microcomputer Systems Van Nostrand Reinhold 1988

Cooper, Doug Oh My! Modula-2! New York Norton 1990

Cornelius, Barry Programming with TopSpeed Modula-2 Reading, MA Addison Wesley 1991

Eisenbach, Susan & Sadler, Cristopher Program Design with Modula-2 Reading, MA Addison-Wesley 1989

Elder, Jim Compiler Construction: A Recursive Descent model Hemel Hempstead England: Prentice-Hall 1994

Etling, Don Modula-2 Programmer's Resource Book Blue Ridge Summit, PA Tab Books 1988

Feldman, Michael B. Data Structures with Modula-2 Englewood Cliffs, NJ Prentice Hall 1988

Ford, Gary & Wiener, Richard. Modula-2: A Software Development Approach New York Wiley 1985

Gabrini, Philippe J. & Kurtz, Barry L. Data Structures And Algorithms With Modula-2 Lexington, MA DC Heath c1992

Gleaves, Richard Modula-2 for Pascal Programmers New York Springer-Verlag 1984

Gough, K. John & Mohay, George M. Modula-2: A Second Course In Programming Englewood Cliffs, NJ Prentice Hall 1988

Greenfield, Stuart B. Invitation to Modula-2 Petrocelli Books 1985

Harrison, Rachael Abstract Data Types in Modula-2 New York Wiley 1989 Wiley

Harter, Edward D. Modula-2 Programming. A First Course Englewood Cliffs, NJ Prentice-Hall 1990

Helman, Paul & Veroff, Robert Walls and Mirrors: Intermediate Problem Solving and Data. Modula-2 Menlo Park, CA Benjamin Cummings 1988

Hewitt, Jill A. & Frak, Raymond J. Software Engineering in Modula-2: an object-oriented approach London Macmillan 1989.

Hille, R.F. Data Abstraction and Program Development Using Modula-2 Sydney Prentice Hall 1989

Hopper, Keith. The Magic of Modula-2 Melbourne Prentice Hall 1991

Johnston, Chris Applying Modula-2 Academic Press 1991

Jones, William C. Jr. Data Structures Using Modula-2 New York Wiley 1988

Jones, William C. Jr. Modula-2 Problem Solving and Programming with Style New York Harper & Row 1987

Joyce, Edward J. Modula-2: A Seafarer's Manual & Shipyard Guide Reading, MA Addison-Wesley 1985

Kaplan, Ian & Miller, Mike Modula-2 Programming Rochelle Park, NJ Hayden Book Co. 1986

Kelly-Bootle, Stan Modula-2 Primer Howard W. Sams & Co. 1987

King, K.N. Modula-2: A Complete Guide Lexington, MA D.C. Heath & Co 1988

Knepley, Ed & Platt, Robert Modula-2 Programming Reston, VA Reston Pub. Co. 1985

Koffman, Elliot B. Problem Solving and Structured Programming in Modula-2 Reading, MA Addison-Wesley 1988

Kruse, Robert L. Programming With Data Structures Modula-2 Version Englewood Cliffs, NJ Prentice-Hall 1988

Lawrence, Mike Modula-2 And The Amiga Avant-Garde Software 1990?

Leestma, Sanford & Nyhoff, Larry Programming & Problem-Solving in Modula-2 New York Macmillan 1989

Lins, C. (Charles) The Modula-2 Software Component Library Volumes I-IV New York Springer-Verlag 1989-

Mayer, Herbert G. Programming in Modula-2. the Art & the Craft New York Macmillan 1988

McCracken, Daniel D. & W. Salmon A Second Course in Computer Science with Modula-2 New York Wiley 1987

Messer, P. A. & I. Marshall Modula-2 Constructive Program Development Oxford Blackwell Scientific Publications 1986

Metrowerks, Inc. Staff Metrowerks Modula-2 Start Pak New York Macmillan 1990

Mitchell, R. J. Modula-2 Applied London Macmillan 1991

Mitchell, Richard Abstract Data Types And Modula-2 A Worked Example Of Design Using Data Abstraction Englewood Cliffs, NJ Prentice Hall 1992

Moore, John B. & McKay, Kenneth N. Modula-2 Text and Reference Englewood Cliffs, NJ Prentice-Hall 1987

Novak, M.M. Modula-2 in Science & Engineering London McGraw 1990

Nyhoff, Larry & Leestma ,Sanford Data Structures & Advanced Programming in Modula-2 New York Macmillan 1990

Ogilvie, John W. L. Modula-2 Programming New York McGraw-Hill 1985

Pinson, Lewis Sincovec, Richard & Weiner, Richard A First Course in Computer Science with Modula-2 New York Wiley 1987

Pittman, Thomas & Peters, James The Art Of Compiler Design Theory And Practice Englewood Cliffs, NJ Prentice-Hall 1992

Pomberger, Gustav. Software Engineering and Modula-2 Englewood Cliffs, NJ Prentice Hall 1984

Rechenberg, P. & Mössenböck, H. (tr. O'Meara, John) A Compiler Generator for Microcomputers Englewood Cliffs, NJ Prentice Hall / Carl Hanser Verlag 1989

Riley, David D. Data Abstraction and Structures: An Introduction To Computer Science II Boston Boyd & Fraser Pub. Co. 1987

Riley, David D. Using Modula-2: An Introduction To Computer Science I Boston Boyd & Fraser Pub. Co. 1987

Sale, Arthur H. J. Modula-2: Discipline & Design Sydney Addison-Wesley 1986

Sawyer, Brian & Foster, Dennis. Programming Expert Systems in Modula-2 New York Wiley 1986

Schildt, Herbert Advanced Modula-2 Berkeley, CA Osborne McGraw-Hill 1987

Schildt, Herbert Modula-2 Made Easy Berkeley, CA Osborne McGraw-Hill 1986

Schiper, Andre; (tr. Howlett, Jack) Concurrent programming: Illustrated With Examples in Portal, Ada, and Modula-2 Halsted Press 1989

Schnapp, Russell L. Macintosh Graphics in Modula-2 Englewood Cliffs, NJ Prentice-Hall 1986

Sincovec, Richard F. & Richard S. Wiener. Data Structures Using Modula-2 New York Wiley 1986

Sincovec, Richard F. & Wiener, Richard S. Modula-2 Software Components New York Wiley 1987

Stubbs, Daniel F. & Webre, Neil W. Data Structures With Abstract Data Types and Modula-2 Monterey, CA Brooks/Cole Pub. Co. 1987

Sutcliffe, Richard J. Introduction to Programming Using Modula-2 Columbus, OH Merrill 1987

Sutcliffe, Richard J. mailto:rsutc@arjay.ca. Modula-2: Abstractions for Data and Programming Structures (Using ISO-Standard Modula-2) Mt. Lehman: Arjay Enterprises 1996-2000. http://www.arjay.bc.ca (1996 09 16)

Sutherland, Robert J. The Professional Programmer's Guide to Modula-2 London Pitman 1988

Terry, Patrick D. An Introduction To Programming with Modula-2 Reading, MA Addison-Wesley 1987

Thalmann, Daniel Modula-2: An Introduction New York Springer-Verlag 1985

Tremblay, Jean-Paul DeDourek, John M. & Daoust, David A. Programming in Modula-2 New York McGraw-Hill 1989

Tucker, Allen B. Jr. Computer science: A Second Course Using Modula-2 New York McGraw-Hill 1988

Ullmann, Jeffrey Compiling in Modula-2 - A First Introduction To Classical Recursive Descent Compiling Hemel Hempstead England: Prentice-Hall 1994

Ural, Saim & Ural, Suzan Introduction to Programming with Modula-2 New York Harper & Row 1987

Walker, Billy K Modula-2 Programming With Data Structures Belmont, CA Wadsworth Pub. Co. 1986

Walker, Robert D. Modula-2 Library Modules: A Programmer's Reference Blue Ridge Summit, PA Tab Books 1988

Ward, Terry A. Advanced Programming Techniques in Modula-2 Glenview, IL Scott Foresman 1987

Welsh, Jim & Elder, John Introduction to Modula-2 Englewood Cliffs, NJ Prentice-Hall 1987

Wiatrowski, Claude A. & Wiener, Richard S. From C to Modula-2--and Back - Bridging The Language Gap New York Wiley

Wiener, Richard Modula-2 Wizard's Programming Reference New York Wiley 1986

Wiener, Richard & Ford, G. Modula-2 A Software Development Approach New York Wiley 1985

Wiener, Richard & Sincovec, R. F. Software Engineering with Modula-2 and Ada New York Wiley 1984

Willis, Claire & Paddon, Derek Abstraction And Specification With Modula-2 London Pitman 1992

Wirth, Niklaus Programming in Modula-2 (3rd corrected ed.) New York Springer-Verlag 1985

Wirth, Niklaus Algorithms and Data Structures (1986 edition) Englewood Cliffs, NJ Prentice-Hall 1986

Wirth, Niklaus Programming in Modula-2 (4th ed.) New York Springer-Verlag 1990

Woodman, Mark et al Portable Modula-2 Programming Maidenhead, Berkshire UK McGraw-Hill 1989


A6. Some other lists of books and tutorials:

http://www.modula2.net/resources/books.shtml

http://www.pmoylan.org/pages/m2/m2biblio.html

http://www.modulaware.com/mwbiblio.htm

Appendix: AUTHOR INFORMATION AND DISCLAIMERS

Personal: I have used, written about, and taught Modula-2 (since 1983) and have maintained some of the information in this list for many years. I have used at least a dozen different compiler/environments in that time on five different platforms, and have written numerous articles and reviews for publication. I have been a member of the ISO committee WG13 (Modula-2 standardization) since its inception and have participated in all the debates and meetings of WG13 except for meeting #9 at Lake Wanaka, NZ. I have written a text on Modula-2 (now shareware), made numerous submissions to WG13 and directed an implementation of the ISO I/O library in order to verify its concepts. I am the author and project editor of Standard Generic Modula-2, and am involved in the effort to create a new dialect of Modula-2 called R10.

Disclaimers:

(i) I take no responsibility for anyone's use or misuse of this information.

(ii) Apart from having been a beta tester, textbook writer, programmer and a long time user of Modula-2, I have no financial connection with any manufacturer or distributor of software. I am the author of some Modula-2 materials (some of which are shareware) as noted herein, and of various other books, and am actively working on the Modula-2 R10 project. Some manufacturers may distribute my shareware books and/or software on CD-ROM for a previously arranged fee, but that is not an endorsement of their products by me or of mine by them.

(iii) In producing this material, I am NOT acting in an official capacity for TWU, WG13, AFBC, IEEE, ACM, comp.lang.modula2, the GNU or Objective Modula-2 efforts, or any other organization or group.

(iv) Mention of a book or product is NOT an endorsement unless specifically noted.

(v) Inclusion of materials on this list is based on relevance to Modula-2 and factual content and is otherwise entirely without prejudice. I reserve the right to edit all submissions for brevity, clarity, and usage.

To remain authoritative, this and all versions of this FAQ are copyright 1991-2012 by Rick Sutcliffe and Arjay Enterprises. This document may be freely copied and distributed provided it is not altered and no fee is charged with the exception of normal downloading or copying costs.

Compiled by:

Rick Sutcliffe (aka The Northern Spy)

Trinity Western University

7600 Glover Rd.,

Langley, B.C. Canada V2Y 1Y1

1 604 888-7511 Fax 1 604 513-2018

see Rick's web pages at

Arjay Books

The Northern Spy

Arjay Web Services

opundo

Sheaves Christian Resources


mailto:rsutc-AT-arjay.ca