I studied at the Federal Institute of Technology Zurich or ETHZ in Switzerland, where Professor Dr. Niklaus Wirth developed MODULA-2. What happened to his project?
-
9https://www.modula2.org/index.php ? – UncleBod Sep 04 '21 at 10:06
-
2The language was in active use right up to the day I retired. For all I know it probably still is. – Chenmunka Sep 04 '21 at 11:54
-
8Followed up by Modula-3 and Oberon – chthon Sep 04 '21 at 13:05
-
1It's still around even though Dr Wirth moved on. M2SF has been working on an updated language definition and compiler. The ADW and XDS compilers are good current choices for Windows. comp.lang.modula2 is pretty slow, but is still in use. – Brian Knoblauch Sep 04 '21 at 14:02
-
28A critical part of the question is missing: "I've read the relevant Wikipedia page, and the following questions are left unanswered: ...". Thus the question does not show any research effort. – Leo B. Sep 04 '21 at 18:15
-
3It may be useful if you could specify what exact you're asking about. Is ist the team, the project itself, the language, or it's influence on others until now? While Jörg did a good job in catching as much as possible, it can't do more than giving an as well non-specific answer. – Raffzahn Sep 04 '21 at 20:16
-
Every other game I played on my Atari ST was made with Modula-2. – AndreKR Sep 05 '21 at 01:53
-
1Slightly OT, but in university, we wrote an entire operating system in Modula-2. I recall several features that were very helpful in doing so, notably the ability to map a variable name to memory in an assembler-like fashion, which was very useful in that era. – Maury Markowitz Sep 08 '21 at 11:29
-
@MauryMarkowitz One of the realtime systems books in the early 90s used Modula 2 together with Ada to illustrate concepts in real time programming. – Stefan Skoglund Sep 09 '21 at 08:29
-
@MauryMarkowitz: Not surprising, Modula-2 was designed to be the one-and-only language for the Lilith system, including but not limited to, the OS, libraries, and applications. – Jörg W Mittag Sep 16 '21 at 18:24
1 Answers
If you are asking whether Modula-2 as a programming language is still in use today, then I believe the answer is "Yes", although it was never a mainstream language. There are still active users and there are still actively maintained compilers.
If you are asking whether Modula-2 as a point in the design space of programming languages was in any way influential, i.e. if you are more interested in the ideas embodied in Modula-2, then there are several ways in which Modula-2 survives until today.
Looking at Niklaus Wirth himself, Modula-2 is only one small step in the evolution of what is sometimes called the "Wirthian languages":
- Algol W was Niklaus Wirth's and Tony Hoare's proposal for an evolution of Algol. They believed that the committee was going into a wrong direction with the language that would become Algol-68, making too many changes to Algol, and making the language too big and too complex. However, their proposal was ignored.
- Then he realized, since the committee was not interested in his dialect(s) of Algol, there was no need to actually make them compatible with Algol, and thus he designed a language from a completely clean slate: Pascal.
- Based on the experience with Pascal, he designed Modula, which incorporated more features for Modular Programming as well as System Programming features. Modula had a critical flaw in its type system and was thus only short-lived.
- Modula-2 was co-designed with the Lilith workstation to be the single programming language needed for everything from the lowest-level hardware interaction to the OS to the applications. Lilith and Modula-2 were co-designed, e.g. the hardware was optimized to execute the byte code produced by the Modula-2 compiler (itself written in Modula-2).
- Oberon was the successor to Modula-2. Its major new feature is the ability of being able to create new types by extending existing types. (Similar to inheritance in a classical OO language.) Similar to Modula-2, it was co-designed with the Ceres computing system.
- Oberon had several dialects as well, e.g. Active Oberon (experimenting with concurrency), Object Oberon (OO), and Zonnon (transporting the "spirit" of Oberon onto Microsoft's .NET platform). However, these are mostly dialects, not true successors.
- The mainline successor is Oberon-2, a superset of Oberon, incorporating OO features based on experiences with Object Oberon.
- The successor to Oberon-2 (despite its name) is Component Pascal. Component Pascal is still actively maintained by Wirth's group at ETHZ.
These are just the languages that were designed by Niklaus Wirth himself (or some of the later ones other members of his research group). There are other languages in the family as well that were designed outside of ETHZ, for example:
- Modula-2+, designed by DEC and Acorn, adding Exceptions, Concurrency, and Automatic Memory Management. Based on Modula-2 and Mesa.
- Modula-3, designed by DEC and Olivetti, with Niklaus Wirth as a visiting consultant, but with only minimal hands-on involvement in the design. Based on Modula-2, Modula-2+, and Cedar.
- Turbo Pascal by Borland. Obviously based on Pascal, but with ideas about modularity taken from Modula-2, among other things.
- Object Pascal by Borland. Turbo Pascal extended with Object-Orientation, not based on, but partially inspired by Oberon.
- Delphi by Borland / Embarcadero. Successor to Object Pascal.
- Objective Modula-2. A very interesting language that was designed by taking the "Objective" part of Objective-C (which is essentially Smalltalk) and transplanting it onto Modula-2. It was advertised by its designers as a better alternative for iOS app development during the early days of the iPhone SDK.
- A more indirect influence is on C# via Anders Hejlsberg. Hejlsberg was the author of Turbo Pascal, and an influential designer on all of Borland's languages, IDEs, and compilers. Through this work, he was familiar with all of Wirth's languages, including Modula-2. Some ideas of Modula-2 do show up in C#.
- Several students of Niklaus Wirth and members of his group went on to design their own influential languages. E.g. Robert Griesemer worked with and under Wirth and worked on the design of Object Oberon. After working on Strongtalk, the JVM, and V8, he is now most well-known as one of the principal designers of Go. Martin Odersky wrote Turbo Modula-2, worked on the designs of Modula-2 and Oberon, and is now most well-known as the designer of Java Generics (together with Phil Wadler), the original author of the current incarnation of Oracle's Java compiler, and the designer of Scala and Dotty.
So, to answer your question in short:
- Modula-2 is still being used.
- The direct lineage of languages Modula-2 was a part of still exists.
- Even outside of that lineage, Modula-2 has spread its genes.
- People who worked on its (or its successors') design went on to design other influential and successful languages.
- 2,330
- 14
- 17
-
7I think "successful" is perhaps an overstatement. Perhaps something like "niche languages still in use"? For myself, my first couple of undergrad CS courses were taught in Pascal. Then the university got a Unix system & C compiler, and it seemed like Pascal just disappeared. – jamesqf Sep 04 '21 at 21:58
-
7@jamesqf: I would classify Go, Scala, and Java at least as moderately successful in the grand scheme of things. – Jörg W Mittag Sep 04 '21 at 22:07
-
1Most of this is outside my experience, but a name I did recognize was Anders Hejlsberg—in addition to C♯, he’s now working on Typescript. I know little of C♯, and nothing of Modula-2, but I wonder if that could be another language influenced here. – KRyan Sep 04 '21 at 23:55
-
3@KRyan C# is roughly microsoft's version of Java, back-mixed with C++. Not very Pascal-like. I feel as if microsoft's old visual-basic's, with their wordiness, seemed more Pascal-ish (but I can't say about the philosophy -- error-checking, shortcuts, built-in containers, etc... .) – Owen Reynolds Sep 05 '21 at 03:08
-
2@Jörg W Mittag: Don't know much about Go or Scala. Java seems to me like C without pointers, not anything descended from Pascal. – jamesqf Sep 05 '21 at 03:09
-
15To be fair, particularly in the PC world, there was very little space for M2 with Turbo Pascal in the room. It offered enough of the benefits (notably modularity via units -- inspired by UCSD Pascal), was dirt cheap, and a great development environment. M2 with it cruder tools, case requirements, and speeds just wasn't able to breath in that space. TP was simply a friendlier M2. – Will Hartung Sep 05 '21 at 04:32
-
2Anders Hejlsberg was as far as I know not involved in Turbo Modula-2 - that was a German product marketed by Borland - but Turbo Pascal which then got objects and turned into Delphi before going to Microsoft where he ended up designing the Microsoft Java clone C#. I think that paragraph in the answer should be revisited. – Thorbjørn Ravn Andersen Sep 05 '21 at 11:09
-
2@ThorbjørnRavnAndersen: Ha, indeed. Turbo Modula-2 was Martin Odersky, not Anders Hejlsberg. I mixed them up. Interestingly, it was discovering Modula-2 and writing a compiler for it that made him interested in joining Niklaus Wirth's group, not the other way round. I did not know that. I would not be surprised, though, to learn that Anders Hejlsberg was in some way involved in maintaining, developing, and porting Turbo Modula-2. – Jörg W Mittag Sep 05 '21 at 11:19
-
@Will Hartung: I wonder what the sales/use of Turbo Pascal was, vs Turbo C? A quick search didn't find anything. – jamesqf Sep 05 '21 at 16:04
-
5@jamesqf My opinion, of course, but Pascal is "easier" to use than C. Fewer wacky symbols, easier to read source code. Pascal, in general, offered things like range checking out of the box, stronger typing, making development easier. I was given the choice back in the day, I chose Delphi over Turbo C++ because of the language, because of the libraries, etc. At a check box level, they were very similar (including GUI and DB integration). But operationally, Delphi was much easier to use than C++ was. C and C++ have a lot of footguns. Pascal is better at making your foot a smaller target. – Will Hartung Sep 05 '21 at 20:22
-
3@Will Hartung: I disagree, of course. I actually liked the "wacky symbols", and still do, because they make it easy to see what the code is doing - ok, make that "what you intended the code to do, even if it doesn't" :-) Though as I recall, the worst thing about Pascal was that the entire program had to be a single unit, with nested procedures, while C allowed you to compile things separately, and call functions from anywhere. And of course one deals with foot shooting by learning to aim better :-) – jamesqf Sep 05 '21 at 22:39
-
1@jamesqf: UCSD Pascal introduced units for separate compilation. Turbo Pascal 4 incorporated similar concepts. Earlier Turbos relied on "includes" (Borland had several libraries they sold in source form to be "included" with your code). VAX Pascal, of course, could pretty much link to anything (C, Fortran, BLISS, BASIC). The early, original Pascal had many issues, but most of them were resolved with first contact with the Real World(tm). I never used the other Pascals of the day. – Will Hartung Sep 06 '21 at 03:42
-
@jamesqf as will hartung wrote : the more mini-/main-frame directed Pascals had to have the ability to other system procedures. PRIME's Pascal was such a case. So is IBM's Pascal/VS. – Stefan Skoglund Sep 06 '21 at 13:30
-
1@Will Hartung: And I never used any of those other Pascals. I think your "contact with the Real World(tm)" is spot on, though, and really highlights the difference between Pascal, which if I'm not mistaken started as an academic exercise, and C, which was in the real world basically from day 1. Which reminds me of another pet peeve with Pascal: simple assignment requires 3 keys - (shift)colon and =, C only one. – jamesqf Sep 06 '21 at 16:17
-
3@jamesqf - oh, that's my pet peeve with every language that uses the identity operator
=for assignment: they sacrifice meaning to save one lousy character of input. – dave Sep 06 '21 at 21:21 -
1In the mid to end of the 90's, our high school (in Germany) used Turbo Pascal as the first programming language to teach to interested students. – Paŭlo Ebermann Sep 06 '21 at 22:25
-
Back in the day, I used to program on my Amiga in Modula-2. Did some good stuff. – T.E.D. Sep 07 '21 at 15:36
-
@another-dave: You must be a better typist than I :-) I also find the logic quite convoluted: much as I hate to use the i-word, using = for assignment does seem intuitive to me. – jamesqf Sep 07 '21 at 16:48
-
2
-
I love modula 2 on old MS-DOS machines, but it cannot be used on Windows PC! Or i do not know how. – Tom Tom Apr 01 '23 at 22:11
-
-
@RandomB Cool, can we use, program newer I/O card ex PCL 724 from Advantech? – Tom Tom Apr 04 '23 at 16:37