Modula-3

Modula-3
Paradigmsimperative, structured, procedural, modular, concurrent, object-oriented, generic
FamilyWirth/Modula
Designed byLuca Cardelli, James Donahue, Lucille Glassman, Mick Jordan; Bill Kalsow, Greg Nelson
DevelopersDEC
Olivetti
elego Software Solutions GmbH
First appeared1988 (1988)
Stable release
5.8.6 / July 14, 2010 (2010-07-14)
Preview release
5.8.6 / July 14, 2010 (2010-07-14)
Typing disciplinestrong, static, safe or if unsafe explicitly safe isolated
ScopeLexical
PlatformIA-32, x86-64, PowerPC, SPARC
OSCross-platform: FreeBSD, Linux, Darwin, SunOS
Websitewww.modula3.org
Major implementations
SRC Modula-3, CM3,[1] PM3,[2] EZM3,[3] M3/PC Klagenfurt[4]
Influenced by
ALGOL, Euclid, Mesa, Modula-2, Modula-2+, Oberon, Pascal
Influenced
C#, Java, Nim,[5] OCaml, Rust,[6] Python[7]

Modula-3 is a programming language conceived as a successor to an upgraded version of Modula-2 known as Modula-2+. While it has been influential in research circles (influencing the designs of languages such as Java, C#, Python[8] and Nim) it has not been adopted widely in industry. It was designed by Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan (before at the Olivetti Software Technology Laboratory), Bill Kalsow and Greg Nelson at the Digital Equipment Corporation (DEC) Systems Research Center (SRC) and the Olivetti Research Center (ORC) in the late 1980s.

Modula-3's main features are modularity, simplicity and safety while preserving the power of a systems-programming language. Modula-3 aimed to continue the Pascal tradition of type safety, while introducing new constructs for practical real-world programming. In particular Modula-3 added support for generic programming (similar to templates), multithreading, exception handling, garbage collection, object-oriented programming, partial revelation, and explicit marking of unsafe code. The design goal of Modula-3 was a language that implements the most important features of modern imperative programming languages in quite basic forms. Thus allegedly dangerous and complicating features such as multiple inheritance and operator overloading were omitted.

  1. ^ "Critical Mass Modula-3 (CM3)". Critical Mass Modula-3. elego Software Solutions GmbH. Retrieved 2020-03-21.
  2. ^ "Polytechnique Montréal Modula-3 (PM3): What is it". Polytechnique Montréal Modula-3. elego Software Solutions GmbH. Retrieved 2020-03-21.
  3. ^ Polstra, John D. (November 9, 2006). "Ezm3: An Easier Modula-3 Distribution". CVSup.org. Archived from the original on April 10, 2013. Retrieved 2020-03-21.
  4. ^ Weich, Carsten. "M3/PC Klagenfurt 96: a Modula-3 environment for MS-DOS". Department of Informatics. University of Klagenfurt. Archived from the original on 20 May 2000. Retrieved 2020-03-21.
  5. ^ Picheta, Dominik; Locurcio, Hugo. "Frequently Asked Questions". Retrieved 2020-03-21.
  6. ^ "R/Rust - I just learned about Modula-3, a language that had a lot of similar goals to Rust, and there was even an experimental OS that relied on the safety provided by the language".
  7. ^ van Rossum, Guido (May 1996). "Programming Python: Foreword (1st ed.)". Python.org. Retrieved 2020-03-21.
  8. ^ "Design and History FAQ: Why must 'self' be used explicitly in method definitions and calls?". Python.org. March 21, 2020. Retrieved 2020-03-21.