Modula 2 –język programowaniawysokiego poziomu stworzony przezNiklausa Wirtha.
JęzykModula 2 stworzony został podczas prac badawczych wInstytucie Informatyki Politechniki w Zurichu. Prace nad językiem rozpoczęto w 1977 r., a ich efektem była pierwszaimplementacja tego języka zrealizowana w 1979 r. na komputerzePDP-11.Definicja języka opublikowana została w 1980 r.
Język wywodzi się zPascala iModuli. Zawiera w sobie wszystkie mechanizmy Pascala oraz rozszerzenia o ważne pojęcia modułu i mechanizmy wieloprogramowości. Składnię języka oparto na składni Moduli (po zrealizowaniuModuli 2 i innych, językModula czasem określano – dla jednoznaczności – jakoModula 1). Należy podkreślić, że kolejne cyfry nie oznaczają kolejnych wersji rozwojowych, lecz osobne języki budowane na tych samych wzorcach, lecz o różniących się założeniach i przeznaczeniu.
Każdy program składa się zmodułu lub wielu modułów. Moduły zewnętrzne mogą byćkompilowane niezależnie. Moduły mogą być zgłębione w innych modułach. Moduł ma postać:
pre MODULEnazwa;listy_importowedeklaracje BEGINinstrukcje ENDnazwa.
Moduły dzielą się na:
Instrukcja IMPORTlisty_importowej pozwala importować obiekty z innych modułów. Do udostępniania własnych obiektów służy instrukcja EXPORT.
Obiekt nie jest tu używany w sensieprojektowania obiektowego.
Język wyposażony został winstrukcje strukturalne wzorowane na instrukcjach Pascala z pewnymi rozszerzeniami. Zasadnicza różnica, wywodząca się z Moduli 1, to słowo kluczowe END zamykające każdąinstrukcję strukturalną, co eliminuje konieczność stosowana instrukcji grupującej (jak begin…end w Pascalu, czy {…} wjęzyku C). Ponadto rozszerzono postać instrukcji IF i FOR oraz wprowadzono instrukcję pętli LOOP dla programowaniawspółbieżnego.
IFw1 THENsi1[
ELSIFw2 THENsi2[
ELSIFw3 THENsi3 …]]
[
ELSEsi-else]
END
CASEwyr OFw1 :si1 |[
w2 :si2[
| …]]
[
ELSEsi_else]
END
WHILEw DOsi END
REPEATsi UNTILw
FORi:=w TOw2 [BYw3] DOsi END
LOOPsi END
JęzykModula 2 udostępnia mechanizmy do programowania procesówwspółbieżnych – zarówno procesów:
WModuli 2 mechanizmy współbieżności oparto na rozwiązaniach znanych z językówModula iConcurrent Pascal. Komunikacja między procesami odbywa się za pomocą zmiennych współdzielonych i sygnałów.
W języku wprowadzono również dla potrzeb programowania systemowego mechanizmy niskiego poziomu pozwalające na ominięcie reguł związanych ze ścisłą kontrolą typów obowiązującą w tym języku.
1GL | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2GL/ Język drugiej generacji/ Asembler | |||||||||||||||
3GL / Język trzeciej generacji |
| ||||||||||||||
4GL/ Język czwartej generacji/ Język dziedzinowy |
| ||||||||||||||
5GL/Logiczne | |||||||||||||||
Ezoteryczne | |||||||||||||||
Inne |