Rick Sutcliffe
2009-02-14 06:13:00 UTC
Archive-name: computer-lang/Modula2-faq/part1
Version: 2.32
Last-modified: 2007 01 25
Posting-frequency: Monthly
Modula-2 Frequently Asked Questions
What is new in version 2.32 (2007 01 25)?
It's been a year and a half and there are few items to report.
Invalid links pointed out have been removed. Someday I'm going to
trim all the non-operative links, so I'd appreciate it if you would
let me know what's not working -- that is, if anyone is reading this.
The forum alternative to the Usenet news group at ArjayBB.com
(section 2.2.1) has been removed. It wasn't being used, the
conenction was hard to maintain, and bulletin boards get too much
spam.
The summary section 3.3 has been revised and expanded to all major
platforms. Note made that GPM does not run on spolaris 10 but the ULM
compiler does. Some information has been removed at the request of
manufacturers, who wish the only point of contact to be the web. One
old spelling error corrected (thanks Keith) and the GPM http links
corrected. The p1 section has been revised to reflect new products.
Under 1.11 (what is Modula-2 used for) answers have been expanded and
a new section (A10) added. The MegaMax Atari product has been removed
as the links appear no longer functional. The MOCKA links have been
alrtered and pruned. The GNU link was revised, and numerous small
changes were made throughout.
What was new in version 22.31 (2005 09 09)?
WThis one has another revision of A8 under 1.11, a new use under A9
of the same section, and a revised comment on GM-M2 in A4 of that
section. I have also revised answers relating to the Mac to clarify
that older compilers support only Classic, not OS X. The BURKS
project at Brighton has become defunct, so all references to this
resource have been removed.
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)
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.
4. I will update this summary file and post to the newsgroups
comp.lang.modula2 and to comp.answers and news.answers
5. The latest version will always be available in a Nisus (Mac) form in
http://www.arjay.bc.ca/Modula-2/m2faq.html.
It is also available from the site rtfm.mit.edu in plain text form as
ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/computer-lang/Modula2-faq/part1
and as
ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/computer-lang/Modula2-faq/part2
CONTENTS:
Part 1
1. WHAT IS MODULA-2?
2. WHERE IS MODULA-2 DISCUSSED?
3. WHERE CAN I GET MODULA-2 COMPILERS?
Part 2
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?
7. REVIEWS
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, 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.
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 after 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
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
A. 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.
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 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 (***@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, and the wonderful p1 compiler
under the Macintosh MPW development environment (ed. note: now also
available in XCode ).
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 mention MedCalc (statistical software for
Windows, http://www.medcalc.be, developed using Stony Brook Modula-2,
his main work.
A7. The following survey results (though now out of date) were once
posted by Mat. Maher ***@reading.ac.uk
ORGANISATION LOCATION WORK COMPILER
Statoil Norway StonyBrook
Inst. for Space Nerology Austria datafile conversion TopSpeed
dataviewers
Boeing Washington Aerospace Eng. p1(MAC)
CDSS UK embedded control sys. TopSpeed
for submarines
(self-employed) UK embedded Pcs and TopSpeed
pc-like chips
(manufacturer) Finland, 8051 embedded control Mod51
S.Africa,
Australia,
NZ, USA
Pacific Software California Point-Of-Sale systems -
Tele-Soft S. Africa Scientific CAD progs TopSpeed
Databases
(confidential) UK Instrumentation & TopSpeed &
telemetry Custom tools
USA Dept. of Energy Idaho Reusable components StonyBrook
Idaho Nat. eng. labs systems programming
Locheed Idaho technologies company
Applied software resuse Products
GiaStar Ltd UK Satcoms/Comms. Elect. TopSpeed
design & m/facture.
University of Reading UK Teaching,embedded ctrl TopSpeed
University of Loughborough UK StonyBrook
and Hertsfordshire TopSpeed
(sole trader) UK Electronic Design TopSpeed
Atomic Energy of Canada Canada Shutdown system for prototype in
Ltd. (AECL) nuclear reactor TopSpeed
final version in
Hicross (HiWare)
Wallac Oy Finland beta/gamma counters Logitech,
control & data acquis. Multiscope
Inspectron AG Switzerland remote surveillance Logitech,
Multiscope
Bank of New York USA funds transfer ModulAware.com
(HP OpenVMS Alpha)
customer enquiries Logitech (VAX/VMS)
(freelance) Motorola IC production Logitech
line tools. (Asia)
Dexdyne Ltd UK Single-board Pcs & TopSpeed
applications.
(freelance) Australia Shareware p1 (mac)
Multi-Master AS Norway Embedded systems, Logitech,
remote control & acquis. Multiscope
(confidential) room acoustic sim & TopSpeed
(audio) virtual reality
A8. (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 dome
degree unsuiotable for commercial work on large projects.
A9. 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.
A10. 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)
1.12 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 (Pentium vs PowerPC), operating systems (Windows
vs Mac) and applications (Word vs Nisus). 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 cirisis
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.13 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.14 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.15 Where do I get information on the Lilith Computer?
A. This was the natively Modula-2 machine Wirth once built. A
collection of documentation and other material is located at
http://cfbsoftware.com/modula2/
1.16 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/. The current release status of
GNU Modula-2 is 0.49 and it implements the PIM variant of Modula-2.
It provides a set of PIM libraries and also installs the ULM PIM
libraries. It is sufficiently stable to build on Sparc Solaris in 64
bits and also GNU/Linux on Opteron/Athlon in 64 bits. It also builds
on BSD and GNU/Linux on the x86 in 32 bits. Its aim is to be both ISO
and PIM Modula-2 compliant. (Also, see the next question).
1.17 Are there any M2 compilers that support Cocoa and/or GNUstep,
say an Objective Modula-2?
A: At present there is no M2 compiler which supports GNUstep. The
latest p1 compiler does run under XCode. There is a project under
way (as of 2005 07) to define language extensions to support the
Objective-C object model and interface with the Objective-C runtime,
which is necessary in order to develop applications for Cocoa and
GNUstep. The idea is to add extensions in support of OO to a base
Modula-2 which are equivalent to the extensions by which Objective-C
was created as a superset of C, but do so in a way that is in line
with Modula-2 style syntax. It is intended to support those
extensions in GNU Modula-2.
More information on the project's work in progress can be found at
http://en.wikipedia.org/wiki/Objective_Modula-2 or by sending email
to objm2-AT-yahoo.co.uk.
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.
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. The last couple of years' are on
the forum at arjaybb.com.
2.2 Amiga lists
2.3.1 A general list for Amiga Modula2/Oberon programming. This is
available in a similar manner at amiga-***@virginia.edu. It is not
oriented toward any specific compiler.To subscribe, send mail to
***@virginia.edu containing the message "subscribe
***@youraddress.yourdom amiga-m2".
2.2.2 A mailing-list for the Amiga Turbo Modula-2 Compiler written by
Amritpal S. Mann. To subscribe, send a message to
***@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-***@econet.demon.co.uk.
2.3 Gardens Point Modula-2
To join the GPM mailing list, send mail to ***@dstc.qut.edu.au
with the subject line blank and the body
of the message containing:
subscribe gpm
info gpm
end
Mail sent to ***@dstc.qut.edu.au gets automatically forwarded to all
subscribers on the list. The development team are of course subscribers.
2.4 Win32
To join, send mail to ***@nhm-wien.ac.at
with a blank subject line and the body Subscribe m2-win95-nt-l (your name)
Maintainer: Peter Stadler
2.5 ModulaTor
This is a regular publication by Guenter Dotzel of ModulAware.
Back issues are available at: http://www.modulaware.com/mdltr_.htm
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 ***@spectraweb.ch
voice +41/65/52 03 11
fax +41/65/52 03 79
Excelsior, LLC (replaces XDS)
activity M
products Native XDS-x86 - Modula-2/Oberon-2 2.32 compiler for x86
(Windows, OS/2, Linux)
XDS-C - Modula-2/Oberon-2 "via C" cross compiler (multiple platforms)
H2D (freeware) translates C header files to M2 Def Mods
Portable run-time library in C source code form
POSIX and Win32 API definition modules platforms PC/OS/2 V3
V4 (Warp), PC/Win95, PC/WNT PC/Linux,
Sun/Sparc Solaris, Sun/Sparc SunOS, HP PA-Risc/HP-UX,
others on request. (Mac no longer supported.)
e-mail ***@excelsior-usa.com
also sold by ModulAware, and Real Time Associtaes
check the shareware/demo section (below) for product availability
Excelsior WWW home page:
http://www.excelsior-usa.com/
fully functional evaluation kits are available from the site
also see ModulaWare, and Real Time Associates for product availability
Gardens Point
activity MD
products Gardens Point Modula-2
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 ***@qut.edu.au
contact Jeffrey Ledermann
e-mail ***@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 ***@DesignTools.co.nz
voice +64 9 6300 558
fax +64 9 6301 720
web http://www.designtools.co.nz/
The (Mill Hill) J.Neuhoff - mhccorp.com
activity MD
product Canterbury Modula-2 for Java (PIM, non-ISO
object oriented extensions similar to Oberon-2 )
platform Any platform which supports Java, such as
Windows XP/2003, Linux, Mac OS X, Unix
contact J.Neuhoff
e-mail neuhoff at mhccorp.com
WWW http://www.mhccorp.com/modula-2.html
demo http://www.mhccorp.com/modula-2.zip
office MHCCorp.com
P.O.Box 4310
Colchester-Brightlingsea
CO7 0WR
United Kingdom
ModulAware
activity MD
prod/plat Compaq OpenVMS Alpha: Modula-2 and Oberon-2
64 bit native-code compiler, MaX V5.02 and A2O V3.0, and
64 bit Oberon System V4
Compaq OpenVMS VAX: Modula-2
32 bit native-code compiler, MVR V4.16
web www.modulaware.com
p1 GmbH
activity MD
products MPW, Code Warrier, and XCode hosted ISO compliant compilers
NOTE: Current(sic) versions of MPW have odds and sods for ISO Modula-2
written by R. Sutcliffe, for your editing enjoyment. Also note that
Code warrior is defunct as far as OS X is concerned.
platforms Macintosh OS9 (MPW), OS X (command line and Xcode; will
generate universal binaries)
office Hogenbergstrasse. 20
80686 Munich
Germany
contact Elmar Henne
e-mail ***@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
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 a company that will
not continue the compiler. The last release was number 31.
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 ***@TerraTerra.ch
web http://www.TerraTerra.ch/
3.2 Where can I get a free/shareware compiler on the net?
Fitted Software Tools (FST) Modula-2 for DOS
ftp://ftp.psg.com/pub/modula-2/fst/fst-40s.lzh
contact: Roger Carvalho
e-mail: ***@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.
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: 2.5-AOS4-Pre-Release (21.1.2005)
Description: compiler for AOS4 running under M68K emulation
Author: ***@virginia.edu (Tom Breeden)
Status: "as-is", unwarrantied, freeware compiler package
Platforms: AmigaOne AOS4 Pre-release, Amiga 68K or WinUAE AOS 3.9
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
"first cut" IDE using CygnusEd or GoldEd
Future: further development, if any, will be targeted to replacing
with a PPC compiler
GCC Version
Title: m2f
Version: 4.2
Entered-date: 5NOV01
Description: a complete Modula-2 compiler based on 2nd Edition PIM
Keywords: Modula-2 compiler linux
Author: ***@glam.ac.uk (Gaius Mulley)
Maintained-by: ***@glam.ac.uk
Site: http://floppsie.comp.glam.ac.uk
Platforms: gcc
Copying-policy: GPL
available in source and binary in rpm or tar.gz format from
Features:
+ Full debugging via emacs/gdb
+ -students flag performs extra semantic checking
for dangerous novice programming styles.
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
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
***@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)
http://www.sysecol.ethz.ch/SimSoftware/SimSoftware.html#MacMETH
Note that MacMETH is also 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. RAMSES contains also the 'Dialog Machine', a platform
independent GUI (see
http://www.ito.umnw.ethz.ch/SysEcol/SimSoftware/RAMSES/DialogMachine.html).
'Dialog Machine' implementations exist for MacOS, GEM (no longer
available), Windows (3.1 .. up to current versions), and Unix. All
software we have developed, is offered via the internet as freeware.
Contact: Andreas Fischlin ***@ito.umnw.ethz.ch
MOCKA - Modula Compiler Karlsruhe (Non ISO)
Universitaet Karlsruhe
Institut fuer Programm- und Datenstrukturen
Vincenz-Priessnitz-Strasse 3
D-76128 Karlsruhe (FRG)
Phone: *-49-721-608 6088 FAX: *-49-721-691462
contact: Thilo Gaul
email: [modula|gaul]@ipd.info.uni-karlsruhe.de
SUN 4 | SUN OS | SPARC |
SUN 4 | Solaris2.x/SunOS 5.0| SPARC |
DEC Station | ULTRIX | R3000, R2000 (MIPS) |
Silicon | IRIX | R3000, R2000 (MIPS) |
Graphics | | |
Sony NEWS | News | MC 68020 with 68881 |
SUN 3 | SUN OS | MC 68020 with 68881 |
HP 9000/300 | HPUX | MC 68020 with 68881 |
HP 9000/700 | HPUX | C back end |
RS6000 | AIX | C back end |
PC | Linux | 80386 | +
PC | 386BSD | 80386 | +
C-back end | UNIX | different |
translates | | |
M-2 To C | | |
The versions marked with a + are free; no order form must be sent, no
license fee to be paid. If you use them, please send an email to
***@ipd.info.uni-karlsruhe.de.
For more information have a look to
http://www.info.uni-karlsruhe.de/~modula/index.php
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 ***@mathematik.uni-ulm.de
Excelsior, LLC
( Windows 95/NT, OS-2, Linux native code and "via C" compilers. ISO
compatible.)
Makes demo and pre-release versions with some restrictions available.
The download site for all versions is:
http://www.excelsior-usa.com
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: GPM, ModulAware, Stony Brook
Windows95/NT: Stony Brook, XDS
OS/2: Mill Hill, XDS, GPM
MacOS9: p1 (version 7.3
MacOS X: p1 (version 8)
BSD: GPM
Linux: XDS, GPM
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.
Version: 2.32
Last-modified: 2007 01 25
Posting-frequency: Monthly
Modula-2 Frequently Asked Questions
What is new in version 2.32 (2007 01 25)?
It's been a year and a half and there are few items to report.
Invalid links pointed out have been removed. Someday I'm going to
trim all the non-operative links, so I'd appreciate it if you would
let me know what's not working -- that is, if anyone is reading this.
The forum alternative to the Usenet news group at ArjayBB.com
(section 2.2.1) has been removed. It wasn't being used, the
conenction was hard to maintain, and bulletin boards get too much
spam.
The summary section 3.3 has been revised and expanded to all major
platforms. Note made that GPM does not run on spolaris 10 but the ULM
compiler does. Some information has been removed at the request of
manufacturers, who wish the only point of contact to be the web. One
old spelling error corrected (thanks Keith) and the GPM http links
corrected. The p1 section has been revised to reflect new products.
Under 1.11 (what is Modula-2 used for) answers have been expanded and
a new section (A10) added. The MegaMax Atari product has been removed
as the links appear no longer functional. The MOCKA links have been
alrtered and pruned. The GNU link was revised, and numerous small
changes were made throughout.
What was new in version 22.31 (2005 09 09)?
WThis one has another revision of A8 under 1.11, a new use under A9
of the same section, and a revised comment on GM-M2 in A4 of that
section. I have also revised answers relating to the Mac to clarify
that older compilers support only Classic, not OS X. The BURKS
project at Brighton has become defunct, so all references to this
resource have been removed.
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)
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.
4. I will update this summary file and post to the newsgroups
comp.lang.modula2 and to comp.answers and news.answers
5. The latest version will always be available in a Nisus (Mac) form in
http://www.arjay.bc.ca/Modula-2/m2faq.html.
It is also available from the site rtfm.mit.edu in plain text form as
ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/computer-lang/Modula2-faq/part1
and as
ftp://rtfm.mit.edu/pub/usenet-by-group/comp.answers/computer-lang/Modula2-faq/part2
CONTENTS:
Part 1
1. WHAT IS MODULA-2?
2. WHERE IS MODULA-2 DISCUSSED?
3. WHERE CAN I GET MODULA-2 COMPILERS?
Part 2
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?
7. REVIEWS
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, 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.
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 after 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
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
A. 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.
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 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 (***@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, and the wonderful p1 compiler
under the Macintosh MPW development environment (ed. note: now also
available in XCode ).
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 mention MedCalc (statistical software for
Windows, http://www.medcalc.be, developed using Stony Brook Modula-2,
his main work.
A7. The following survey results (though now out of date) were once
posted by Mat. Maher ***@reading.ac.uk
ORGANISATION LOCATION WORK COMPILER
Statoil Norway StonyBrook
Inst. for Space Nerology Austria datafile conversion TopSpeed
dataviewers
Boeing Washington Aerospace Eng. p1(MAC)
CDSS UK embedded control sys. TopSpeed
for submarines
(self-employed) UK embedded Pcs and TopSpeed
pc-like chips
(manufacturer) Finland, 8051 embedded control Mod51
S.Africa,
Australia,
NZ, USA
Pacific Software California Point-Of-Sale systems -
Tele-Soft S. Africa Scientific CAD progs TopSpeed
Databases
(confidential) UK Instrumentation & TopSpeed &
telemetry Custom tools
USA Dept. of Energy Idaho Reusable components StonyBrook
Idaho Nat. eng. labs systems programming
Locheed Idaho technologies company
Applied software resuse Products
GiaStar Ltd UK Satcoms/Comms. Elect. TopSpeed
design & m/facture.
University of Reading UK Teaching,embedded ctrl TopSpeed
University of Loughborough UK StonyBrook
and Hertsfordshire TopSpeed
(sole trader) UK Electronic Design TopSpeed
Atomic Energy of Canada Canada Shutdown system for prototype in
Ltd. (AECL) nuclear reactor TopSpeed
final version in
Hicross (HiWare)
Wallac Oy Finland beta/gamma counters Logitech,
control & data acquis. Multiscope
Inspectron AG Switzerland remote surveillance Logitech,
Multiscope
Bank of New York USA funds transfer ModulAware.com
(HP OpenVMS Alpha)
customer enquiries Logitech (VAX/VMS)
(freelance) Motorola IC production Logitech
line tools. (Asia)
Dexdyne Ltd UK Single-board Pcs & TopSpeed
applications.
(freelance) Australia Shareware p1 (mac)
Multi-Master AS Norway Embedded systems, Logitech,
remote control & acquis. Multiscope
(confidential) room acoustic sim & TopSpeed
(audio) virtual reality
A8. (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 dome
degree unsuiotable for commercial work on large projects.
A9. 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.
A10. 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)
1.12 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 (Pentium vs PowerPC), operating systems (Windows
vs Mac) and applications (Word vs Nisus). 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 cirisis
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.13 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.14 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.15 Where do I get information on the Lilith Computer?
A. This was the natively Modula-2 machine Wirth once built. A
collection of documentation and other material is located at
http://cfbsoftware.com/modula2/
1.16 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/. The current release status of
GNU Modula-2 is 0.49 and it implements the PIM variant of Modula-2.
It provides a set of PIM libraries and also installs the ULM PIM
libraries. It is sufficiently stable to build on Sparc Solaris in 64
bits and also GNU/Linux on Opteron/Athlon in 64 bits. It also builds
on BSD and GNU/Linux on the x86 in 32 bits. Its aim is to be both ISO
and PIM Modula-2 compliant. (Also, see the next question).
1.17 Are there any M2 compilers that support Cocoa and/or GNUstep,
say an Objective Modula-2?
A: At present there is no M2 compiler which supports GNUstep. The
latest p1 compiler does run under XCode. There is a project under
way (as of 2005 07) to define language extensions to support the
Objective-C object model and interface with the Objective-C runtime,
which is necessary in order to develop applications for Cocoa and
GNUstep. The idea is to add extensions in support of OO to a base
Modula-2 which are equivalent to the extensions by which Objective-C
was created as a superset of C, but do so in a way that is in line
with Modula-2 style syntax. It is intended to support those
extensions in GNU Modula-2.
More information on the project's work in progress can be found at
http://en.wikipedia.org/wiki/Objective_Modula-2 or by sending email
to objm2-AT-yahoo.co.uk.
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.
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. The last couple of years' are on
the forum at arjaybb.com.
2.2 Amiga lists
2.3.1 A general list for Amiga Modula2/Oberon programming. This is
available in a similar manner at amiga-***@virginia.edu. It is not
oriented toward any specific compiler.To subscribe, send mail to
***@virginia.edu containing the message "subscribe
***@youraddress.yourdom amiga-m2".
2.2.2 A mailing-list for the Amiga Turbo Modula-2 Compiler written by
Amritpal S. Mann. To subscribe, send a message to
***@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-***@econet.demon.co.uk.
2.3 Gardens Point Modula-2
To join the GPM mailing list, send mail to ***@dstc.qut.edu.au
with the subject line blank and the body
of the message containing:
subscribe gpm
info gpm
end
Mail sent to ***@dstc.qut.edu.au gets automatically forwarded to all
subscribers on the list. The development team are of course subscribers.
2.4 Win32
To join, send mail to ***@nhm-wien.ac.at
with a blank subject line and the body Subscribe m2-win95-nt-l (your name)
Maintainer: Peter Stadler
2.5 ModulaTor
This is a regular publication by Guenter Dotzel of ModulAware.
Back issues are available at: http://www.modulaware.com/mdltr_.htm
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 ***@spectraweb.ch
voice +41/65/52 03 11
fax +41/65/52 03 79
Excelsior, LLC (replaces XDS)
activity M
products Native XDS-x86 - Modula-2/Oberon-2 2.32 compiler for x86
(Windows, OS/2, Linux)
XDS-C - Modula-2/Oberon-2 "via C" cross compiler (multiple platforms)
H2D (freeware) translates C header files to M2 Def Mods
Portable run-time library in C source code form
POSIX and Win32 API definition modules platforms PC/OS/2 V3
V4 (Warp), PC/Win95, PC/WNT PC/Linux,
Sun/Sparc Solaris, Sun/Sparc SunOS, HP PA-Risc/HP-UX,
others on request. (Mac no longer supported.)
e-mail ***@excelsior-usa.com
also sold by ModulAware, and Real Time Associtaes
check the shareware/demo section (below) for product availability
Excelsior WWW home page:
http://www.excelsior-usa.com/
fully functional evaluation kits are available from the site
also see ModulaWare, and Real Time Associates for product availability
Gardens Point
activity MD
products Gardens Point Modula-2
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 ***@qut.edu.au
contact Jeffrey Ledermann
e-mail ***@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 ***@DesignTools.co.nz
voice +64 9 6300 558
fax +64 9 6301 720
web http://www.designtools.co.nz/
The (Mill Hill) J.Neuhoff - mhccorp.com
activity MD
product Canterbury Modula-2 for Java (PIM, non-ISO
object oriented extensions similar to Oberon-2 )
platform Any platform which supports Java, such as
Windows XP/2003, Linux, Mac OS X, Unix
contact J.Neuhoff
e-mail neuhoff at mhccorp.com
WWW http://www.mhccorp.com/modula-2.html
demo http://www.mhccorp.com/modula-2.zip
office MHCCorp.com
P.O.Box 4310
Colchester-Brightlingsea
CO7 0WR
United Kingdom
ModulAware
activity MD
prod/plat Compaq OpenVMS Alpha: Modula-2 and Oberon-2
64 bit native-code compiler, MaX V5.02 and A2O V3.0, and
64 bit Oberon System V4
Compaq OpenVMS VAX: Modula-2
32 bit native-code compiler, MVR V4.16
web www.modulaware.com
p1 GmbH
activity MD
products MPW, Code Warrier, and XCode hosted ISO compliant compilers
NOTE: Current(sic) versions of MPW have odds and sods for ISO Modula-2
written by R. Sutcliffe, for your editing enjoyment. Also note that
Code warrior is defunct as far as OS X is concerned.
platforms Macintosh OS9 (MPW), OS X (command line and Xcode; will
generate universal binaries)
office Hogenbergstrasse. 20
80686 Munich
Germany
contact Elmar Henne
e-mail ***@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
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 a company that will
not continue the compiler. The last release was number 31.
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 ***@TerraTerra.ch
web http://www.TerraTerra.ch/
3.2 Where can I get a free/shareware compiler on the net?
Fitted Software Tools (FST) Modula-2 for DOS
ftp://ftp.psg.com/pub/modula-2/fst/fst-40s.lzh
contact: Roger Carvalho
e-mail: ***@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.
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: 2.5-AOS4-Pre-Release (21.1.2005)
Description: compiler for AOS4 running under M68K emulation
Author: ***@virginia.edu (Tom Breeden)
Status: "as-is", unwarrantied, freeware compiler package
Platforms: AmigaOne AOS4 Pre-release, Amiga 68K or WinUAE AOS 3.9
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
"first cut" IDE using CygnusEd or GoldEd
Future: further development, if any, will be targeted to replacing
with a PPC compiler
GCC Version
Title: m2f
Version: 4.2
Entered-date: 5NOV01
Description: a complete Modula-2 compiler based on 2nd Edition PIM
Keywords: Modula-2 compiler linux
Author: ***@glam.ac.uk (Gaius Mulley)
Maintained-by: ***@glam.ac.uk
Site: http://floppsie.comp.glam.ac.uk
Platforms: gcc
Copying-policy: GPL
available in source and binary in rpm or tar.gz format from
Features:
+ Full debugging via emacs/gdb
+ -students flag performs extra semantic checking
for dangerous novice programming styles.
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
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
***@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)
http://www.sysecol.ethz.ch/SimSoftware/SimSoftware.html#MacMETH
Note that MacMETH is also 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. RAMSES contains also the 'Dialog Machine', a platform
independent GUI (see
http://www.ito.umnw.ethz.ch/SysEcol/SimSoftware/RAMSES/DialogMachine.html).
'Dialog Machine' implementations exist for MacOS, GEM (no longer
available), Windows (3.1 .. up to current versions), and Unix. All
software we have developed, is offered via the internet as freeware.
Contact: Andreas Fischlin ***@ito.umnw.ethz.ch
MOCKA - Modula Compiler Karlsruhe (Non ISO)
Universitaet Karlsruhe
Institut fuer Programm- und Datenstrukturen
Vincenz-Priessnitz-Strasse 3
D-76128 Karlsruhe (FRG)
Phone: *-49-721-608 6088 FAX: *-49-721-691462
contact: Thilo Gaul
email: [modula|gaul]@ipd.info.uni-karlsruhe.de
SUN 4 | SUN OS | SPARC |
SUN 4 | Solaris2.x/SunOS 5.0| SPARC |
DEC Station | ULTRIX | R3000, R2000 (MIPS) |
Silicon | IRIX | R3000, R2000 (MIPS) |
Graphics | | |
Sony NEWS | News | MC 68020 with 68881 |
SUN 3 | SUN OS | MC 68020 with 68881 |
HP 9000/300 | HPUX | MC 68020 with 68881 |
HP 9000/700 | HPUX | C back end |
RS6000 | AIX | C back end |
PC | Linux | 80386 | +
PC | 386BSD | 80386 | +
C-back end | UNIX | different |
translates | | |
M-2 To C | | |
The versions marked with a + are free; no order form must be sent, no
license fee to be paid. If you use them, please send an email to
***@ipd.info.uni-karlsruhe.de.
For more information have a look to
http://www.info.uni-karlsruhe.de/~modula/index.php
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 ***@mathematik.uni-ulm.de
Excelsior, LLC
( Windows 95/NT, OS-2, Linux native code and "via C" compilers. ISO
compatible.)
Makes demo and pre-release versions with some restrictions available.
The download site for all versions is:
http://www.excelsior-usa.com
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: GPM, ModulAware, Stony Brook
Windows95/NT: Stony Brook, XDS
OS/2: Mill Hill, XDS, GPM
MacOS9: p1 (version 7.3
MacOS X: p1 (version 8)
BSD: GPM
Linux: XDS, GPM
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.
--
Rick Sutcliffe Professor Math/Cmpt Trinity Western University. Try
<http://www.arjay.bc.ca> for Christian SF, books on Modula-2 and
Ethics in Technology. Forum at <http://arjaybb.com>
Rick Sutcliffe Professor Math/Cmpt Trinity Western University. Try
<http://www.arjay.bc.ca> for Christian SF, books on Modula-2 and
Ethics in Technology. Forum at <http://arjaybb.com>