Movatterモバイル変換


[0]ホーム

URL:


Hopp til innhold
Wikipedia
Søk

Modula-2

Fra Wikipedia, den frie encyklopedi
Modula-2
Tilblivelse1978; 48 år siden (1978)
ParadigmeMulti-paradigme:Imperativ programmering,strukturert programmering,modulær programmering,samtidig programmering
Designet og utviklet avNiklaus 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).

Beskrivelse

[rediger |rediger kilde]

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.

Dialekter

[rediger |rediger kilde]

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.

  • PIM2 (1983)
    • Krevde en eksplisittEXPORT klausul i definisjonsmoduler.
    • FunksjonenSIZE behøver ikke å importeres fra moduletSYSTEM
  • PIM3 (1985)
    • FjernetEXPORT klausulen fra definisjonsmoduler. Ettersom alt innenfor et definisjonsmodul definerer grensesnittet til dette modulet, bleEXPORT klausulen overflødig.
    • FunksjonenSIZE er gjennomtrengende (synlig i ethvert område uten å importeres)
  • PIM4 (1988)
    • Spesifiserte oppførselen til operatorenMOD når operandene er negative.
    • Krevde at alleARRAY OF CHARstrenger avsluttes med ASCII NUL, selv om strengen passer nøyaktig inn i sintabell.
  • ISO (1996, 1998)
    • ISO Modula-2 fjernet de fleste tvetydighetene i PIM Modula-2. Den tilføydedatatypeneCOMPLEX ogLONGCOMPLEX,unntakshåndtering, modulterminering (FINALLY klausulen) og et komplett standardI/O-bibliotek. Der finnes mange små forskjeller og avklaringer.[L 5][L 8]

Språkelementer

[rediger |rediger kilde]

Reserverte ord

[rediger |rediger kilde]

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

Innebygde identifikatorer

[rediger |rediger kilde]

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

Kompilatorer

[rediger |rediger kilde]

GNU Modula-2

[rediger |rediger kilde]

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:

  • 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-elementeneclz, clzll, ctz ogctzll er tilgjengelige fra moduletBuiltins.

Andre kompilatorer

[rediger |rediger kilde]

Turbo Modula-2

[rediger |rediger kilde]

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 Modula-2

[rediger |rediger kilde]

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]

Operativsystemer

[rediger |rediger kilde]

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]

  • Modula-2 var det eneste programmeringsspråket ogapplikasjonsprogramvare for Medos-2, operativsystemet til den personligearbeidsstasjonenLilith.[W 1] De første ti Lilith-maskinene ble innstallert i 1980. Lilith var bygd opp rundt mikrobrikkenAMD 2901 fraAdvanced Micro Devices som kjørte i 7 MHz, og var implementert som enstakkmaskin.[L 4][L 11]
  • OperativsystemetExcelsior, for arbeidsstasjonenKronos, ble bygd opp av moduler fra Modula-2. Kronos ble lansert i 1988, og var bygd omkring en 32-biter proprietærdatamaskinarkitektur. Operativsystemet ble utviklet av Kronos Research Group (KRG) iNovosibirsk, som var tilknyttetSovjetunionens vitenskapsakademi.[L 10]
  • IBM Modula-2 ble 26. august 1988 delvis brukt i OS/400Vertical Licensed Internal Code (kjernen til OS/400).[W 9] Denne koden ble for det meste erstattet medC++ da OS/400 ble portert til mikroprosessorfamilienIBM RS64 fra 1992 til 1995. Operativsystemet ble omdøpt tili5/OS den 26. august 2004 (fordi den kjørte påPOWER5) og tilIBM i den 2. april 2008; det hadde da fortsatt litt Modula-2 kode i kjernen.[L 12][W 10]

Referanser

[rediger |rediger kilde]
  1. ^Wirth 2002
  2. ^Wirth 1988, side 4
  3. ^BYTE August 1984
  4. ^abSand 1984
  5. ^abcISO Juni 1996
  6. ^Wirth 1984
  7. ^abcWirth 1988
  8. ^abISO 1998
  9. ^Ciarcias Desember 1986
  10. ^abKuznetsov 1989
  11. ^Knudsen 1983
  12. ^Soltis 1996
