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