Paradigms | imperative, structured, procedural, modular, concurrent, object-oriented, generic |
---|---|
Family | Wirth/Modula |
Designed by | Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan; Bill Kalsow, Greg Nelson |
Developers | DEC Olivetti elego Software Solutions GmbH |
First appeared | 1988 |
Stable release | 5.8.6
/ July 14, 2010 |
Preview release | 5.8.6
/ July 14, 2010 |
Typing discipline | strong, static, safe or if unsafe explicitly safe isolated |
Scope | Lexical |
Platform | IA-32, x86-64, PowerPC, SPARC |
OS | Cross-platform: FreeBSD, Linux, Darwin, SunOS |
Website | www |
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+. It has been influential in research circles (influencing the designs of languages such as Java, C#, Python[8] and Nim), but 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.