凯旋归来是什么意思
Paradigma | strukturované, modulární |
---|---|
Vznik | 1978 |
Autor | Niklaus Wirth |
Typová kontrola | silná, statická |
Hlavní implementace | ETH Zurich (napsal Niklaus Wirth), Gardens Point, p1, Native XDS-x86, gm2 (GNU Modula-2) |
Dialekty | PIM2, PIM3, PIM4, ISO |
Ovlivněn jazyky | Pascal, Mesa, ALGOL, Simula-67 |
Ovlivnil jazyky | Modula-3, Oberon, Ada, Fortran 90, Lua, Zonnon, Modula-GM |
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, ktery 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 novymi programovacími mo?nostmi osobního po?íta?e Xerox Alto.
Popis
[editovat | editovat zdroj]Modula-2 je systémově flexibilní procedurální jazyk s ?irokymi mo?nostmi uplatnění. Zna?ná ?ást syntaxe je zalo?ena na Wirthově star?ím a známěj?ím jazyce Pascal. Jazyk Modula-2 byl navr?en tak, aby byl podobny 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 jednotlivych modul?, z nich? ka?dy 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 zdrojovy kód, ktery je uvnit? modulu a není pro ostatní moduly viditelny). Modul Modula-2 m??e byt pou?it k zapouzd?ení do souboru souvisejících podprogram? a datovych struktur, a omezit jejich viditelnost z jinych ?ástí programu.
Jazyk má p?ísnou kontrolu oblastí. Kromě standardních identifikátor? není ?ádny objekt viditelny uvnit? modulu, pokud není vyslovně exportován.
P?edpokládejme, ?e modul M1 má exportovány objekty a, b, c a P jako vy?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ásledovany 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 byt nyní pou?ity i uvnit? modulu M2. Jsou potom odkazovány kvalifikovanym zp?sobem takto: M1.a, M1.b, M1.c, a M1.P. Nap?íklad:
...
M1.a := 0; M1.c := M1.P (M1.a + M1.b);
...
Kvalifikovany export zabraňuje st?et?m ve jménech. Nap?íklad, pokud by jiny modul M3 měl také objekt nazvany P, pak m??eme je?tě rozli?it dva objekty, proto?e M1.P se li?í od M3.P. Díky kvalifikovanému exportu nevadí, ?e se oba objekty ve svych exportních modulech M1 a M3 jmenují P.
Verze
[editovat | editovat zdroj]Existují dvě hlavní verze Modula-2. První je PIM pojmenovaná po knize ?Programování v Modula-2“ (Programming in Modula-2) od Niklause Wirtha. 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?.
- PIM4 (1989)
- specifikováno chování MOD a REM operátor? p?i zápornych operandech a ujasněno, ?e pole znak? musí byt 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, vyjimky, a p?idány kompletní I/O standardní knihovny.
Jazykové prvky
[editovat | editovat zdroj]Vyhrazená slova
[editovat | editovat zdroj]PIM3 obsahuje následujících 40 vyhrazenych 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
[editovat | editovat zdroj]Ukázka jednoduchého programu, ktery 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
[editovat | editovat zdroj]Modula-2 zdaleka nejznáměj?ím a nejroz?í?eněj?ím jazykem z rozsáhlej?í skupiny vzájemně p?íbuznych 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émovy 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
[editovat | editovat zdroj]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. Byl to první vy??í programovací jazyk pou?ívany pro nahrazení pou?ívání strojového kódu pro programování vestavěnych systém? v ?ídících jednotkách motor? (ECUs). To mělo velky vyznam, 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
[editovat | editovat zdroj]- ACK Modula-2 pro Minix 2.0 (freeware)
- Cambridge Modula-2 Archivováno 15. 1. 2021 na Wayback Machine. pro r?zné regulátory a MINOS opera?ní systémy (komer?ní + proprietární software)
- Canterbury Modula-2 generuje zdrojovy kód v jazyce Java
- DEC Modula-2 Archivováno 4. 2. 2008 na Wayback Machine. pro BSD a Ultrix, oba VAX a MIPS (freeware)
- FST[nedostupny zdroj] Modula-2 pro MS-DOS (freeware)
- Gardens Point Modula-2 pro BSD, Linux, OS/2, Solaris a .NET - ISO kompatibilní (freeware)
- GNU Modula-2 compiler pro GCC platformy, ISO a PIM kompatibilní, (free software)
- M2Amiga pro Amigu (free software)
- M2M autor N. Wirth z ETH Zurich, platformě nezávisly, generuje M-kód pro virtuální stroj (freeware)
- MacMETH autor N. Wirth z ETH Zurich pro Macintosh, ale pouze Classic (freeware)
- Mod51 pro ?adu mikroprocesor? Intel 80x51
- ModulaWare pro OpenVMS, VAX a Alpha, ISO kompatibilní
- MTC[nedostupny zdroj] p?eklada? z Modula-2 do C, dostupny v Modula-2 a C zdrojovych kódech (free software)
- Objective Modula-2 pro r?zné Unix platformy, Cocoa a GNUstep podpory, (free software)
- Native XDS-x86 pro Windows a Linux, ISO kompatibilní Modula-2 a Oberon-2, nativní kompilátory s volitelnym TopSpeed Compatibility Pack (freeware)
- p1 Modula-2 pro Macintosh, a to jak Classic i Mac OS X ale bez Cocoa podpory, ISO kompatibilní
- The Karlsruhe Modula-2 Compiler MOCKA pro r?zné platformy, PIM kompatibilní freeware Linux/BSD versions)
- TERRA M2VMS pro OpenVMS, jak VAX tak i Alpha, PIM kompatibilní
- The Ulm Modula-2 System pro Solaris, jak SPARC tak i MC68K (free software, GPLed)
- XDS-C pro Windows a Linux, generuje ANSI nebo K&R C zdrojovy 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?enym vyvojem
[editovat | editovat zdroj]- Benchmark Modula-2 for the Amiga
- Borland Turbo Modula-2 pro CP/M (abandonware)
- Borland Turbo Modula-2 pro MS-DOS (prodána Jensen and Partners, nyní TopSpeed Modula-2)
- epc Modula-2 (od byvalého Edinburgh Portable Compilers Limited; spole?nost u? neexistuje, nyní je sou?ást Analog Devices Archivováno 9. 12. 2006 na Wayback Machine.)
- 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 JED Microprocessors Pty Ltd.
- Logitech ?adu kompilátor? Modula-2 pro CP/M a MS-DOS
- M2F Archivováno 6. 5. 2009 na Wayback Machine. 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.
- Megamax Modula-2 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 (M2M-PC), Apple II a Macintosh
- Modula-2 PC (IBM PC), PCollier Systems, Tucson, AZ.
- Mosys Modula-2 System pro Sage / Stride 68000 computers. Brian Kirk, Robinson Systems Ltd. UK
- Stony Brook Modula-2
- TDI Modula-2 pro Amigu a Atari ST
- TopSpeed (aka Clarion, aka JPI, aka Jensen and Partners) měl několik dobrych 16bitovych kompilátor? Modula-2 s pěknymi 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í SoftVelocity
- Volition Systems Modula-2 (UCSD p-System). Randy Bush, Richard Gleaves, Volition Systems Del Mar, CA.
Literatura
[editovat | editovat zdroj]- K. N. King, Modula-2, komplexní a jasně psany text, i po dvaceti letech neustále v prodeji, ISBN 0-669-11091-4
- Richard J. Sutcliffe, Modula-2: Abstractions for Data and Programming Structures, (pou?ívá ISO-Standard Modula-2) 2004-2005 Edice
Externí odkazy
[editovat | editovat zdroj]- Modula-2 Internet directory
- The Modula-2 website ring
- Modula-2 FAQ autor Rick Sutcliffe, verze z 2005.09.09
- Lilith and Modula-2
- Free Modula-2 Pages News Portal
- Sources Store for Modula-2 and Oberon-2 Archivováno 29. 4. 2009 na Wayback Machine.