The A-Z of Programming Languages: Modula-3

Luca Cardelli on why Modula-3 played a major role in popularizing the notion of type-safe programming and why Modula-3 is still vastly superior to programs such as Java.

In your opinion, what lasting legacy has Modula-3 brought to computer development?

I think what's important is that Modula-3 played a major role in popularizing the notion of type-safe programming. Cedar/Mesa was tremendously innovative, but was always kept "secret" at Xerox (I doubt that even now you can get its manual). And ML (the other root language of type safety) was always an academic non-object-oriented language. Modula-3 was the stepping stone from Cedar/Mesa to Java; and today, type-safe programming is a given. I am personally very proud (as a former ML type-safe programmer) that I was able to hang-on to Modula-3 until Java came out, therefore avoiding the C++ era altogether!

What are you proudest of in terms of the language's development and use?

The development of the type system, and the module system. In terms of use, we used it for over 10 years (including Modula-2+) to write all our software, from OS's to GUI's, for several million lines of code. One of the most amazing features of Modula-3 was the Network Objects, (but that was not my work), which was transferred directly to become Java RMI.

Where do you see computer programming languages heading in the future, particularly in the next 5 to 20 years?

Functional programming is coming back. Even an object-oriented language like C# now is a full functional language, in the sense that it supports first-class nameless lambda abstractions with proper scope capture and type inference, and developers love it. Other proper functional languages (which do not include object-oriented features) like F# and Haskell are becoming more and more popular.

Do you have any advice for up-and-coming programmers?

Read other people's code!

Is there anything else of interest that you'd like to add?

Only that the most exciting Modula-3 design meeting ever, was abruptly interrupted by the San Francisco 7.1 earthquake.

Tags a-z of programming languages

More about ARCetworkMicrosoftWikipediaXerox

1 Comment

Daniel Benavides


Annotations to the interview

Just a pair of comments:
The open source release of cm3 (Critical Mass Modula-3) development environment since 2000 and more recently of the web browser-based Integrated Development Environment called CM3-IDE gives an amount of support to several platforms (SPARC, x86, x86_64, PowerPC on Gnu/Linux, Windows, BSD, Mac and Solaris platforms) and have been recently contributed (updated) a threading implementation, a new 64 bit native language primitive type and a new garbage collection technique, the graphic libraries built on top of X11 server and Windows windowing systems, the gcc-4.3 based back end (available for almost all platforms) besides setting an automatic regression test framework for daily revising of the development environment. Also a gdb-6.4 extension based debugger, m3gdb.
About huge projects of Modula-3 there are several ranging from a life-critical 911 emergency call system, an extensible operating system, Spin, a commercial Java Virtual Machine, Critical Mass JVM, web servers including one for web development, hm3, animation systems built on top of Modula-3 and Obliq for augmented reality, Coterie, and for teaching purposes, Zeus and a so called Digital Desktop paradox environment. Also a Concurrent Versions System, with server/client platform highly efficient used for source code downloading on the BSD operating systems and in some GNU/Linux software, Cvsup. Also a functional programming language environment, with concurrency, exceptions and more, UFO . Besides compilers, cm3 (almost the entire integrated development environment is implemented in top of Modula-3), m2tom3, a debugger, ldb, and a constraint based graphic editor, Juno-2, and literate programming tools, as m3noweb and M3doc. And an on-line reading application with an editor and postscript to reading format converter, virtual paper. Also is used on embedded systems, in network interface cards, SPINE, on PDA, PARCTAB. Also a structured-oriented database management system (used on a persistent extension of Modula-3, Persistent Modula-3), a Graph Grammar Programming Environment, Progres.
The base libraries were formal revised with an Extended Static Checker, ESC/Modula-3 implemented also in Modula-3 (then ESC/Java) as a research project in prior Digital Equipment Corporation Systems Research Center, then Compaq Systems Research Center, now property of Hewlett Packard; specially the the Readers/Writers library, looking for index out of bound errors, nil dereferences, race conditions and deadlocks, using an automatic theorem prover also built on Modula-3, Simplify; all checking annotated source code in the presence of information hiding and data abstraction.
Also there is an upcoming Eclipse plug-in for the language, m3clipse.
For being more fair with the teachers, the language is a reference for it's use of the concurrency; is a handout in the Principles of Computer Systems course of MIT, also in Operating Systems courses in other Universities of Germany and Colombia. Also as a language for the course of Object Oriented Programming in Wichita State University.
The integrated development environment is freely available from:
<a href="" target="_blank">Open Critical Mass Modula-3</a>

Comments are now closed

Microsoft to continue using Nokia brand on entry-level phones

MORE IN Storage