Nettsteder
  1. ^abcd«Summary of Projects by N. Wirth, 1962-1999».inf.ethz.ch. Eidgenössische Technische Hochschule Zürich. 6. mars 2020. 
  2. ^«GNU Modula-2».Savannah. Free Software Foundation. 30. august 2018. 
  3. ^«GCC 13 Release Series Changes, New Features, and Fixes». gnu.org. 13. april 2023. , oppdatert 30. oktober 2023
  4. ^Given, David (9. oktober 2020).«ACK».GitHub. 
  5. ^«ADW Modula-2».Modula-2.org. Besøkt 13. mars 2021. 
  6. ^«TopSpeed Modula-2».edm2.com. The Electronic Developer Magaine for OS/2. 25. august 2022. Arkivert fraoriginalen 4. desember 2023. Besøkt 4. desember 2023. 
  7. ^«About Clarion».softvelocity.com. 7. desember 2002. Arkivert fra originalen 7. desember 2002. Besøkt 3. desember 2023. CS1-vedlikehold: Uheldig URL (link)
  8. ^ab«IBM Modula-2».edm2.com. The Electronic Developer Magaine for OS/2. 2. mars 2019. 
  9. ^abcTPM (21. februar 2011).«Reader Feedback on AS/400 to i Mystery Solved».itjungle.com. The Four Hundred, Power Systems & IBM i Insigth, Volume 20, Number 7. 
  10. ^Leif Svalgaard (8. oktober 2003).«Re: [MI400] Re: MI emulator».midrange.com. 

Kilder

[rediger |rediger kilde]

Eksterne lenker

[rediger |rediger kilde]
A# ·ActionScript ·Ada ·Alef ·ALGOL ·ALGOL 58 ·ALGOL 60 ·ALGOL 68 ·ALTRAN ·APL ·AppleScript ·Argus ·Assembler ·Autokode ·awk ·B ·BASIC ·BCPL ·BETA ·BitC ·BLISS ·Bourne Shell ·Bourne Again Shell ·C ·C++ ·C-- ·CHILL ·C# ·C shell ·Caml ·Ch ·Cilk · Cilk++ ·Cilk Plus ·Clarion ·Clipper ·CLISP ·Clojure ·CLU ·COBOL ·COMAL ·Common Lisp ·Concurrent C ·Concurrent Euclid ·Concurrent Pascal ·D ·Delphi ·Dylan ·ECMAScript ·Eiffel ·Emacs Lisp ·Erlang ·Euclid ·F* ·F# ·Forth ·Fortran ·GNU Common Lisp ·GNU Pascal ·Go ·Haskell ·HyperTalk ·Incr Tcl ·INTERCAL ·Interlisp ·Java ·JavaScript ·JRuby ·KornShell ·LaTeX ·Legoscript ·LilyPond ·Limbo ·Lisp ·LPC ·Lua ·Lynx ·Mary ·MATLAB ·Mesa ·ML ·MML ·Modula ·Modula-2 ·Modula-2+ ·MUMPS ·Objective-C ·Objective-C++ ·OCaml ·OpenVera ·O'Haskell ·Pascal ·Perl ·PHP ·Pike ·PL/I ·Plankalkül ·PLEX ·Prolog ·Protel ·Pure Data ·Python ·R ·Ratfor ·REXX ·RTL/2 ·Ruby ·Rust ·SAS ·Scala ·Scheme ·Scratch ·Simula ·SML ·Smalltalk ·SNOBOL ·Tcsh ·Tcl ·TECO ·TOM ·Turbo C ·Turbo C++ ·Turbo Basic ·Turbo Modula-2 ·Turbo Pascal ·Verilog ·Visual Prolog ·Turing ·TypeScript ·Vala ·VHDL ·Visual Basic
Oppslagsverk/autoritetsdata
  1. ^«Aglet Modula-2».Aglet Modula-2. 15. februar 2012. 
Hentet fra «https://no.wikipedia.org/w/index.php?title=Modula-2&oldid=25088828»
Kategorier:
Skjulte kategorier:

[8]ページ先頭

©2009-2026 Movatter.jp