15

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?

10
  • 9
    modula2.org/index.php ?
    – UncleBod
    Sep 4 at 10:06
  • 2
    The language was in active use right up to the day I retired. For all I know it probably still is.
    – Chenmunka
    Sep 4 at 11:54
  • 8
    Followed up by Modula-3 and Oberon
    – chthon
    Sep 4 at 13:05
  • 26
    A 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 4 at 18:15
  • 3
    It 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 4 at 20:16
61

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.
19
  • 6
    I 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 4 at 21:58
  • 6
    @jamesqf: I would classify Go, Scala, and Java at least as moderately successful in the grand scheme of things. Sep 4 at 22:07
  • 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... .) Sep 5 at 3:08
  • 11
    To 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. Sep 5 at 4:32
  • 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. Sep 5 at 20:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.