Kada programer napiše program u C++ jeziku, računar taj kod još uvek ne može direktno da pokrene.
Kod koji programer piše predstavlja samo tekstualni zapis instrukcija koje čovek može da pročita i razume.
Da bi računar mogao da izvrši program, taj kod mora da prođe kroz proces kompajliranja i pretvaranja u izvršni program.
U ovom tekstu naučićemo:
- šta je izvorni kod,
- šta je izvršni program,
- kako nastaje izvršni fajl,
- koje su razlike između njih,
- i zašto su oba važna u procesu razvoja softvera.
Šta je izvorni kod?
Izvorni kod predstavlja tekst koji programer piše koristeći programski jezik.
To je kod koji:
- čovek može da pročita,
- menja,
- uređuje,
- i razvija.
Najčešće se čuva u fajlovima sa ekstenzijom:
.cpp
Primer jednostavnog izvornog koda:
#include <iostream>
using namespace std;
int main() {
cout << "Hello World";
return 0;
}
Ovaj kod je razumljiv programerima, ali računar još uvek ne može direktno da ga izvrši.
Izvorni kod predstavlja „uputstvo“ koje tek treba prevesti u mašinski jezik.

Karakteristike izvornog koda
Izvorni kod:
- piše programer,
- čitljiv je ljudima,
- može se menjati,
- sadrži instrukcije programskog jezika,
- i mora proći kroz kompajler.
Najvažnije osobine izvornog koda su:
- preglednost,
- organizacija,
- i mogućnost izmene.
Programeri često provode mnogo vremena uređujući i optimizujući upravo izvorni kod.
Šta je izvršni program?
Izvršni program nastaje nakon što kompajler prevede izvorni kod u mašinski jezik.
To je fajl koji računar može direktno da pokrene.
Na Windows sistemima izvršni program najčešće ima ekstenziju:
.exe
Za razliku od izvornog koda, izvršni program:
- nije namenjen ljudima,
- već procesoru i operativnom sistemu.
Unutar izvršnog programa nalaze se:
- mašinske instrukcije,
- memorijske adrese,
- i podaci koje procesor izvršava.
Primer izvršnog programa nije lako čitljiv ljudima jer sadrži binarne instrukcije i mašinski kod.

Kako nastaje izvršni program?
Proces nastanka izvršnog programa prolazi kroz nekoliko koraka.
1. Pisanje izvornog koda
Programer piše program:
int a = 10;
int b = 20;
cout << a + b;
2. Kompajliranje
Kompajler:
- proverava greške,
- prevodi kod,
- i kreira mašinske instrukcije.
3. Linkovanje
Kod većih programa povezuju se biblioteke i dodatni delovi programa.
4. Kreiranje izvršnog fajla
Na kraju nastaje:
.exe- ili izvršni program za operativni sistem.
Taj program sada može direktno da se pokrene.
Glavne razlike između izvornog koda i izvršnog programa
Postoji velika razlika između ova dva tipa fajlova.
Izvorni kod:
- piše čovek,
- razumljiv je programerima,
- može se uređivati,
- koristi C++ sintaksu,
- zahteva kompajler.
Izvršni program:
- nastaje kompajliranjem,
- izvršava ga računar,
- nije lako čitljiv ljudima,
- sadrži mašinski kod,
- može direktno da se pokrene.
Primer iz prakse
Kada programer razvija aplikaciju:
- piše
.cppfajlove, - pokreće kompajler,
- nastaje
.exefajl, - korisnik pokreće izvršni program.
Korisnik obično nikada ne vidi izvorni kod.
On koristi samo izvršni program.
Na primer:
- Google Chrome,
- Photoshop,
- video igre,
- i operativni sistemi
interno su napisani u izvornom kodu, ali korisnici koriste samo izvršne programe.

Zašto računar ne može direktno da izvrši izvorni kod?
Računar ne razume:
cout,if,for,- niti druge C++ instrukcije.
Procesor razume samo:
- binarne instrukcije,
- odnosno mašinski jezik.
Zbog toga kompajler mora da prevede:
cout << "Hello";
u veliki broj mašinskih instrukcija koje procesor može da izvršava.
Da li možemo otvoriti izvršni program?
Izvorni kod možemo otvoriti:
- u editoru,
- Notepad-u,
- Visual Studio-u,
- ili Code::Blocks-u.
Izvršni program ne možemo čitati kao običan tekst jer sadrži mašinski kod.
Ako pokušamo da otvorimo .exe fajl u Notepad-u videćemo:
- čudne simbole,
- nerazumljive karaktere,
- i binarne podatke.
To pokazuje da izvršni program nije namenjen ljudima već računaru.
Zašto je važno razumeti razliku?
Razumevanje razlike između izvornog koda i izvršnog programa predstavlja osnovu programiranja.
Kada razumete:
- šta piše programer,
- šta prevodi kompajler,
- i šta izvršava procesor,
mnogo lakše razumete:
- rad računara,
- kompajliranje,
- greške u programu,
- i razvoj softvera.
To znanje predstavlja osnovu za ozbiljno programiranje i razvoj aplikacija.
Rezime
Izvorni kod predstavlja program koji programer piše koristeći programski jezik poput C++.
Izvršni program nastaje nakon procesa kompajliranja i predstavlja fajl koji računar može direktno da pokrene.
Glavna razlika je u tome što:
- izvorni kod razume čovek,
- dok izvršni program razume računar.
Razumevanje ove razlike predstavlja jedan od najvažnijih koraka u učenju programiranja i rada računara.
Mini test
- Šta predstavlja izvorni kod?
a) Mašinski jezik
b) Kod koji programer piše
c) Operativni sistem - Koja je najčešća ekstenzija C++ izvornog fajla?
a) .cpp
b) .mp3
c) .jpg - Šta predstavlja izvršni program?
a) Tekstualni dokument
b) Program koji računar može direktno da pokrene
c) Internet stranica - Šta prevodi izvorni kod u izvršni program?
a) Browser
b) Kompajler
c) Monitor - Zašto izvršni program nije lako čitljiv ljudima?
a) Zato što sadrži mašinski kod
b) Zato što je zaključan
c) Zato što nema ekstenziju
Zadaci za vežbu
- Napiši jednostavan C++ program i sačuvaj ga kao
.cppfajl. - Kompajliraj program i pronađi
.exefajl. - Uporedi veličinu
.cppi.exefajla. - Pokušaj da otvoriš
.exefajl u tekst editoru. Šta primećuješ? - Objasni svojim rečima razliku između izvornog koda i izvršnog programa.
Domaći zadatak
Napravi tabelu u kojoj ćeš uporediti:
- izvorni kod,
- i izvršni program.
Tabela treba da sadrži:
- ko ih koristi,
- ko ih razume,
- da li se mogu uređivati,
- da li se mogu direktno pokrenuti,
- i koje ekstenzije koriste.
Na kraju napiši svoj zaključak:
Zašto su oba važna u razvoju softvera?
