Modula-2

S Vikipedije, slobodne enciklopedije

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 | uredi izvor]

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 | uredi izvor]

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 | uredi izvor]

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 | uredi izvor]

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 | uredi izvor]

Spoljašnje veze[uredi | uredi izvor]