Modula-2

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Modula-2 je flexibilní procedurální programovací jazyk s podporou multiprogramování. V roce 1978 ho vytvořil Niklaus Wirth na Spolkové vysoké technická škole v Curychu jako nástupce jazyka Modula. V roce 1980 byl jazyk implementován pro počítač Lilith, který byl uveden na trh roku 1982 společností DISER (Data Image Sound Procesor and Emitter Receiver System) pod jmény mC1 a mC2 (po celém světě prodáno 120 kusů). Jazyk Modula-2 vycházel podobně jako Modula z jazyka Pascal stejného autora. Jazyk byl ovlivněn jazykem Mesa a novými programovacími možnostmi osobního počítače Xerox Alto.

Popis

Modula-2 je systémově flexibilní procedurální jazyk s širokými možnostmi uplatnění. Značná část syntaxe je založena na Wirthově starším a známějším jazyce Pascal. +more Jazyk Modula-2 byl navržen tak, aby byl podobný jazyku Pascal, ale některé prvky z Pascalu byly odstraněny a některé prvky z konceptu Modula naopak přidány. Byla též přidána přímá podpora pro multiprogramování.

Programy v jazyce Modula-2 se skládají z jednotlivých modulů, z nichž každý se dále skládá ze dvou částí: definice modulu (část rozhraní, které obsahuje pouze ty části subsystému, které jsou viditelné pro ostatní moduly) a implementační modul (obsahuje zdrojový kód, který je uvnitř modulu a není pro ostatní moduly viditelný). Modul Modula-2 může být použit k zapouzdření do souboru souvisejících podprogramů a datových struktur, a omezit jejich viditelnost z jiných částí programu.

Jazyk má přísnou kontrolu oblastí. Kromě standardních identifikátorů není žádný objekt viditelný uvnitř modulu, pokud není výslovně exportován.

Předpokládejme, že modul M1 má exportovány objekty a, b, c a P jako výčet identifikátorů v exportním listu:

DEFINITION MODULE M1; EXPORT QUALIFIED a, b, c, P; ...

Potom objekty a, b, c a P z modulu M1 jsou známy mimo modul M1 jako M1.a, M1.b, M1.c a M1.P. Exportní jméno objektu, tj. M1, je používáno jako kvalifikátor následovaný jménem objektu.

Předpokládejme modul M2 obsahující následující IMPORT deklarací:

MODULE M2; IMPORT M1; ...

To znamená, že objekty exportované modulem M1 do svého programu mohou být nyní použity i uvnitř modulu M2. Jsou potom odkazovány kvalifikovaným způsobem takto: M1. +morea, M1. b, M1. c, a M1. P. Například:.

... M1.a := 0; M1.c := M1.P (M1.a + M1.b); ...

Kvalifikovaný export zabraňuje střetům ve jménech. Například, pokud by jiný modul M3 měl také objekt nazvaný P, pak můžeme ještě rozlišit dva objekty, protože M1. +moreP se liší od M3. P. Díky kvalifikovanému exportu nevadí, že se oba objekty ve svých exportních modulech M1 a M3 jmenují P.

Verze

Existují dvě hlavní verze Modula-2. První je PIM pojmenovaná po knize „Programování v Modula-2“ (Programming in Modula-2) od Niklause Wirtha. +more Takto vznikla druhá, třetí (opravená) a čtvrtá verze, z nichž každá popisuje mírné odlišnosti jazyka. Druhá hlavní verze je od organizace ISO.

* PIM2 (1983) ** povinné explicitní klauzule EXPORT v definicích modulů. * PIM3 (1985) ** odstraněna klauzule EXPORT z definic modulů. +more * PIM4 (1989) ** specifikováno chování MOD a REM operátorů při záporných operandech a ujasněno, že pole znaků musí být zakončeno znakem nula. * ISO (1996) ** ISO Modula-2 vyřešila většinu nejednoznačností v PIM Modula-2. Byla přidána data typu COMPLEX a LONGCOMPLEX, výjimky, a přidány kompletní I/O standardní knihovny.

Jazykové prvky

Vyhrazená slova

PIM3 obsahuje následujících 40 vyhrazených slov:

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

Hello World

Ukázka jednoduchého programu, který na obrazovku vypíše "Hello word":

MODULE PrintHelloWorld;

(*This program prints "Hello world!" on the standard output device*)

FROM InOut IMPORT WriteString, WriteLn;

BEGIN WriteString('Hello world!'); WriteLn; END PrintHelloWorld.

Příbuzné jazyky

Modula-2 zdaleka nejznámějším a nejrozšířenějším jazykem z rozsáhlejší skupiny vzájemně příbuzných jazyků, která zahrnuje jazyky Modula, Modula-2+, Modula-2*, ISO Modula-2, Modula-3, Oberon, Oberon-2 a řadu dalších.

