Типови на програмски јазици

Во првото предавање наведовме дека главната цел на овој курс е да ги запознае читателите со начинот на пишување на програми во програмскиот јазик C++. Во продолжение е даден кодот на една C++ програма - програма која овозможува внесување на два цели броја од тастатура, и печатење на нивниот збир на екран:

Програма 3.1

#include <iostream>
using namespace std;

int main()
{
      int a, b, sum;
      
      cin >> a >> b;
      
      sum = a+b;
      cout << "Zbirot e: " << sum << endl;
      
      return 0;
}

Општата структура на една програма напишана во програмскиот јазик C++ ќе биде објаснета во следното предавање, соодветно наречено "Креирање на вашата прва програма". Она на што ќе се задржиме во овој дел е начинот на кој компјутерите успеваат да ги разберат програмите напишани на ваков начин.

Имено, компјутерите разбираат само мал број на наредби (т.н. "инструкции"), и тие мора точно да знаат што треба да извршат, во кој редослед и врз кои податоци. Процесорот (делот од компјутерот кој е задолжен за извршување на овие наредби) очекува инструкциите да му бидат предадени во вид на нули (0) и единици (1). Тоа е единствениот јазик кој тој го познава. Замислете колку би било сложено да се пишуваат софтверски програми користејќи нули и единици. Сепак, интересно е да се знае дека тоа е начинот на кој се пишувале програми во раните 1950-ти години. Во продолжение е даден изгледот на една инструкција разбирлива за процесорите:

100011 00001 00010 00110 00000 100000

Ваквите инструкции се нарекуваат "машински код", "машински јазик" или "инструкциско множество", и секоја од нив има свое значење - извршува одредена операција. Операцијата е определена со првите неколку цифри (100011), додека останатите цифри ги дефинираат податоците врз кои треба да се изврши таа операција. Покрај тоа што е крајно мачно да се пишуваат програми на ваков начин, тешко е и да се менуваат постоечките програми, како и да се откриваат грешки во нив. Дополнително, различните фамилии на процесори имаат сопствени множества на инструкции, па програмите напишани за Intel Pentium 3 нема да работат на AMD Athlon 2 (на пример).

Едно ниво над машинскиот код е т.н. assembly јазик. Assembly користи едноставни имиња како "ADD" (за собирање) или "MULT" (за множење), за да ги претстави инструкциите. Програмите напишани во assembly се претвораат во машински код преку едноставно заменување на имињата на инструкциите со соодветната низа од нули и единици која ја дефинира инструкцијата. Во продолжение е даден кодот на една assembly програма:

LOAD Price
ADD Tax
STORE Total

Денес, со исклучок на дизајнерите на embedded (вградливи) компјутерски системи, многу мал број на програмери користат assembly. Постојат три позначајни причини за тоа:

  • потребата од пишување на голем број на инструкции за правење на едноставни пресметки
  • програмите напишани во assembly се тешко читливи од страна на луѓето
  • assembly програмите напишани за една фамилија процесори не мора да работат на друга

Јазици од високо ниво

Поради сложеноста на assembly, креирани се т.н. јазици од високо ниво - јазици кои, преку сокривање на деталите од машинскиот код, им овозможуваат на програмерите да се фокусираат на решавање на вистинскиот проблем. Овие јазици се познати и како јазици од 3-та генерација (машинскиот код е јазик од 1-ва генерација, assembly е јазик од 2-ра генерација). Програмата која го чита кодот напишан во јазик од високо ниво и го претвора во програма која компјутерот може да ја разбере се нарекува компајлер. Јазиците од високо ниво се полесни за пишување, полесни за разбирање и полесни за менување. Дополнително, не е потребно пишување на десетици програми за секој можен тип на процесор.

Интересно е да се наведе дека постојат и јазици наменети за користење во само една област; на пример, јазици наменети за работа со бази на податоци (SQL). За овие јазици се вели дека се јазици од 4-та генерација.

Дозвола за користење: CC BY-NC 2.5 ©