Modula-2 (transkr. Modula-2) je imperativni programski jezik opšte namene. Njegov autor Niklaus Virt ga je smatrao direktnim naslednikom daleko poznatijeg programskog jezika Paskal, čiji je autor takođe. U odnosu na Paskal, jezik Modula-2 poseduje neka uprošćenja i sledeća glavna proširenja:

  • Mogućnost rastavljanja izvornog koda programa na nezavisne delove koji samostalno mogu da budu prevedeni i potom uvezani. Ova mogućnost je podržana kroz koncept modula.
  • Nešto izmenjena sintaksa kod koje svaka struktura poseduje sopstvene zagrade u obliku rezervisanih reči.
  • Direktno podržano multiprogramiranje kroz koncept procesa.
  • Dodati elementi niskog nivoa koji dodatno proširuju mogućnosti kreiranja novih tipova podataka i omogućavaju sistemsko programiranje. Ovi elementi i njihova upotreba su jasno odvojeni od ostatka jezika.
  • Proceduralni tip podataka koji omogućava da procedura bude dodeljena promenljivoj kao vrednost u toku izvršavanja programa.

Nastanak

uredi

Jezik Modula-2 je, po rečima autora, definisan i eksperimentalno implementiran 1975. godine po prvi put. Nadovezuje se na kocepte Paskal jezika i jezika Modula po kome je dobio ime.

Osobine jezika

uredi

Program u programskom jeziku Modula-2 se sastoji iz jednog modula najvišeg nivoa koji može da vrši uvoz (iz) jednog ili više drugih modula. Svaki uvezeni modul može da uvozi iz drugih modula.

Zdravo svete

uredi

Primer programa koji se sastoji iz jednog modula najvišeg nivoa. Program ispisuje "Zdravo svete!":

 MODULE Pozdrav;
   FROM InOut IMPORT WriteString, WriteLn;
 BEGIN
   WriteString("Zdravo svete!");
   WriteLn
 END Pozdrav.

Ovde program, koji obavezno počinje rezervisanom reči MODULE, ima ime Pozdrav. On iz drugog modula, sa imenom InOut, uvozi dve procedure WriteString i WriteLn koje zatim koristi za ispis teksta.

Dvostruki pozdrav

uredi

Sledeći program ispisuje dva reda teksta. U prvom redu ispisuje "Zdravo svete!", a u sledećem "Pozdrav iz Modula 'DrugiPozdrav'!!".

 MODULE DvaPozdrava;
   FROM InOut IMPORT WriteString, WriteLn;
   FROM DrugiPozdrav IMPORT pozdrav;
 BEGIN
   WriteString("Zdravo svete!");
   WriteLn;
   pozdrav
 END DvaPozdrava.

Da bi obavio svoj posao modul DvaPozdrava, između ostalog, uvozi proceduru pozdrav iz modula DrugiPozdrav, čiji kod sledi:

 DEFINITION MODULE DrugiPozdrav;
     PROCEDURE pozdrav;
 END DrugiPozdrav.
 IMPLEMENTATION MODULE DrugiPozdrav;
   FROM InOut IMPORT WriteString, WriteLn;
   PROCEDURE pozdrav;
   BEGIN
     WriteString("Pozdrav iz Modula 'DrugiPozdrav'!!");
     WriteLn
   END pozdrav;
 END DrugiPozdrav.

Radi se, u stvari, o dva modula koji su među sobom povezani. Prvi, definicioni modul, govori o tome šta modul radi, dok drugi, implementacioni modul sa istim imenom, određuje kako će to da se uradi. Definicioni modul određuje šta modul izvozi; u ovom slučaju jedino proceduru pozdrav.

Knjige

uredi

Spoljašnje veze

uredi