Modula-2

Modula 2
Pojawienie się

1978

Paradygmat

imperatywny, strukturalny, współbierzny

Typowanie

silne

Implementacje

Lilith

Twórca

Niklaus Wirth

Strona internetowa

Modula 2język programowania wysokiego poziomu stworzony przez Niklausa Wirtha.

Historia

Język Modula 2 stworzony został podczas prac badawczych w Instytucie Informatyki Politechniki w Zurichu. Prace nad językiem rozpoczęto w 1977 r., a ich efektem była pierwsza implementacja tego języka zrealizowana w 1979 r. na komputerze PDP-11. Definicja języka opublikowana została w 1980 r.

Język wywodzi się z Pascala i Moduli. 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 zrealizowaniu Moduli 2 i innych, język Modula czasem określano – dla jednoznaczności – jako Modula 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.

Składnia

Każdy program składa się z moduł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 MODULE nazwa;
   listy_importowe
   deklaracje
 BEGIN
   instrukcje
 END nazwa.

Moduły dzielą się na:

  • moduły programu
  • moduły definiujące : pre=DEFINITION
  • moduły implementujące : pre=IMPLEMENTATION

Instrukcja IMPORT listy_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 sensie projektowania obiektowego.

Język wyposażony został w instrukcje 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 {…} w języku C). Ponadto rozszerzono postać instrukcji IF i FOR oraz wprowadzono instrukcję pętli LOOP dla programowania współbieżnego.

 IF w1 THEN si1
 [ELSIF w2 THEN si2
 [ELSIF w3 THEN si3]]
 [ELSE si-else]
 END
 CASE wyr OF
 w1 : si1 |
 [w2 : si2 [ |
 …]]
 [ELSE si_else]
 END
 WHILE w DO
   si
 END
 REPEAT
   si
 UNTIL w
 FOR i:=w TO w2 [BY w3] DO
   si
 END
 LOOP
   si
 END

Współbieżność

Język Modula 2 udostępnia mechanizmy do programowania procesów współbieżnych – zarówno procesów:

  • luźno związanych (ang. loosely coupled), jak i
  • silnie związanych (ang. tightly coupled).

W Moduli 2 mechanizmy współbieżności oparto na rozwiązaniach znanych z języków Modula i Concurrent Pascal. Komunikacja między procesami odbywa się za pomocą zmiennych współdzielonych i sygnałów.

Inne właściwości

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.

Zobacz też

Bibliografia

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.