Modula-2: Forskjell mellom sideversjoner
Linje 92: | Linje 92: | ||
* {{cite web |author= Byte Magazine|url=https://archive.org/details/byte-magazine-1984-08/page/n147/mode/2up?q=modula |title=Modula-2 |date=August 1984 |website=BYTE – The Small Systems Journal, 1984 Volume 9 (8) |publisher=Byte Magazine|page=143-232|ref=BYTE}} |
* {{cite web |author= Byte Magazine|url=https://archive.org/details/byte-magazine-1984-08/page/n147/mode/2up?q=modula |title=Modula-2 |date=August 1984 |website=BYTE – The Small Systems Journal, 1984 Volume 9 (8) |publisher=Byte Magazine|page=143-232|ref=BYTE}} |
||
* {{cite book |last=Wirth |first=Niklaus |author-link=Niklaus Wirth |title=Programming in Modula-2 |year=1988 |location=Berlin, Heidelberg |publisher=Springer Verlag|edition=4. |isbn=978-3-642-83565-0 |doi=10.1007/978-3-642-83565-0|s2cid=41899609|ref=PIM }} |
* {{cite book |last=Wirth |first=Niklaus |author-link=Niklaus Wirth |title=Programming in Modula-2 |year=1988 |location=Berlin, Heidelberg |publisher=Springer Verlag|edition=4. |isbn=978-3-642-83565-0 |doi=10.1007/978-3-642-83565-0|s2cid=41899609|ref=PIM }} |
||
* {{cite book |last=Wirth |first=Niklaus |author-link=Niklaus Wirth |editor=M. Broy and E. Denert |article=Pascal and its Successors |title= Software Pioneers|year=2002 |location=Berlin, Heidelberg |publisher=Springer Verlag|edition= |isbn=3-540-43081-4|ref=Wirth2002 }} |
|||
== Eksterne lenker == |
== Eksterne lenker == |
Sideversjonen fra 4. des. 2023 kl. 03:02
Modula-2 | |||
---|---|---|---|
Tilblivelse | 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 et programmeringsspråk som ble designet og utviklet mellom 1977 og 1985 av Niklaus Wirth (f. 1934) ved Eidgenössische Technische Hochschule Zürich. Språket ble allment tilgjengelig i 1978. Modula-2 ble forstått som etterfølgeren til Pascal og Modula.[1] Det var også påvirket av Mesa og de nye programmeringsmuligheter som Wirth oppdaget i datamaskinen Xerox Alto under hans sabbatsår i 1976 ved Xerox PARC.[L 1]
I august 1984 omtalte databladet BYTE språket og dets miljø.[L 2]
Nøkkelkonseptene var:
- Modulet som separat kompileringsenhet for separat kompilering
- Korutinen som basis for parallelle prosesser
- Typer og prosedyrer som tillater aksess til maskin-spesifikke data
Dialekter
Det finnes to større dialekter av Modula-2. Den første er PIM, oppkalt etter boken Programming in Modula-2 av Niklaus Wirth.[L 3] Det var tre større utgaver av denne boken: Andre, tredje (korrigert) og fjerde, som hver enkelt beskriver små varianter av språket. Den andre store dialekten er ISO, oppkalt etter standardiseringen til International Organization for Standardization. Her er forskjellene på dem.
- PIM2 (1983)
- Krevde en eksplisitt
EXPORT
klausul i definisjonsmoduler. - Funksjonen
SIZE
behøver ikke å importeres fra moduletSYSTEM
- Krevde en eksplisitt
- PIM3 (1985)
- Fjernet
EXPORT
klausulen fra definisjonsmoduler. Ettersom alt innenfor et definisjonsmodul definerer grensesnittet til dette modulet, bleEXPORT
klausulen overflødig. - Funksjonen
SIZE
er gjennomtrengende (synlig i ethvert område uten å importeres)
- Fjernet
- PIM4 (1988)
- ISO (1996, 1998)
- ISO Modula-2 fjernet de fleste tvetydighetene i PIM Modula-2. Den tilføyde datatypene
COMPLEX
ogLONGCOMPLEX
, unntak, modulterminering (FINALLY
klausulen) og et komplett standard I/O-bibliotek. Der finnes mange små forskjeller og avklaringer.[2]
- ISO Modula-2 fjernet de fleste tvetydighetene i PIM Modula-2. Den tilføyde datatypene
Språkelementer
Reserverte ord
PIM [2,3,4] definerer 40 reserverte ord:
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
Innebygde identifikatorer
PIM [3,4] definerer 29 innebygde identifikatorer:
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
Kompilatorer
GNU Modula-2
GNU Modula-2 ble lansert (versjon 1.0) den 11. desember 2010. Den er en front-end til GNU Compiler Collection (GCC), er fri programvare og er lisensiert under GNU General Public License versjon 3 (GPLv3).[W 1]
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. Atributten <* noreturn *> er støttet med kompilatorflagget -Wreturn-type.[3]
Historiske kompilatorer
Turbo Modula-2
Turbo Modula-2 var en kompilator og et integrert utviklingsmiljø for MS-DOS. Det ble utviklet, men aldri lansert, av Borland. Jensen and Partners, som inkluderte Borland's medgrunnlegger Niels Jensen, kjøpte kompilatoren og endret den til TopSpeed Modula-2. Den ble til slutt solgt til Clarion, senere SoftVelocity, som tilbød Modula-2 som en del av dets Clarion-produkter på denne tiden.[4]
IBM Modula-2
IBM hadde 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.[5] IBM Modula-2 ble delvis brukt i OS/400 Vertical Licensed Internal Code (kjernen til OS/400).[6] Denne koden ble for det meste erstattet med C++ da OS/400 ble portert til prosessorfamilien IBM RS64, men litt gjenstår i moderne utgaver av operativsystemet.[7][8] En bakende for Motorola 68000 ble brukt av innebygde systemer.[5]
Historiske operativsystemer
Modula-2 ble også brukt som systemprogramvare til å realisere operativsystemer. Den modulære strukturen til Modula-2 har vært benyttet direkte i to beslektede operativsystemer.
- Modula-2 var det eneste programmeringsspråket og applikasjonsprogramvare for Medos-2, operativsystemet til den personlige arbeidsstasjonen Lilith.[9] Lilith ble lansert i 1980. Den var bygd opp rundt mikrobrikken AMD 2901 fra Advanced Micro Devices som kjørte i 7 MHz, og var implementert som en stakkmaskin.[10][11]
- Også operativsystemet Excelsior, for arbeidsstasjonen Kronos, ble bygd opp av moduler fra Modula-2. Kronos ble lansert i 1988, og var bygd omkring en 32-bit proprietær datamaskinarkitektur. Operativsystemet ble utviklet av Kronos Research Group (KRG) i Novosibirsk, som var tilknyttet Sovjetunionens vitenskapsakademi.[12]
Referanser
- Nettsteder
- ^ «GNU Modula-2». Savannah. Free Software Foundation. 30. august 2018.
Kilder
- Byte Magazine (August 1984). «Modula-2». BYTE – The Small Systems Journal, 1984 Volume 9 (8). Byte Magazine. s. 143-232.
- Wirth, Niklaus (1988). Programming in Modula-2 (4. utg.). Berlin, Heidelberg: Springer Verlag. ISBN 978-3-642-83565-0. doi:10.1007/978-3-642-83565-0.
- Wirth, Niklaus (2002). M. Broy and E. Denert, red. Software Pioneers. Berlin, Heidelberg: Springer Verlag. ISBN 3-540-43081-4.
Eksterne lenker
- ^ N. Wirth, Pascal and its Successors. In Software Pioneers, M. Broy and E. Denert, Eds. Springer-Verlag, 2002, ISBN 3-540-43081-4
- ^ ISO/IEC 10514-1:1996
- ^ GCC 13 Release Series Changes, New Features, and Fixes, gnu.org, 13. april 2023, oppdatert 30. oktober 2023
- ^ «About Clarion». Arkivert fra originalen 7. desember 2002. Besøkt 31. mars 2023.
- ^ a b «IBM Modula-2». edm2.com. 2. mars 2019.
- ^ «Reader Feedback on AS/400 to i Mystery Solved». itjungle.com. 21. februar 2011.
- ^ Soltis, Frank G. (1997). Inside the AS/400 (2nd utg.). Duke Press. ISBN 978-1882419661.
- ^ Leif Svalgaard (8. oktober 2003). Re: Re: MI emulator.
- ^ Summary of Projects by N. Wirth, 1962-1999
- ^ Sand, Paul A. (September 1984). The Lilith Personal Computer. Byte. s. 300–311. Reprint.
- ^ Knudsen, Svend Erik (1983). Medos-2: A Modula-2 Oriented Operating System for the Personal Computer Lilith (thesis). ETH Zurich. doi:10.3929/ethz-a-000300091.
- ^ Kuznetsov, D.N.; Nedorya, A.E.; Tarasov, E.V.; Filippov, V.E. «Kronos: a family of processors for high-level languages». Kronos: History of a Project (russisk). xTech. Besøkt 13. april 2021.