[comp.lang.misc] Modula

mrys@ethz.UUCP (Michael Rys) (04/09/90)

In article <1990Mar30.132508.25555@uwasa.fi> fs@uwasa.fi (Filip Sawicki LAKE) writes:
>Other languages:
>
>MODULA:
>	Superset of Pascal. Very strongly typed, though typecasting is
>	allowed. Pascal inconsistences are gone, and there are no
>	functions with variable number of parameters.
>
>	ADV: modularization, thus easy type checking and so on. Two types
>	of modules: "definition" module and "implementation" one allow to
>	change real working code of module without recompiling all program.
>	Separate compilation is the greatest advantage over Pascal.
>	
>	DISADV: slow compilation. Upper case keywords (!!!). Painful I/O:
>	separate procedures for printing/reading each variable, like 
>	WriteChar, WriteInt and so on. Following strange upper/lower case
>	rules can drive anyone insane and produce ashes from his fingers.
>
>	You can't write Unix in Modula, but lot's of Atari St programs are
>	written in it.
>

1. Compilation speed depends upon the implementation. For my taste
   Modula-2 generates faster code (faster as adverb and adjective) than
   a lot of C compilers, if you use a good implementation.

2. There is no need to write UNIX in Modula-2 since M2 is designed for
   small, effective, efficient and controllable tasks. This might even
   include an operating system (e.g., there are several OS developed at
   the ETH for single-user workstations (e.g. Medos, Medos-2 etc.) and
   there might be a multi-user OS as well).

3. The history of M2 (as far as I remember):

   After visiting PARC Xerox and playing with Mesa, Wirth came back to
   the ETH and designed Modula a true system programming language. This
   language was revised to a full programming language called Modula-2
   in the late seventies (around 1977/8), which included separate and
   independent compilation, "strong" and static type checking, the
   concept of coroutines for multiprocessing and some other features
   (like the priority scheme). The language evolved, that means the 
   coroutine concept was taken out of the language, since you can easily
   implement it as a module. It also means that the standard library
   modules weren't as standard as many hoped, but if you find a better
   way, why not providing it in an academical "product"?

   To the end of the eighties, when OOP and standardized languages came
   en vogue, several OOP-dialects and successors like Modula-2+ and
   Modula-3 appeared and a Modula-2 standard was "designed". Since Wirth
   doesn't like standardization (;-) and thought the concept of
   extenting not only procedures (as you already could do with modules),
   but also types, he and his group designed Oberon which allows type
   extension (basic point of OOP!). 

Sorry for the length, more on request.../Michael


P.S.: Followups go to comp.lang.modula2

+---------------------------------------------------------------+
| Michael Rys, V. Conzett Str. 34; CH-8004 Zuerich; Switzerland |
+---------------------------------------------------------------+
| UUCP:  mrys@ethz.UUCP or       EAN:     mrys@ifi.ethz.ch	|
|        mrys@bernina.UUCP       IPSANet: mrys@ipsaint		|
| Voice: +41 1 242 35 87					|
+---------------------------------------------------------------+
-- Wovon man nicht sprechen kann, darueber muss man schweigen. --
       Ludwig Wittgenstein, Tractatus logico-philosophicus