Modula-2 (транскр. Модула-2) је императивни програмски језик опште намене. Његов аутор Никлаус Вирт га је сматрао директним наследником далеко познатијег програмског језика Паскал, чији је аутор такође. У односу на Паскал, језик Модула-2 поседује нека упрошћења и следећа главна проширења:

  • Могућност растављања изворног кода програма на независне делове који самостално могу да буду преведени и потом увезани. Ова могућност је подржана кроз концепт модула.
  • Нешто измењена синтакса код које свака структура поседује сопствене заграде у облику резервисаних речи.
  • Директно подржано мултипрограмирање кроз концепт процеса.
  • Додати елементи ниског нивоа који додатно проширују могућности креирања нових типова података и омогућавају системско програмирање. Ови елементи и њихова употреба су јасно одвојени од остатка језика.
  • Процедурални тип података који омогућава да процедура буде додељена променљивој као вредност у току извршавања програма.

Настанак уреди

Језик Модула-2 је, по речима аутора, дефинисан и експериментално имплементиран 1975. године по први пут. Надовезује се на коцепте Паскал језика и језика Модула по коме је добио име.

Особине језика уреди

Програм у програмском језику Модула-2 се састоји из једног модула највишег нивоа који може да врши увоз (из) једног или више других модула. Сваки увезени модул може да увози из других модула.

Здраво свете уреди

Пример програма који се састоји из једног модула највишег нивоа. Програм исписује "Zdravo svete!":

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

Овде програм, који обавезно почиње резервисаном речи MODULE, има име Pozdrav. Он из другог модула, са именом InOut, увози две процедуре WriteString и WriteLn које затим користи за испис текста.

Двоструки поздрав уреди

Следећи програм исписује два реда текста. У првом реду исписује "Zdravo svete!", а у следећем "Pozdrav iz Modula 'DrugiPozdrav'!!".

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

Да би обавио свој посао модул DvaPozdrava, између осталог, увози процедуру pozdrav из модула DrugiPozdrav, чији код следи:

 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.

Ради се, у ствари, о два модула који су међу собом повезани. Први, дефинициони модул, говори о томе шта модул ради, док други, имплементациони модул са истим именом, одређује како ће то да се уради. Дефинициони модул одређује шта модул извози; у овом случају једино процедуру pozdrav.

Књиге уреди

Спољашње везе уреди