The ModulaTor
Erlangen's First Independent Modula-2 Journal! Nr. 0/Jul-1990
_____________________________________________________________
Random Modula-2 News
by Guenter Dotzel, ModulaWare
1. A colored Modula-2 Syntax Poster (size 120cm * 60cm) designed by the
ACM-Student-Chapter of the Computer Science Dept., San Francisco State University,
SF, CA 94132 can be ordered directly from SFSU for US$14.- each or US$30.- for three.
Pricing includes shipping cost.
2. A new international journal: Structured Programming, ISSN 0935-1183, Title No.
378, Managing Editor: Gustav Pomberger, editorial board: William B. Ackermann,
Gerhard Goos, David Gries, Juerg Gutknecht, Robert Hood, Donald E. Knuth, Charles A.
Lins, Steve S. Muchnick, Hausi Mueller, Richard Ohran, Niklaus Wirth. Four issues per
year: US$ 55.- (incl. p&p) or DM 86.- plus p&p outside North Amerika (Springer-Verlag,
Heidelberger Platz 3, D-1000 Berlin 33, FRG). Several issues have been published
already and every issue contained an interessting article about Modula-2.
3. Modula-2 book: There is a new book entitled "Portable Modula-2
Programming", by M Woodman, R Griffiths, J Souter and M Davies, McGraw-Hill
International, ISBN 007 707201 4, 512pp, price about DM 50.-. Order through your local
bookseller.
4.
Report from the First International Modula-2 Conference in Oct. 11-13., 1989 in
Bled, Yugoslavia:
110 participants attended the conference and 30 papers on Modula-2 were presented in
two streams. In the pre-conference workshop on "Sharing Experiences in the Use of
Modula-2" six presentations on VRTX integration into M2 environment, M2 compiler
design, M2 in telemetry were given. At the exhibition two Modula-2 development
systems for Transputers were demonstrated.
In my personal view, the two most important talk was given by Niklaus Wirth,
ETH-Zuerich, entitled "Modula-2 and Object-Oriented Programming" that included a
comparison with his new language Oberon (B1).
The second interesting talk was by Roger Henry, University of Nottingham, about the
"State of the ISO/IEC/BSI-Modula-2 Standard" (B2):
The Modula-2 standardization group is active since 1984 and have had 50 meetings.
The goal is to have an identical BSI and ISO Standard of Modula-2 by the end of 1990.
Modula-2 will be the first language with their semantics defined in a mathematically
rigorous manner, the VDM specification method. Compiler validation services will be
offered by BSI.
The major changes in Standard Modula-2 are
(2a) declaration of recursive procedure types (as with pointer types), where type
T is used in the declaration itself. Example:
TYPE T = PROCEDURE (CHAR, VAR T)
PROCEDURE x (ch: CHAR; VAR cont: T);
BEGIN (* . . . *) END x
(2b): procedure constansts: CONST WriteLn = IO.WriteLn;
(2c): opaque types may be declared identical to another (possibly imported)
obaque type.
(2d): the system dependent type transfer functions without conversion of
representation such as CHAR(i), where for example i is of type INTEGER can
now be expressed using the function procedure CAST from module
SYSTEM: SYSTEM.CAST(CHAR,i).
(2e): number conversion: VAL (REAL, i) achieves the same result as FLOAT
(i),
VAL (INTEGER, r) is INT (r),
VAL (LONGREAL, i) is LFLOAT (i),
VAL (CARDINAL, r) is TRUNC (r),
where in all cases r and i may be of signed, unsigned, real or longreal type.
(2f): the type BITSET was moved to module SYSTEM. The qualified identifier
before the set constructor is no longer optional. Set constructors are allowed
to be a general expressions.
(2g): structured value constructurs are introduced including a repetition count
reserved word "BY". Examples:
TYPE R = RECORD name: ARRAY[0..19] OF CHAR; score: INTEGER; END;
CONST C = R{"James", 15};
TYPE A = ARRAY [1..3] OF INTEGER;
B = ARRAY [0..99] OF A;
VAR x: INTEGER; y: A; z: B;
BEGIN
x:=1;
y:=A{x BY 3};
z := B{y BY 30, {0 BY 3} BY 70};
Additionally, record designators in a WITH statement may now designate a
record constant.
(2h): New instrinsic function LENGTH for strings. Furthermore literal
representation of control characters in strings.
(2i): multi-dimensional open arrays with function HIGH (a), HIGH(a[0]),
HIGH(a[0,0]) to get the upper bound index value.
(2j): (dynamically) protected modules: new standard identifiers (procedures)
ENTER and LEAVE, INTERRUPTIBLE and UNINTERRUPTIBLE, new type
PROTECTION and standard function PROT.
(2k): Coroutine related items are moved from SYSTEM to another pseudo
module COROUTINES. New identifiers in SYSTEM: BITNUM, the bit number
type for declaration of set types with BITSET properties and LOC as a name
for the smallest addressable storage unit.
(2l): Standard separate modules: Storage, Exceptions, LowReal,
LowLong. Separate modules: RealMath, LongMath, the I/O-Library,
Processes, Semaphores, Strings, Termination and possibly in the
future access to system clock and BCD arithmetics.
John Souter, BSI Quality Assurance, talked about the "Position of Modula-2 among
Programming Languages" (B3). He illustrated the current position and speculated
about the future. The only competitors to Modula-2 are in his opinion Ada, C and Pascal.
John compares the languages concerning safety critical aspects, standardization, and
compiler validation.
An interesting application written in Modula-2 was presented by Brian Kirk, Robinson
Associates: "Zen and the Art of Modular Engineering" (B4). Brian described the
development phases of a real software product in the CNC/CAD-area that consists of
three large programs with in total 150 modules, two Mbytes of executable code and
unbelievable 30 Mbytes of source code. This should be a topic for the famous Guiness
Book of Records.
Other papers presented at the M2 Conference included
B5. object-based real-time programming (University of Calabria/Italy),
B6. M2 language extension for save object-oriented programming (ETH-Zuerich/Switzer-
land),
B7. multiple inheritance in M2 (ETH-Zuerich/Switzerland),
B8. definition of objects in M2 (University of Bologna/Italy),
B9. permanent modules in M2 (University Genova/Italy),
B10. polymorphic functions in M2 (J. Stefan Insitute, Ljubljana/Yugoslavia),
B11. re-useability in M2 (SISMAT, Genova/Italy),
B12. M2 in distributed environment (LSI-IRIT Toulose/France),
B13. parallel programming in M2 (GMD-Karlsruhe/FRG),
B14. parallel programming in M2 (ITC/SAS, Bratislava/Czechoslovakia),
B15. proposed M2 Standard I/O libraries (University of Nottingham/GB),
B16. M2 and software engineering (University of Linz/Austria),
B17. presentation manager document object handler in M2 (IBM ASD Nordic Lab,
Lidingo/Sweden),
B18. abstract data types in M2 (University Tuebingen/FRG),
B19. user interface toolkit in M2 (Modula-2 CASE Systems A/S, Oslo/Norway),
B20. M2 multi-processor environment (University of Loughborough/GB),
B21. real-time operating system in M2 (University Dresden/GDR),
B22. access of a ISDN-Card in M2 (University of Augsburg/FRG),
B23. application of M2 in urban transportation vital control system (Matra Transport,
Montrouge/France),
B24. teaching M2 (Polytechnica di Milano/Italy),
B25. light-weight processes in M2 (Ecole National Superieure EEHI, Toulouse/France),
B26. experiences with M2 in concurrency and fault tolerance (University of
Madrid/Spain),
B27. real-time environment in M2 (Polytechnic of Wales/GB),
B28. object-oriented database programming (University of Sarajevo/Yugoslavia),
If you are interested in obtaining the proceedings, see Chap. 6 below.
5.
Modula-2 for Transputers:
Here I'd like to give more details on one of the Modula-2 Transputer system from the
Modula-2 Conference exhibition. The system consists of compiler, symbolic network
debugger, library modules and utility programs, optional multi-window/multi-file editor
with mouse and menu support. It reproduces the complete workstation programming
environment for Modula-2 software development as implemented at ETH-Zuerich on the
Lilith. All programs are invoked from a host (i.e. any MicroVAX, PC or VME system with a
single DMA Transputer link adapter card, a serial link with 20 Mbit/s) and run on the
Transputer(s). The compiler directly generates code for the Transputer. Source files are
kept on the host system. File-transfer is accomplished by a server running on the host.
Standard Modula-2 (Wirth's 3rd edition) is used for parallel programming. Parallelism is
provided through Modula-2 library modules (e.g.: module System allows to boot a
Transputer from a program file on the host). The main features of the system are
(a) run-time network configuration and program loading,
(b) load-linking with preemptive binding to resident modules for programs and overlays,
(c) true dynamic process spawning,
(d) server functions accessible to all processes in all processors,
(e) simultaneous execution of separate unrelated programs with optional switcher-
controlled program connection to keyboard, mouse and display,
(f) fully featured symbolic network debugger.
The M2 Transputer system was developed by csa/U.S.A. together with Wirth's Institut fuer
Computersysteme at ETH-Zuerich/Switzerland. The software with all elements described
is now available for less than US$ 1000.-. I've seen a Modula-2 program running on 33
Transputers, that calculated and displayed in real-time the Mandelbrot set for 1024*768
pixels with 256 iterations/colors in about two seconds. Of course the same program
runs slower on a single transputer, but without re-compilation.
6. The Proceedings of the First Int'l Modula-2 Conference can be obtained by sending a
check (GB \243 20.- each) to Modula-2 (E-4), J. Stefan Institute, Jamova 39 YU-61111
Ljubljana, Yugoslavia. The papers presented during the conference showed clearly the
maturity and applicability of the language Modula-2 in all aspects. Modula-2 is now firmly
established in the academic community as both a teaching and a research language. Its
industrial use is spreading rapidly, proving suitable for both small and large systems,
applications ranging from personal computer's screen management functions through to
embedded real-time applications.
7. The Department of Electrical & Electronic Engineering of the Polytechnic South West
invites all Modula-2 users to the Modula-2 Conference at Plymouth/GB in December
12-13., 1989. The invitation reads as follows:
The Modula-2 programming language has assumed a growing prominence in education,
training and commercial and industrial applications. This is the third annual conference in
Plymouth intended to disseminate ideas and practices. The principal objectives of this
year's conference are to promote A. teaching methods, B. development/availability of
self-study and tutorial packages, C. forming the link between language and programming
profiency and its application to, for example, solving control and communication
problems in engineering, D. Review papers prefacing further developments,
comparisons with other languages, etc. Intended audience: all persons teaching, training
in software, engineering, programming and practicing.
If you are interested in the Conference Proceedings please contact Dr. M Al-Akaidi,
Department of Electrical & Electronic Engeneering, Polytechnic South West, Drake
Circus, Plymouth PL4 8AA/GB. Phone number in GB: 0752 232583.
8. On the Right Way to Oberon
Oberon has one very attractive feature: The Oberon language definition as published by
N. Wirth in Software - Practice and Experience, Vol 18(7), John Wiley & Sons (July 1988)
has only 19 pages. If you look close enough to an Oberon program that doesn't make
use of the type extension feature, you can see almost no difference to Modula-2.
LECTOR/PS Textprocessing, file [dw2]m2upda.dw2, \251 27-Apr-1990, 01-Oct-1991
___________________________________________________________________
IMPRESSUM: The ModulaTor is an unrefereed journal. Technical papers are to be
taken as working papers and personal rather than organizational statements.
Items are printed at the discretion of the Editor based upon his judgement on
the interest and relevancy to the readership. Letters, announcements, and
other items of professional interest are selected on the same basis. Office of
publication: The Editor of The ModulaTor is Guenter Dotzel; he can be reached
by tel/fax: [removed due to abuse] or by
mailto:[email deleted due to spam]
ModulaWare home page
The ModulaTor download
![]()