Modula-2
   HOME

TheInfoList



OR:

Modula-2 is a structured, procedural
programming language A programming language is a system of notation for writing computer program, computer programs. Most programming languages are text-based formal languages, but they may also be visual programming language, graphical. They are a kind of computer ...
developed between 1977 and 1985/8 by
Niklaus Wirth Niklaus Emil Wirth (born 15 February 1934) is a Swiss computer scientist A computer scientist is a person who is trained in the academic study of computer science. Computer scientists typically work on the theoretical side of computation, ...
at
ETH Zurich (colloquially) , former_name = eidgenössische polytechnische Schule , image = ETHZ.JPG , image_size = , established = , type = Public , budget = CHF 1.896 billion (2021) , rector = Günther Dissertori , president = Joël Mesot , ...
. It was created as the language for the
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
and
application software An application program (software application, or application, or app for short) is a computer program designed to carry out a specific task other than one relating to the operation of the computer itself, typically to be used by end user, end-user ...
of the
Lilith Lilith ( ; he, Wiktionary:לילית, לִילִית, Līlīṯ) is a female figure in Mesopotamian Mythology, Mesopotamian and Jewish mythology, Judaic mythology, alternatively the first wife of Adam and supposedly the primordial she-demon. ...
personal
workstation A workstation is a special computer designed for technical or computational science, scientific applications. Intended primarily to be used by a single user, they are commonly connected to a local area network and run multi-user operating syste ...
. It was later used for programming outside the context of the Lilith. Wirth viewed Modula-2 as a successor to his earlier programming languages Pascal and
Modula The Modula programming language is a descendant of the Pascal (programming language), Pascal language. It was developed in Switzerland, at ETH Zurich, in the mid-1970s by Niklaus Wirth, the same person who designed Pascal. The main innovation of ...
. The main concepts are: # The module as a compiling unit for separate compiling # The
coroutine Coroutines are computer program A computer program is a sequence or set of instructions in a programming language for a computer to Execution (computing), execute. Computer programs are one component of software, which also includes software doc ...
as the basic building block for concurrent processes # Types and procedures that allow access to machine-specific data The language design was influenced by the
Mesa A mesa is an isolated, flat-topped elevation, ridge or hill, which is bounded from all sides by steep escarpments and stands distinctly above a surrounding plain. Mesas characteristically consist of flat-lying soft sedimentary rocks capped by a ...
language and the
Xerox Alto The Xerox Alto is a computer designed from its inception to support an operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for comp ...
, both from
Xerox PARC PARC (Palo Alto Research Center; formerly Xerox PARC) is a research and development company in Palo Alto, California. Founded in 1969 by Jack Goldman, Jacob E. "Jack" Goldman, chief scientist of Xerox Corporation, the company was originally a div ...
, that Wirth saw during his 1976
sabbatical A sabbatical (from the Hebrew language, Hebrew: (i.e., Biblical Sabbath, Sabbath); in Latin language, Latin ; Greek language, Greek: ) is a rest or break from work. The concept of the sabbatical is based on the Biblical practice of ''shmita' ...
year there. Page 4. The computer magazine ''
Byte The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable un ...
'' devoted the August 1984 issue to the language and its surrounding environment. Modula-2 was followed by
Modula-3 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 (programming language), Java, C ...
, and later by the
Oberon Oberon () is a king of the fairies A fairy (also fay, fae, fey, fair folk, or faerie) is a type of mythical being or legendary creature found in the folklore of multiple European cultures (including Celtic mythology, Celtic, Slavic paganis ...
series of languages.


Description

Modula-2 is a general purpose procedural language suitable for both
systems programming Systems programming, or system programming, is the activity of programming computer A computer is a machine that can be programmed to carry out sequences of arithmetic or logical operations (computation) automatically. Modern digital elect ...
and applications programming. The syntax is based on Wirth's earlier language, Pascal, with some elements and syntactic ambiguities removed. The ''module'' concept, designed to support separate compilation and data abstraction; and direct language support for
multiprogramming In computing, multitasking is the concurrent computing, concurrent execution of multiple tasks (also known as Process (computing), processes) over a certain period of time. New tasks can interrupt already started ones before they finish, inste ...
were added. The language allows the use of
one-pass compiler In computer programming Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programming i ...
s. Such a
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily ...
by Gutknecht and Wirth was about four times faster than earlier multi-pass compilers. Here is an example of the source code for the "Hello world" program: MODULE Hello; FROM STextIO IMPORT WriteString; BEGIN WriteString("Hello World!") END Hello. A Modula-2 ''module'' may be used to encapsulate a set of related subprograms and data structures, and restrict their visibility from other parts of the program. Modula-2 programs are composed of modules, each of which is made up of two parts: a ''definition module'', the interface portion, which contains only those parts of the subsystem that are ''exported'' (visible to other modules), and an ''implementation module'', which contains the working code that is internal to the module. The language has strict
scope Scope or scopes may refer to: People with the surname * Jamie Scope (born 1986), English footballer * John T. Scopes (1900–1970), central figure in the Scopes Trial regarding the teaching of evolution Arts, media, and entertainment * Cinem ...
control. Except for standard identifiers, no
object Object may refer to: General meanings * Object (philosophy) An object is a philosophy, philosophical term often used in contrast to the term ''Subject (philosophy), subject''. A subject is an observer and an object is a thing observed. For mo ...
from the outside is visible inside a module unless explicitly imported; no internal module object is visible from the outside unless explicitly exported. Suppose module M1 exports objects a, b, c, and P by enumerating its identifiers in an explicit export list DEFINITION MODULE M1; EXPORT QUALIFIED a, b, c, P; ... Then the objects a, b,c, and P from module M1 are known outside module M1 as M1.a, M1.b, M1.c, and M1.P. They are exported in a ''qualified'' manner to the outside (assuming module M1 is global). The exporting module's name, i.e. M1, is used as a qualifier followed by the object's name. Suppose module M2 contains the following IMPORT declaration MODULE M2; IMPORT M1; ... Then this means that the objects exported by module M1 to the outside of its enclosing program can now be used inside module M2. They are referenced in a ''qualified'' manner: M1.a, M1.b, M1.c, and M1.P. Example: ... M1.a := 0; M1.c := M1.P(M1.a + M1.b); ... Qualified export avoids name clashes. For example, if another module M3 exports an object called P, then the two objects can be distinguished since M1.P differs from M3.P. It does not matter that both objects are called P inside their exporting modules M1 and M3. An alternative method exists. Suppose module M4 is formulated as this: MODULE M4; FROM M1 IMPORT a, b, c, P; This means that objects exported by module M1 to the outside can again be used inside module M4, but now by mere references to the exported identifiers in an ''unqualified'' manner as: a, b, c, and P. Example: ... a := 0; c := P(a + b); ... This method of import is usable if there are no name clashes. It allows variables and other objects to be used outside their exporting module in the same ''unqualified'', manner as inside the exporting module. The export and import rules not only safeguard objects against unwanted access, but also allow a cross-reference of the definition of every identifier in a program to be created. This property helps with the maintenance of large programs containing many modules. The language provides for single-processor concurrency ( monitors,
coroutine Coroutines are computer program A computer program is a sequence or set of instructions in a programming language for a computer to Execution (computing), execute. Computer programs are one component of software, which also includes software doc ...
s and explicit transfer of control) and for hardware access (absolute addresses, bit manipulation, and
interrupt In digital computers, an interrupt (sometimes referred to as a trap) is a request for the processor to ''interrupt'' currently executing code (when permitted), so that the event can be processed in a timely manner. If the request is accepted ...
s). It uses a nominal type system.


Dialects

There are two major dialects of Modula-2. The first is ''PIM'', named for the book ''Programming in Modula-2'' by Niklaus Wirth. There were three major editions of PIM: the second, third (corrected), and fourth. Each describes slight variants of the language. The second major dialect is ''ISO'', named for the standardization effort by the
International Organization for Standardization The International Organization for Standardization (ISO ) is an international standard development organization composed of representatives from the national standards organizations of member countries. Membership requirements are given in Art ...
. Here are a few of the differences among them. * ''PIM2'' (1983) ** Required explicit EXPORT clause in definition modules. ** Function SIZE needs to be imported from module SYSTEM * ''PIM3'' (1985) ** Removed the EXPORT clause from definition modules following the observation that everything within a definition module defines the interface to that module, hence the EXPORT clause was redundant. ** Function SIZE is pervasive (visible in any scope without import) * ''PIM4'' (1988) ** Specified the behaviour of the MOD operator when the operands are negative. ** Required all ARRAY OF CHAR strings to be terminated by ASCII NUL, even if the string fits exactly into its array. * ''ISO'' (1996, 1998) ** ISO Modula-2 resolved most of the ambiguities in PIM Modula-2. It added the data types COMPLEX and LONGCOMPLEX, exceptions, module termination (FINALLY clause) and a complete standard
input/output In computing, input/output (I/O, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, possibly a human or another information processing system. Information, Inputs are ...
(I/O)
library A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
. There are many minor differences and clarifications.


Supersets

There are several supersets of Modula-2 with language extensions for specific application domains: * PIM supersets *
Canterbury Modula-2
extended with Oberon-like extensible records his has been withdrawn and is no longer available anywhere** Modula-2+, extended with preemptive threads and exceptions *
Modula-2*
parallel extension *
Modula-P
another parallel extension ** Modula–Prolog, adds a
Prolog Prolog is a logic programming language associated with artificial intelligence Artificial intelligence (AI) is intelligence—perceiving, synthesizing, and inferring information—demonstrated by machines, as opposed to intelligence dis ...
layer ** Modula/R, adds
relational database A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relation ...
extensions ** Modula-GM, adds
embedded system An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or Electronics, electronic system. It is '' ...
extensions * ISO supersets ** ISO10514-2, adds an
object-oriented programming Object-oriented programming (OOP) is a programming paradigm based on the concept of " objects", which can contain data In the pursuit of knowledge, data (; ) is a collection of discrete values that convey information, describing qua ...
layermodula2.org, 5. Where can I get information about ISO Modula-2?
/ref> ** ISO10514-3, adds a
generic programming Generic programming is a style of computer programming in which algorithms are written in terms of data type, types ''to-be-specified-later'' that are then ''instantiated'' when needed for specific types provided as parameter (computer programmi ...
(generics) layer * IEC supersets *
Mod51
extended with IEC1131 constructs for embedded development


Derivatives

There are several derivative languages that resemble Modula-2 very closely but are new languages in their own right. Most are different languages with different purposes and with strengths and weaknesses of their own: *
Modula-3 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 (programming language), Java, C ...
, developed by a team of ex-Xerox employees who had moved to DEC and Olivetti *
Oberon Oberon () is a king of the fairies A fairy (also fay, fae, fey, fair folk, or faerie) is a type of mythical being or legendary creature found in the folklore of multiple European cultures (including Celtic mythology, Celtic, Slavic paganis ...
, developed at ETH Zürich for System Oberonbr>available online
*
Oberon-2 Oberon-2 is an extension of the original Oberon Oberon () is a king of the fairies A fairy (also fay, fae, fey, fair folk, or faerie) is a type of mythical being or legendary creature found in the folklore of multiple European cultures ...
, Oberon with OO extensions *
Active Oberon Active Oberon is a general purpose programming language A programming language is a system of notation for writing computer program, computer programs. Most programming languages are text-based formal languages, but they may also be visual p ...
, yet another object-oriented Extension of
Oberon Oberon () is a king of the fairies A fairy (also fay, fae, fey, fair folk, or faerie) is a type of mythical being or legendary creature found in the folklore of multiple European cultures (including Celtic mythology, Celtic, Slavic paganis ...
, developed also at ETH with the main objective to support parallel programming on multiprocessor and multicore systems. * Parallaxis, a language for machine-independent data-parallel programming * Umbriel, developed by Pat Terry as a teaching language * YAFL, a research language by Darius Blasband Many other current programming languages have adopted features of Modula-2.


Language elements


Reserved words

PIM ,3,4defines 40
reserved word In a computer language, a reserved word (also known as a reserved identifier) is a word that cannot be used as an Identifier#In computer science, identifier, such as the name of a variable, function, or Label (programming language), label – it is ...
s:
AND         ELSIF           LOOP       REPEAT
ARRAY       END             MOD        RETURN
BEGIN       EXIT            MODULE     SET
BY          EXPORT          NOT        THEN
CASE        FOR             OF         TO
CONST       FROM            OR         TYPE
DEFINITION  IF              POINTER    UNTIL
DIV         IMPLEMENTATION  PROCEDURE  VAR
DO          IMPORT          QUALIFIED  WHILE
ELSE        IN              RECORD     WITH


Built-in identifiers

PIM ,4defines 29 built-in
identifier An identifier is a name that identifies (that is, labels the identity of) either a unique object or a unique ''class'' of objects, where the "object" or class may be an idea, physical countable In mathematics, a Set (mathematics), set is countab ...
s:
ABS         EXCL            LONGINT    REAL
BITSET      FALSE           LONGREAL   SIZE
BOOLEAN     FLOAT           MAX        TRUE
CAP         HALT            MIN        TRUNC
CARDINAL    HIGH            NIL        VAL
CHAR        INC             ODD
CHR         INCL            ORD
DEC         INTEGER         PROC


Embedded system use

Modula-2 is used to program many
embedded system An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or Electronics, electronic system. It is '' ...
s.


Cambridge Modula-2

Cambridge Modula-2 by Cambridge Microprocessor Systems is based on a subset of PIM4 with language extensions for embedded development. The compiler runs on
DOS DOS is shorthand for the MS-DOS and IBM PC DOS family of operating systems. DOS may also refer to: Computing * Data over signalling (DoS), multiplexing data onto a signalling channel * Denial-of-service attack In computing, a denial-of- ...
and it generates code for
Motorola 68000 series The Motorola 68000 series (also known as 680x0, m68000, m68k, or 68k) is a family of 32-bit computing, 32-bit complex instruction set computer (CISC) microprocessors. During the 1980s and early 1990s, they were popular in personal computers and ...
(M68k) based embedded microcontrollers running a MINOS operating system.


Mod51

Mod51 by Mandeno Granville Electronics is based on ISO Modula-2 with language extensions for embedded development following IEC1131, an industry standard for
programmable logic controller A programmable logic controller (PLC) or programmable controller is an industrial computer that has been Rugged computer, ruggedized and adapted for the control of manufacturing processes, such as assembly lines, machines, robotic devices, or ...
s (PLC) closely related to Modula-2. The Mod51 compiler generates standalone code for 80C51 based microcontrollers.


Modula-GM

Delco Electronics Delco Electronics Corporation was the automotive electronics design and manufacturing subsidiary of General Motors based in Kokomo, Indiana, that manufactured ''Delco'' vehicle audio, Automobile radios and other electric products found in GM cars. ...
, then a subsidiary of GM
Hughes Electronics Hughes Electronics Corporation was formed in 1985 when Hughes Aircraft was sold by the Howard Hughes Medical Institute to General Motors for $5.2 billion. The surviving parts of Hughes Electronics are today known as The DirecTV Group. On June 5, ...
, developed a version of Modula-2 for embedded control systems starting in 1985. Delco named it Modula-GM. It was the first
high-level programming language In computer science, a high-level programming language is a programming language with strong Abstraction (computer science), abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language ...
used to replace
machine code In computer programming Computer programming is the process of performing a particular computation (or more generally, accomplishing a specific computing result), usually by designing and building an executable computer program. Programm ...
(language) for embedded systems in Delco's ''engine control units'' (ECUs). This was significant because Delco was producing over 28,000 ECUs per day in 1988 for GM. This was then the world's largest producer of ECUs. The first experimental use of Modula-GM in an
embedded controller An Embedded Controller (EC) is a microcontroller in computers that handles various system tasks. Now it is usually merged with Super I/O, especially on mobile platforms (such as laptop). Tasks An embedded controller can have the following task ...
was in the 1985 Antilock Braking System Controller which was based on the Motorola 68xxx microprocessor, and in 1993 Gen-4 ECU used by the
Champ Car World Series Champ Car World Series (CCWS) was the series sanctioned by Open-Wheel Racing Series Inc., or Champ Car, a Governing body, sanctioning body for American open-wheel car racing that operated from 2004 to 2008. It was the successor to Championship Aut ...
Championship Auto Racing Teams (CART) and
Indy Racing League The IndyCar Series, currently known as the NTT IndyCar Series under sponsor (commercial), sponsorship, is the highest class of regional North American American open-wheel car racing, open-wheel single-seater formula racing cars in the United S ...
(IRL) teams. The first production use of Modula-GM was its use in GM trucks starting with the 1990 model year ''vehicle control module'' (VCM) used to manage GM Powertrain's Vortec engines. Modula-GM was also used on all ECUs for GM's 90°
Buick V6 engine The Buick V6, popularly referred to as the 3800 in its later incarnations, originally and initially marketed as ''Fireball'' at its introduction in 1962, was a large V6 engine used by General Motors Corporation, General Motors. The block is made ...
family 3800 Series II used in the 1997-2005 model year Buick Park Avenue. The Modula-GM compilers and associated software management tools were sourced by Delco from
Intermetrics AverStar (formerly Intermetrics, Inc.) was a software Software is a set of computer programs and associated software documentation, documentation and data (computing), data. This is in contrast to Computer hardware, hardware, from which th ...
. Modula-2 was selected as the basis for Delco's high level language because of its many strengths over other alternative language choices in 1986. After Delco Electronics was spun off from GM (with other component divisions) to form
Delphi Automotive Systems Aptiv PLC is an Irish- American automotive technology supplier with headquarters in Dublin Dublin (; , or ) is the capital and largest city of Republic of Ireland, Ireland. On a bay at the mouth of the River Liffey, it is in the Provin ...
in 1995, global sourcing required that a non-proprietary high-level software language be used. ECU embedded software now developed at Delphi is compiled with commercial compilers for the language C.


Russian radionavigation satellites

The satellites of the Russian
radionavigation-satellite service A satellite navigation or satnav system is a system that uses satellites to provide autonomous geo-spatial positioning. It allows satellite navigation devices to determine their location (longitude, latitude, and altitude/elevation) to high pre ...
framework
GLONASS GLONASS (russian: ГЛОНАСС, label=none, ; rus, links=no, Глобальная навигационная спутниковая система, r=Global'naya Navigatsionnaya Sputnikovaya Sistema, t=Global Navigation Satellite System) is ...
, similar to the United States
Global Positioning System The Global Positioning System (GPS), originally Navstar GPS, is a Radionavigation-satellite service, satellite-based radionavigation system owned by the United States government and operated by the United States Space Force. It is one of t ...
(GPS), are programmed in Modula-2.


Compilers

* Amsterdam Compiler Kit (ACK) Modula-2 – for MINIX;
freeware Freeware is software, most often proprietary software, proprietary, that is distributed at no monetary cost to the end user. There is no agreed-upon set of rights, Software license, license, or EULA that defines ''freeware'' unambiguously; every p ...
* ADW Modula-2 – for Windows, ISO compliant, ISO/IEC 10514-1, ISO/IEC 10514-2 (OO extension), ISO/IEC 10514-3 (Generic extension); freeware * Aglet Modula-2 – for
AmigaOS AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions ...
4.0 for
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
; freeware * Fitted Software Tools (FST) Modula-2 – for DOS; freeware * Gardens Point Modula-2 (GPM) – for BSD, Linux, OS/2, Solaris; ISO compliant; freeware, as of 30 July 2014 * Gardens Point Modula-2 (GPM/CLR) – for .NET Framework; freeware * GNU Modula-2 – for GCC platforms, version 1.0 released December 11, 2010; compliance: PIM2, PIM3, PIM4, ISO;
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
,
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
(GPL) * Logitech SA - they also had a "Real Time Kernel" for embedded usage (1987) * M2Amiga – for
Amiga Amiga is a family of personal computers introduced by Commodore International, Commodore in 1985. The original model is one of a number of mid-1980s computers with 16- or 32-bit processors, 256 KB or more of RAM, mouse-based GUIs, and sign ...
;
free software Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, no ...
* M2M – by N. Wirth and collaborators from ETH Zurich, cross-platform, generates M-code for
virtual machine In computing, a virtual machine (VM) is the virtualization/emulator, emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve special ...
; freeware * MacMETH – by N. Wirth and collaborators from ETH Zurich for Macintosh, Classic only; freeware * Mod51 – for the Intel 80x51 microcontroller family, ISO compliant, IEC1132 extensions; proprietary software * Megamax Modula-2 – for
Atari ST The Atari ST is a line of personal computers from Atari Corporation and the successor to the Atari 8-bit family. The initial model, the Atari 520ST, had limited release in April–June 1985 and was widely available in July. It was the first pers ...
with documentation in German only; freeware * Modula-2 R10 – reference compiler for this Modula; open-source, peer review * ModulaWare – for
OpenVMS OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Ope ...
(
VAX VAX (an acronym for Virtual Address eXtension) is a series of computers featuring a 32-bit computing, 32-bit instruction set architecture (ISA) and virtual memory that was developed and sold by Digital Equipment Corporation (DEC) in the late 20 ...
and
Alpha Alpha (uppercase , lowercase ; grc, ἄλφα, ', or ell, άλφα, álfa) is the first Letter (alphabet), letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician alphabet, P ...
), ISO compliant; proprietary software * ORCA/Modula-2 – for
Apple IIGS The Apple IIGS (styled as II), the fifth and most powerful of the Apple II The Apple II (stylized as ) is an 8-bit computing, 8-bit home computer and one of the world's first highly successful mass-produced microcomputer products. It wa ...
by The Byte Works for the Apple Programmer's Workshop * p1 Modula-2 – for
Macintosh The Mac (known as Macintosh until 1999) is a family of personal computers designed and marketed by Apple Inc., Apple Inc. Macs are known for their ease of use and minimalist designs, and are popular among students, creative professionals, and ...
,
Classic A classic is an outstanding example of a particular style; something of Masterpiece, lasting worth or with a timeless quality; of the first or Literary merit, highest quality, class, or rank – something that Exemplification, exemplifies its ...
and
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
(
PowerPC PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
and
Carbon (API) Carbon was one of two primary C (programming language), C-based application programming interfaces (APIs) developed by Apple Inc., Apple for the macOS (formerly Mac OS X and OS X) operating system. Carbon provided a good degree of backward compa ...
only), ISO compliant; proprietary software * MOCKA – for various platforms, PIM compliant; commercial, freeware Linux/BSD versions * TDI Modula-2 – for
Atari ST The Atari ST is a line of personal computers from Atari Corporation and the successor to the Atari 8-bit family. The initial model, the Atari 520ST, had limited release in April–June 1985 and was widely available in July. It was the first pers ...
, by TDI Software * Terra M2VMS – for
OpenVMS OpenVMS, often referred to as just VMS, is a multi-user, multiprocessing and virtual memory-based operating system. It is designed to support time-sharing, batch processing, transaction processing and workstation applications. Customers using Ope ...
(
VAX VAX (an acronym for Virtual Address eXtension) is a series of computers featuring a 32-bit computing, 32-bit instruction set architecture (ISA) and virtual memory that was developed and sold by Digital Equipment Corporation (DEC) in the late 20 ...
and
Alpha Alpha (uppercase , lowercase ; grc, ἄλφα, ', or ell, άλφα, álfa) is the first Letter (alphabet), letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician alphabet, P ...
), PIM compliant; proprietary software * m2c, Ulm Modula-2 System – for Solaris (Sun
SPARC SPARC (Scalable Processor Architecture) is a reduced instruction set computer (RISC) instruction set architecture originally developed by Sun Microsystems. Its design was strongly influenced by the experimental Berkeley RISC system developed in ...
and Motorola 68k); free software,
GNU General Public License The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
(GPL) * XDS – ISO compliant, TopSpeed compatible library: ''Native XDS-x86'' for x86 (Windows and Linux); ''XDS-C'' for Windows and Linux (16- and 32-bit versions), targets C ( K&R &
ANSI The American National Standards Institute (ANSI ) is a private non-profit organization that oversees the development of Standardization, voluntary consensus standards for products, services, processes, systems, and personnel in the United S ...
); freeware


Turbo Modula-2

Turbo Modula-2 was a compiler and an
integrated development environment An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build ...
for
MS-DOS MS-DOS ( ; acronym for Microsoft Disk Operating System, also known as Microsoft DOS) is an operating system for x86-based personal computers mostly developed by Microsoft. Collectively, MS-DOS, its rebranding as IBM PC DOS, and a few oper ...
developed, but not published, by
Borland Borland Software Corporation was a computer technology Computing is any goal-oriented activity requiring, benefiting from, or creating computing machinery. It includes the study and experimentation of algorithm In mathematics and ...
. Jensen and Partners, which included Borland cofounder Niels Jensen, bought the unreleased codebase and turned it into TopSpeed Modula-2. It was eventually sold to Clarion, now owned by SoftVelocity, which still offers the Modula-2 compiler as part of its Clarion product line. A
Zilog Z80 The Z80 is an 8-bit computing, 8-bit microprocessor introduced by Zilog as the startup company's first product. The Z80 was conceived by Federico Faggin in late 1974 and developed by him and his 11 employees starting in early 1975. The first wor ...
CP/M CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers, is a mass-market operating system created in 1974 for Intel 8080/Intel 8085, 85-based microcomputers by Gary Kildall of Digital Research, Inc ...
version of Turbo Modula-2 was briefly marketed by Echelon under license from Borland. A companion release for
Hitachi HD64180 The HD64180 is a Z80 The Z80 is an 8-bit computing, 8-bit microprocessor introduced by Zilog as the startup company's first product. The Z80 was conceived by Federico Faggin in late 1974 and developed by him and his 11 employees starting i ...
was sold by Micromint as a development tool for their SB-180 single-board computer.


IBM Modula-2

IBM had a Modula-2 compiler for internal use which ran on both
OS/2 OS/2 (Operating System/2) is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 re ...
and
AIX Aix or AIX may refer to: Computing * AIX, a line of IBM computer operating systems *An Alternate Index, for a Virtual Storage Access Method Virtual Storage Access Method (VSAM) is an IBM DASD file storage access method, first used in the O ...
, and had first class support in IBM's E2 editor. IBM Modula-2 was used for parts of the
OS/400 IBM i (the ''i'' standing for ''integrated'') is an operating system developed by IBM for IBM Power Systems. It was originally released in 1988 as OS/400, as the sole operating system of the IBM AS/400 line of systems. It was renamed to i5/OS in 2 ...
''Vertical Licensed Internal Code'' (effectively the kernel of OS/400). This code was mostly replaced with
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language In computer software, a general-purpose programming language (GPL) is a programming language for building software in a wide variety of application Domain (so ...
when OS/400 was ported to the
IBM RS64 The IBM RS64 is a family of microprocessor A microprocessor is a computer processor where the data processing logic and control is included on a single integrated circuit, or a small number of integrated circuits. The microprocessor cont ...
processor family, although some remains in modern releases of the operating system. A
Motorola 68000 The Motorola 68000 (sometimes shortened to Motorola 68k or m68k and usually pronounced "sixty-eight-thousand") is a 16/32-bit complex instruction set computer (CISC) microprocessor, introduced in 1979 by Motorola Semiconductor Products Sector ...
backend also existed, which may have been used in embedded systems products.


Operating systems

Modula-2 is used to program some
operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s (OSs). The Modula-2 module structure and support are used directly in two related OSs. The OS named '' Medos-2'', for the Lilith workstation, was developed at ETH Zurich, by Svend Erik Knudsen with advice from Wirth. It is a single user,
object-oriented operating system An object-oriented operating system is an operating system An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs. Time-sharing op ...
built from Modula-2 modules. Reprint. The OS named ''
Excelsior Excelsior, a Latin comparative word often translated as "ever upward" or "even higher", may refer to: Arts and entertainment Literature and poetry * Excelsior (Longfellow), "Excelsior" (Longfellow), an 1841 poem by Henry Wadsworth Longfellow * ...
'', for the Kronos workstation, was developed by the
Academy of Sciences of the Soviet Union The Academy of Sciences of the Soviet Union was the highest scientific institution of the Soviet Union The Soviet Union,. officially the Union of Soviet Socialist Republics. (USSR),. was a List of former transcontinental countries#Since ...
, Siberian branch,
Novosibirsk Novosibirsk (, also ; rus, Новосиби́рск, p=nəvəsʲɪˈbʲirsk, a=ru-Новосибирск.ogg) is the largest city and administrative centre of Novosibirsk Oblast and Siberian Federal District in Russia. As of the Russian Census ...
Computing Center, Modular Asynchronous Developable Systems (MARS) project, Kronos Research Group (KRG). It is a single user system based on Modula-2 modules.


Books

* * * * * * Uses ISO-standard Modula-2.


References


External links

* {{Authority control Modula programming language family Systems programming languages Programming languages created in 1978 Programming languages with an ISO standard Statically typed programming languages High-level programming languages