| Modula-2 | |||
|---|---|---|---|
| Tilblivelse | 1978; 48 år siden (1978) | ||
| Paradigme | Multi-paradigme:Imperativ programmering,strukturert programmering,modulær programmering,samtidig programmering | ||
| Designet og utviklet av | Niklaus Wirth | ||
| Typetildeling | statisk, sterk, forsiktighet | ||
| Påvirket av | |||
| Mesa,Pascal,Modula | |||
Modula-2 er etprogrammeringsspråk som ble designet og utviklet mellom 1977 og 1985 avNiklaus Wirth (f. 1934) vedEidgenössische Technische Hochschule Zürich. Språket ble allment tilgjengelig i 1978. Modula-2 ble forstått som etterfølgeren tilPascal ogModula.[L 1] Det var også påvirket avMesa og de nye programmeringsmuligheter som Wirth oppdaget i datamaskinenXerox Alto under hanssabbatsår i 1976 vedXerox PARC.[L 2]
Nøkkelkonseptene i Modula-2 var:[W 1]
I august og september 1984 omtalte detamerikansketidsskriftetByte språket og dets miljø.[L 3][L 4] Modula-2 ble første gang brukt på enPDP-11minidatamaskin iZürich; i 1980 ble språket portert tilarbeidsstasjonenLilith.[W 1] I tidens løp er det blitt portert tilIBM stormaskiner, så vel som tilinnebygde systemer,personlige datamaskiner og modernedatamaskinarkitekturer somRISC-V.
Modula-2 ble etterfulgt avModula-2+ (1984),Modula 3 (1988),Oberon (1987),Oberon-2 (1991) ogOberon-07 (2007).
Modula-2 er etprosedyrisk språk som er laget for generelle formål. Det er både etimperativt ogstrukturert programmeringsspråk. Det er egnet for bådesystemprogramming og applikasjonsprogrammering. Syntaksen er basert på programmeringsspråket Pascal, men enkelte elementer og tvetydigheter i syntaksen til Pascal er fjernet. Modula-2 støttermodulær programmering hvormodulet er konstruert for separat kompilering og data-abstraksjon; og korutiner sørger forfleroppgavekjøring ogparallelle beregninger.[L 5]
Språket gjør det mulig å brukeen-pass kompilatorer. En slikkompilator som ble laget av Gutknecht og Wirth i 1984 var omkring fire ganger raskere enn tidligerefler-pass kompilatorer.[L 6]
Her er et eksempel på kildekoden til programmet «Hello world»:
MODULEHello;FROMSTextIOIMPORTWriteString;BEGINWriteString("Hello World!")ENDHello.
Det finnes to hoveddialekter av Modula-2. Den første erPIM, oppkalt etter bokenProgramming 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 erISO, oppkalt etter standardiseringen tilInternational Organization for Standardization.[L 5][L 8] Her er forskjellene på dem.
EXPORT klausul i definisjonsmoduler.SIZE behøver ikke å importeres fra moduletSYSTEMEXPORT klausulen fra definisjonsmoduler. Ettersom alt innenfor et definisjonsmodul definerer grensesnittet til dette modulet, bleEXPORT klausulen overflødig.SIZE er gjennomtrengende (synlig i ethvert område uten å importeres)COMPLEX ogLONGCOMPLEX,unntakshåndtering, modulterminering (FINALLY klausulen) og et komplett standardI/O-bibliotek. Der finnes mange små forskjeller og avklaringer.[L 5][L 8]PIM [2,3,4] definerer 40reserverte ord:[L 7]
AND ELSIF LOOP REPEATARRAY END MOD RETURNBEGIN EXIT MODULE SETBY EXPORT NOT THENCASE FOR OF TOCONST FROM OR TYPEDEFINITION IF POINTER UNTILDIV IMPLEMENTATION PROCEDURE VARDO IMPORT QUALIFIED WHILEELSE IN RECORD WITH
PIM [3,4] definerer 29 innebygdeidentifikatorer:[L 7]
ABS EXCL LONGINT REALBITSET FALSE LONGREAL SIZEBOOLEAN FLOAT MAX TRUECAP HALT MIN TRUNCCARDINAL HIGH NIL VALCHAR INC ODDCHR INCL ORDDEC INTEGER PROC
GNU Modula-2 ble lansert (versjon 1.0) den 11. desember 2010. Den er en front-end tilGNU Compiler Collection (GCC), erfri og åpen programvare og er lisensiert underGNU General Public License versjon 3 (GPLv3).[W 2]
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 medbiblioteker. Attributten <* noreturn *> støttes medkompilatorflagget -Wreturn-type.[W 3]
I GCC 15.1 kom følgende nyheter:
Turbo Modula-2 var en kompilator og etintegrert utviklingsmiljø forMS-DOS. Den ble utviklet, men aldri lansert, avBorland. 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 tilClarion, senereSoftVelocity, som på denne tiden tilbød Modula-2 som en del avClarion-produktene.[W 7]
EnZilog Z80 versjon av Turbo Modula-2 forCP/M ble en kort tid markedsført avEchelon under lisens fra Borland. En beslektet utgave for8-bitermikroprosessorenHitachi HD64180 ble solgt avMicromint som et utviklingsverktøy for deres SB-180 datamaskin.[L 9]
IBM utviklet i 1980-årene en Modula-2 kompilator for internt bruk som kjørte på både OS/2 ogAIX, og med førsteklasses støtte i IBM'sE2-editor. Den var en av fire kompilatorer som ble støttet av denne editoren; de tre andre varIBM C, IBM Pascal ogIBM REXX.[W 8]
IBM Modula-2 er også brukt iOS/400 /IBM i.[W 9]
En bakende forMotorola 68000 ble også brukt iinnebygde systemer.[W 8]
Modula-2 er brukt somsystemprogramvare til å realisereoperativsystemer. Den modulære strukturen til Modula-2 har vært benyttet direkte i tre operativsystemer.[W 1][L 10][W 9]