Модула-2

Из Википедије, слободне енциклопедије

Модула-2 (нем. Modula-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.

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