Kada napišemo program u C++ jeziku, računar taj kod još uvek ne može direktno da razume.
Računar ne razume:
cout,if,for,- niti bilo koju drugu C++ instrukciju.
On razume samo:
- mašinski jezik,
- odnosno binarne instrukcije sastavljene od nula i jedinica.
Zbog toga postoji poseban program koji prevodi C++ kod u jezik koji računar može da izvršava.
Taj program naziva se:
kompajler
U ovom tekstu naučićemo:
- šta je kompajler,
- kako funkcioniše proces kompajliranja,
- kako nastaje izvršni program,
- šta su greške pri kompajliranju,
- i kako računar pokreće program.
Šta je kompajler?
Kompajler je program koji prevodi izvorni kod napisan u programskom jeziku u mašinski jezik.
Drugim rečima:
- programer piše kod,
- kompajler prevodi kod,
- računar izvršava prevedene instrukcije.
Bez kompajlera računar ne bi mogao da pokrene C++ program.
Najpoznatiji C++ kompajleri su:
- GCC,
- g++,
- Clang,
- MSVC.
Kada kliknemo:
Build
ili:
Run
u Code::Blocks-u ili Visual Studio-u, zapravo pokrećemo kompajler.

Šta je izvorni kod?
Kod koji programer piše naziva se:
izvorni kod
To je tekstualni fajl koji najčešće ima ekstenziju:
.cpp
Primer jednostavnog izvornog koda:
#include <iostream>
using namespace std;
int main() {
cout << "Hello World";
return 0;
}
Ovaj kod je razumljiv ljudima, ali računar još uvek ne može direktno da ga izvršava.
Zbog toga mora da prođe kroz proces kompajliranja.
Šta je proces kompajliranja?
Proces kompajliranja predstavlja pretvaranje izvornog koda u izvršni program.
Taj proces prolazi kroz više koraka.
1. Analiza koda
Kompajler prvo proverava:
- sintaksu,
- strukturu programa,
- greške,
- deklaracije promenljivih,
- i pravila jezika.
Ako postoji greška:
cout << "Hello"
kompajler će prijaviti problem jer nedostaje:
;
Program tada neće moći da se pokrene.
2. Prevođenje u mašinski jezik
Ako nema grešaka, kompajler prevodi instrukcije u mašinski kod.
Na primer:
a = b + c;
postaje veliki broj binarnih instrukcija koje procesor može da izvršava.
3. Kreiranje izvršnog programa
Na kraju procesa nastaje:
.exefajl na Windows sistemima,- ili izvršni fajl na Linux sistemima.
Taj fajl sada može direktno da se pokrene.

Šta je mašinski jezik?
Mašinski jezik predstavlja jedini jezik koji procesor direktno razume.
Sastoji se od:
- nula,
- jedinica,
- i instrukcija procesora.
Na primer:
1011010100101010
Pisanje programa direktno u mašinskom jeziku bilo bi veoma teško i komplikovano.
Zbog toga koristimo programske jezike poput C++ koji omogućavaju ljudima da pišu razumljiv kod.
Kompajler zatim obavlja sav posao prevođenja.
Šta su greške pri kompajliranju?
Jedan od najvažnijih zadataka kompajlera jeste pronalaženje grešaka.
Najčešće greške su:
- nedostaje tačka-zarez,
- pogrešno napisano ime promenljive,
- nedostaje zagrada,
- pogrešna sintaksa.
Na primer:
int broj
cout << broj;
Kompajler će prijaviti grešku jer nedostaje:
;
Greške koje kompajler pronalazi nazivaju se:
sintaksne greške
One sprečavaju pokretanje programa.
Šta se dešava kada pokrenemo program?
Kada pokrenemo izvršni fajl:
- operativni sistem učitava program u memoriju,
- procesor počinje izvršavanje instrukcija,
- instrukcije se izvršavaju redom,
- program prikazuje rezultat.
Procesor izvršava instrukcije neverovatnom brzinom — milijardama puta u sekundi.

Razlika između kompajlera i interpretera
Neki jezici koriste:
kompajler
a neki:
interpreter
Kompajler:
- prevodi ceo program odjednom,
- kreira izvršni fajl,
- program radi veoma brzo.
Interpreter:
- izvršava kod liniju po liniju,
- ne kreira poseban izvršni fajl,
- sporiji je.
C++ koristi:
kompajler
dok na primer Python koristi:
interpreter
Zašto je kompajliranje važno?
Razumevanje procesa kompajliranja veoma je važno za svakog programera.
Kada razumete:
- kako nastaje izvršni program,
- kako kompajler proverava kod,
- i kako računar izvršava instrukcije,
mnogo lakše:
- pronalazite greške,
- optimizujete programe,
- i razumete način rada računara.
To predstavlja osnovu ozbiljnog programiranja.
Rezime
Kompajler predstavlja ključni deo razvoja C++ programa.
Njegov zadatak je da:
- proveri kod,
- pronađe greške,
- prevede instrukcije,
- i kreira izvršni program koji računar može da pokrene.
Bez kompajlera računar ne bi mogao da razume C++ kod.
Razumevanje procesa kompajliranja predstavlja jedan od najvažnijih koraka u učenju programiranja i rada računara.
Mini test
- Šta je kompajler?
a) Operativni sistem
b) Program za prevođenje koda
c) Internet browser - Šta predstavlja izvorni kod?
a) Mašinski jezik
b) Kod koji programer piše
c) Grafički prikaz programa - Koju ekstenziju najčešće imaju C++ fajlovi?
a) .mp3
b) .cpp
c) .jpg - Šta radi kompajler kada pronađe grešku?
a) Ignoriše grešku
b) Briše program
c) Prijavljuje grešku i zaustavlja kompajliranje - Šta nastaje nakon uspešnog kompajliranja?
a) Izvršni program
b) Internet stranica
c) Slika
Zadaci za vežbu
- Objasni svojim rečima šta radi kompajler.
- Napiši primer jednostavnog C++ programa.
- Namerno ukloni jednu tačku-zarez iz programa i pogledaj kakvu grešku prijavljuje kompajler.
- Istraži:
Koji kompajler koristi Visual Studio? - Objasni razliku između kompajlera i interpretera.
Domaći zadatak
Nacrtaj kompletan dijagram procesa kompajliranja:
Programer → Izvorni kod → Kompajler → Mašinski kod → Izvršni program → Procesor
Za svaki korak napiši kratko objašnjenje šta se dešava.
