Skip to content

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

Језик представља скуп правила за комуникацију између субјеката. Помоћу језика се представљају и преносе информације. Из тога можемо закључити да програмски језик служи за комуникацију између човека и рачунара – човек у рачунар уноси текст (кôд програма) на програмском језику, са циљем да рачунар изврши инструкције задате у том тексту. Програмски језик можемо дефинисати као скуп речи и правила које се користе за писање рачунарских програма, који служе за опис послова које треба да обави рачунар.

Поделе програмских језика

Програмске језике можемо поделити на више начина и у више категорија у зависности од критеријума на основу којег вршимо поделу. Најчешћа подела је према степену блискости са архитектуром рачунара где програмске језике делимо на језике ниског (машински и асемблерски) и високог нивоа (C, C++, C#, Java…). Језици ниског нивоа подразумевају блискост са хардвером, док језици високог нивоа, захваљујући компајлерима, не зависе од хардвера већ се могу користити на различитим архитектурама рачунара. Некада се у оваквим поделама програмски језик C сврстава у језике средњег нивоа.

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

Програм високог нивоа (програмски језик C):

#include <stdio.h>
int main(void)
{
        printf("Pozdrav!");
        return 0;
}

Асемблерски програм:

section     .text
global      _start
_start:
        mov     edx,len
        mov     ecx,msg
        mov     ebx,1
        mov     eax,4
        int     0x80
        mov     eax,1
        int     0x80
section     .data
msg     db  'Pozdrav!',0xa
len     equ $ - msg

Машински програм:

b8    21 0a 00 00
a3    0c 10 00 06
b8    6f 72 6c 64
a3    08 10 00 06
b8    6f 2c 20 57
a3    04 10 00 06
b8    48 65 6c 6c
a3    00 10 00 06
b9    00 10 00 06
ba    10 00 00 00
bb    01 00 00 00
b8    04 00 00 00
cd    80
b8    01 00 00 00
cd    80

Према начину превођења програма, програмске језике можемо поделити на компајлерске и интерпретерске. Код компајлерских језика врши се превођење и повезивање програма у циљу добијања извршног програма, који се касније може независно извршавати. Код интерпретерских језика превођење сваке команде врши се пре њеног извршења, што успорава рад програма, а програм се не може извршити независно без постојања интерпретера.

Према начину програмирања, програмске језике сврставамо у програмске парадигме. Основне програмске парадигме могу бити императивне и декларативне. Императивне програмске парадигме могу бити процедуралне (језици C, Pascal, Fortran, Basic) и објектно-оријентисане (језици C++, Java, C#). Декларативне програмске парадигме могу бити функционалне (језици PHP, Python, Haskell, Perl) и логичке (језик Prolog и његови деривати). У савременим програмским језицима често је помешано више програмских парадигми, тако са су овакве поделе све мање стриктне.

Програмски језик C

Програмски језик C је процедурални програмски језик опште намене кога су развили Dennis Ritchie и Ken Thompson између 1969. и 1973. године у компанији Bell Labs. Оригинално је развијен за оперативни систем UNIX на PDP-11 и IBM System/370 рачунарима и убрзо искоришћен за репрограмирање језгара већине оперативних система.

Dennis Ritchie и Ken Thompson

Популарност програмског језика C порасла је 1978. године када су Brian Kernighan и Dennis Ritchie публиковали прво издање књиге The C Programming Language, која је позната међу програмерима као бела књига или K&R. Она је уједно била и неформална спецификација овог програмског језика.

Осамдесетих година појавили су се C компајлери за различите хардверске платформе и различите оперативне системе и било је јасно да се језик мора стандардизовати. Амерички Национални Институт за Стандарде (енгл. American National Standards Institute – ANSI) је 1983. године формирао комисију која је радила до 1989. године и публиковала стандард X3.159-1989 Programming Language C, по којем је ова верзија програмског језика названа ANSI C, Стандардни C или C89. Интернационална Организација за Стандарде (енгл. International Organization for Standardization – ISO) усвојила је овај стандард као интернационални 1990. године под називом ISO/IEC 9899:1990 Programming languages – C по којем је ова верзија названа и C90. Стандардизацијом је програмски језик C постао један од најмоћнијих, најбржих и најкоришћенијих програмских језика.

ISO је ревидирао C стандард 1999. године у стандарду ISO/IEC 9899:1999 Programming languages – C (верзија C99), 2011. године у стандарду ISO/IEC 9899:2011 Information technology – Programming languages – C (верзија C11), а последња ревизија десила се 2018. године у стандарду ISO/IEC 9899:2018 Information technology – Programming languages – C (верзија C18). Како је C и најчешће коришћен језик у електроници и уграђеним системима, 2003. и 2006. године публиковани су и стандарди за додатке програмском језику C за уграђене процесоре (верзија Embedded C).

Програмски језик C послужио је као основа за развој нових програмских језика. Од краја седамдесетих до средине осамдесетих година на темељима програмског језика C развијан је програмски језик C++ као објектно-оријентисани програмски језик опште намене који је доживео прву стандардизацију 1989. године. Следили су и Java, JavaScript, C#, Objective-C, Python, Perl, PHP и многи други.