Modula-2 er et prosedyrisk språk som er laget for generelle formål. Det er både et imperativt og strukturert programmeringsspråk. Det er egnet for både systemprogramming og applikasjonsprogrammering. Syntaksen er basert på programmeringsspråket Pascal, men enkelte elementer og tvetydigheter i syntaksen til Pascal er fjernet. Modula-2 støtter modulær programmering hvor modulet er konstruert for separat kompilering og data-abstraksjon; og korutiner sørger for fleroppgavekjøring og parallelle beregninger.[L 5]
Det finnes to hoveddialekter av Modula-2. Den første er PIM, oppkalt etter boken Programming in Modula-2 av Niklaus Wirth.[L 7] Det kom fire utgaver av denne boken; Andre, tredje (korrigert) og fjerde utgave beskriver hver enkelt beskriver små varianter av språket. Den andre hoveddialekten er ISO, oppkalt etter standardiseringen til International Organization for Standardization.[L 5][L 8] Her er forskjellene på dem.
PIM2 (1983)
Krevde en eksplisitt EXPORT klausul i definisjonsmoduler.
Funksjonen SIZE behøver ikke å importeres fra modulet SYSTEM
PIM3 (1985)
Fjernet EXPORT klausulen fra definisjonsmoduler. Ettersom alt innenfor et definisjonsmodul definerer grensesnittet til dette modulet, ble EXPORT klausulen overflødig.
Funksjonen SIZE er gjennomtrengende (synlig i ethvert område uten å importeres)
PIM4 (1988)
Spesifiserte oppførselen til operatoren MOD når operandene er negative.
Krevde at alle ARRAY OF CHARstrenger avsluttes med ASCII NUL, selv om strengen passer nøyaktig inn i sin tabell.
ISO (1996, 1998)
ISO Modula-2 fjernet de fleste tvetydighetene i PIM Modula-2. Den tilføyde datatypeneCOMPLEX og LONGCOMPLEX, unntakshåndtering, modulterminering (FINALLY klausulen) og et komplett standard I/O-bibliotek. Der finnes mange små forskjeller og avklaringer.[L 5][L 8]
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
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
I GCC 13.1, som ble lansert 13. april 2023, ble GNU Modula-2 integrert som standard. GNU Modula-2 støtter alle dialektene av språket: PIM2, PIM3, PIM4, og ISO/IEC 10514-1 i et komplett sett med biblioteker. Attributten <* noreturn *> støttes med kompilatorflagget -Wreturn-type.[W 3]
I GCC 15.1 kom følgende nyheter:
Nøkkelordet FORWARD ble implementert
SYSTEM-modulet eksporterer datatypen COFF_T som mapper til POSIX-typen off_t. Størrelsen på denne datatypen kan kontrolleres med flagget -fm2-file-offset-bits=
Tilgang til de innebygde GCC-elementene clz, clzll, ctz og ctzll er tilgjengelige fra modulet Builtins.
Turbo Modula-2 var en kompilator og et integrert utviklingsmiljø for MS-DOS. Den ble utviklet, men aldri lansert, av Borland. Jensen and Partners, som inkluderte Borland's medgrunnlegger Niels Jensen, kjøpte kompilatoren og endret navnet til TopSpeed Modula-2. Denne kjørte på OS/2 og ble lansert i 1988; siste versjon kom i 1992.[W 6] Den ble i 1993 solgt til Clarion, senere SoftVelocity, som på denne tiden tilbød Modula-2 som en del av Clarion-produktene.[W 7]
En Zilog Z80 versjon av Turbo Modula-2 for CP/M ble en kort tid markedsført av Echelon under lisens fra Borland. En beslektet utgave for 8-bitermikroprosessorenHitachi HD64180 ble solgt av Micromint som et utviklingsverktøy for deres SB-180 datamaskin.[L 9]
IBM Modula-2
IBM utviklet i 1980-årene en Modula-2 kompilator for internt bruk som kjørte på både OS/2 og AIX, og med førsteklasses støtte i IBM's E2-editor. Den var en av fire kompilatorer som ble støttet av denne editoren; de tre andre var IBM C, IBM Pascal og IBM REXX.[W 8]
Operativsystemet Excelsior, for arbeidsstasjonen Kronos, ble bygd opp av moduler fra Modula-2. Kronos ble lansert i 1988, og var bygd omkring en 32-biter proprietær datamaskinarkitektur. Operativsystemet ble utviklet av Kronos Research Group (KRG) i Novosibirsk, som var tilknyttet Sovjetunionens vitenskapsakademi.[L 10]
IBM Modula-2 ble 26. august 1988 delvis brukt i OS/400 Vertical Licensed Internal Code (kjernen til OS/400).[W 9] Denne koden ble for det meste erstattet med C++ da OS/400 ble portert til mikroprosessorfamilien IBM RS64 fra 1992 til 1995. Operativsystemet ble omdøpt til i5/OS den 26. august 2004 (fordi den kjørte på POWER5) og til IBM i den 2. april 2008; det hadde da fortsatt litt Modula-2 kode i kjernen. [L 12][W 10]
^«TopSpeed Modula-2». edm2.com. The Electronic Developer Magaine for OS/2. 25. august 2022. Arkivert fra originalen 4. desember 2023. Besøkt 4. desember 2023.
^«About Clarion». softvelocity.com. 7. desember 2002. Arkivert fra originalen 7. desember 2002. Besøkt 3. desember 2023.CS1-vedlikehold: Uheldig URL (link)
^ab«IBM Modula-2». edm2.com. The Electronic Developer Magaine for OS/2. 2. mars 2019.
Wirth, Niklaus (27. juni 2002). «Pascal and its Successors». I Manfred Broy og Ernst Denert. Software Pioneers: Contributions to Software Engineering. Berlin, Heidelberg: Springer Verlag. ISBN3-540-43081-4. ISBN 978-3-540-43081-0.