Jazyk Modula-2 byl vyvinut jako systémový jazyk pro pracovní stanice Lilith a stal se předchůdcem jazyka Oberon a pracoviště projektu (systému Oberon) vyvinuté na ETH Curych. Některé rysy jazyka Modula-2 byly převzaty do mnoha novějších jazyků.

Modula-GM

Delco Electronics a poté dceřiná společnost GM Hughes Electronics vyvinula verzi Modula-2 pro vestavěné systémy v roce 1985. Pojmenovali jej Modula-GM. +more Byl to první vyšší programovací jazyk používaný pro nahrazení používání strojového kódu pro programování vestavěných systémů v řídících jednotkách motorů (ECUs). To mělo velký význam, protože Delco vyráběly v roce 1988 pro GM více než 28000 ECU za den a staly se tak největším producentem ECU. První experimentální používání Modula-GM ve vloženém řadiči bylo v roce 1993 Gen-4 ECU v CART (Championchip Auto Racing Teams) a IRL (Indy Racing League).

Aktuální překladače

[url=http://www. cs. +morevu. nl/pub/minix/2. 0/ack]ACK[/url] Modula-2 pro Minix 2. 0 (freeware) * [url=http://www. cms. uk. com]Cambridge Modula-2[/url] pro různé regulátory a MINOS operační systémy (komerční + proprietární software) * [url=https://web. archive. org/web/20010809233821/http://www. mhccorp. com/modula-2. html]Canterbury Modula-2[/url] generuje zdrojový kód v jazyce Java * [url=http://ftp. digital. com/pub/DEC/Modula-2]DEC Modula-2[/url] pro BSD a Ultrix, oba VAX a MIPS (freeware) * [ftp://ftp. psg. com/pub/modula-2/fst/fst-40s. lzh FST] Modula-2 pro MS-DOS (freeware) * [url=https://web. archive. org/web/20050624092005/http://www. plas. fit. qut. edu. au/gpm/Default. aspx]Gardens Point Modula-2[/url] pro BSD, Linux, OS/2, Solaris a . NET - ISO kompatibilní (freeware) * [url=http://www. nongnu. org/gm2/]GNU Modula-2 compiler[/url] pro GCC platformy, ISO a PIM kompatibilní, (free software) * [url=https://web. archive. org/web/20190120022439/https://m2amiga. claudio. ch/]M2Amiga[/url] pro Amigu (free software) * [url=http://www. cfbsoftware. com/modula2]M2M[/url] autor N. Wirth z ETH Zurich, platformě nezávislý, generuje M-kód pro virtuální stroj (freeware) * [url=https://web. archive. org/web/20080803231305/http://www. sysecol. ethz. ch/RAMSES/MacMETH. html]MacMETH[/url] autor N. Wirth z ETH Zurich pro Macintosh, ale pouze Classic (freeware) * [url=https://web. archive. org/web/20081021043956/http://www. designtools. co. nz/mod51. htm]Mod51[/url] pro řadu mikroprocesorů Intel 80x51 * [url=http://www. modulaware. com]ModulaWare[/url] pro OpenVMS, VAX a Alpha, ISO kompatibilní * [ftp://ftp. psg. com/pub/modula-2/grosch/mtc. tar. Z MTC] překladač z Modula-2 do C, dostupný v Modula-2 a C zdrojových kódech (free software) * [url=https://web. archive. org/web/20150722230801/http://objective. modula2. net/]Objective Modula-2[/url] pro různé Unix platformy, Cocoa a GNUstep podpory, (free software).

* [url=https://web. archive. +moreorg/web/20090511080825/http://www. excelsior-usa. com/xdsx86. html]Native XDS-x86[/url] pro Windows a Linux, ISO kompatibilní Modula-2 a Oberon-2, nativní kompilátory s volitelným TopSpeed Compatibility Pack (freeware) * [url=https://web. archive. org/web/20051127162410/http://www. awiedemann. de/compiler/index. html]p1 Modula-2[/url] pro Macintosh, a to jak Classic i Mac OS X ale bez Cocoa podpory, ISO kompatibilní * [url=https://web. archive. org/web/20050828231139/http://www. info. uni-karlsruhe. de/~modula/]The Karlsruhe Modula-2 Compiler MOCKA[/url] pro různé platformy, PIM kompatibilní freeware Linux/BSD versions) * [url=http://www. terraterra. ch/modula-2/spdm2vms. html]TERRA M2VMS[/url] pro OpenVMS, jak VAX tak i Alpha, PIM kompatibilní * [url=http://www. mathematik. uni-ulm. de/modula]The Ulm Modula-2 System[/url] pro Solaris, jak SPARC tak i MC68K (free software, GPLed) * [url=https://web. archive. org/web/20090529005403/http://www. excelsior-usa. com/xdsc. html]XDS-C[/url] pro Windows a Linux, generuje ANSI nebo K&R C zdrojový kód většinou 16- a 32bitová platforma, ISO kompatibilní Modula-2 a Oberon-2 s možností TopSpeed Compatibility Pack (freeware).

Překladače s ukončeným vývojem

Benchmark Modula-2 for the Amiga * [url=http://www. retroarchive. +moreorg/cpm/lang/turbom2. zip]Borland Turbo Modula-2[/url] pro CP/M (abandonware) * Borland Turbo Modula-2 pro MS-DOS (prodána Jensen and Partners, nyní TopSpeed Modula-2) * [url=https://web. archive. org/web/20090920233425/http://www. sysecol. ethz. ch/SimSoftware/RAMSES/em2_2. 6. html]epc Modula-2[/url] (od bývalého Edinburgh Portable Compilers Limited; společnost už neexistuje, nyní je součást [url=http://www. analog. com/]Analog Devices[/url]) * FTL Modula-2 (v1. 15 1986) pro MS-DOS, ATARI ST a CP/M Z80 autor Dave Moore, Cerenkof Computing. Distribuované v Austrálii firmou [url=http://www. jedmicro. com. au/]JED Microprocessors Pty Ltd. [/url] * [url=http://www. terraterra. ch/modula-2/index. html]Logitech[/url] řadu kompilátorů Modula-2 pro CP/M a MS-DOS * [url=http://floppsie. comp. glam. ac. uk/Glamorgan/gaius/web/m2fabout. html]M2F[/url] pro Linux, předchůdce na GNU Modula-2, generuje i386 kód, kompatibilní s PIM2 (GPL) * M2S pro Amigu * M2SDS (IBM PC), Interface Technologies Inc. (ITC) Houston, TX. * [url=http://www. tempel. org/files-e. html#MM2]Megamax Modula-2[/url] pro Atari ST & TT computers. Pouze v němčině. Dokumentace i zdrojové kódy jsou dostupné zdarma ale nejsou příliš užitečné, většina je jich napsána v kódu assembler 68k. * Metrowerks' první produkty byly kompilátory Modula-2 pro velké množství platform, včetně Macintosh * Modula Corporation měl řadu kompilátorů Modula-2 pro MS-DOS [url=http://cfbsoftware. com/modula2](M2M-PC)[/url], Apple II a Macintosh * Modula-2 PC (IBM PC), PCollier Systems, Tucson, AZ. * Mosys Modula-2 System pro Sage / Stride 68000 computers. Brian Kirk, [url=http://www. robinsons. co. uk/]Robinson Systems Ltd. UK[/url] * [url=https://web. archive. org/web/20050921223729/http://www. modula2. org/sb/websitearchive/indexw. html]Stony Brook Modula-2[/url] * TDI Modula-2 pro Amigu a Atari ST * TopSpeed (aka Clarion, aka JPI, aka Jensen and Partners) měl několik dobrých 16bitových kompilátorů Modula-2 s pěknými IDE. Něco ve stylu "Turbo Pascal" z Modula-2. Trošku nestandardní, ale velice populární v podnikání i ve vzdělávání, vynikající toolchain. V současné době součástí Clarion ve vlastnictví [url=https://web. archive. org/web/20071031184945/http://www. softvelocity. com/clarion/Overview. htm]SoftVelocity[/url] * Volition Systems Modula-2 (UCSD p-System). Randy Bush, Richard Gleaves, Volition Systems Del Mar, CA.

Literatura

K. N. +more King, Modula-2, komplexní a jasně psaný text, i po dvaceti letech neustále v prodeji, * Richard J. Sutcliffe, [url=http://www. arjay. bc. ca/Modula-2/Text/index. html]Modula-2: Abstractions for Data and Programming Structures[/url], (používá ISO-Standard Modula-2) 2004-2005 Edice.

Externí odkazy

[url=http://www. modula2. +moreorg/]Modula-2 Internet directory[/url] * [url=http://www. modulaware. com/m2wr/]The Modula-2 website ring[/url] * [url=http://www. arjay. bc. ca/Modula-2/m2faq. html]Modula-2 FAQ[/url] autor Rick Sutcliffe, verze z 2005. 09. 09 * [url=http://cfbsoftware. com/modula2]Lilith and Modula-2[/url] * [url=http://freepages. modula2. org/]Free Modula-2 Pages News Portal[/url] * [url=http://www. aha. ru/~uranus/]Sources Store for Modula-2 and Oberon-2[/url].

Kategorie:Programovací jazyky Kategorie:Rodina programovacích jazyků Modula

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top