Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
zextras_logo.png
 
You are here: Home / Uputstva / Teorija / Izvorni kod ili binarni kod

Izvorni kod ili binarni kod

by Goran Mekić last modified Jul 18, 2007 12:33 AM
Šta je to izvorni kod a sta binarni

Jedna od prvih tema koja ljudima nije jasna kod računara je upravo ova. Šta, ustvari, predstavlja binarni kod? To je samo jedan niz nula i jedinica. Bukvalno! Svaki program je niz za sebe. Pri tom taj niz mora biti pravilan, odnosno, ne može svaki niz nula i jedinica da predstavlja program (kao što je reč niz slova, ali samo pravilno složenih).

Sa druge strane, izvorni kod je nešto što je čovek više u stanju da pročita od 11001001011110. Naime, izvorni kod Vam neće biti jasan samo zato što su imena funkcija (tačnije, skoro pa ceo jezik) u njemu na engleskom, pa čak i ako znate engleski. Stvar je u tome da je izvorni kod opis programa koji se pravi. Možete ga shvatiti kao kuvarski recept. Ono što je napisano na papiru (sam recept) uopšte ne liči na ono što izađe iz rerne (ako ste baš radi probati, testirajte ukus papira na kome je recept odštampan i palačinke iz tiganja - ni nalik, zar ne?). Jedina razlika je u tome što program zahteva striktne naredbe i nikada ne možete napisati nešto tipa "tri prstohvata soli na jednu, ne do vrha punu, kašiku brašna".

Da biste razumeli zašto je izvorni kod bitan, morate znati najosnovnije o kompajlerima (programski prevodioci). Izvorni kod možete pročitati ako imate znanja o programiranju, dok Vam za binarni ne može niko pomoći da ga pročitate. Ono što kompajler radi je da programeru čitljiv tekst prevede u one silne nule i jedinice koje računar može da pokrene (baš ono što profesionalni kuvari rade sa receptom). Ono što kompajler uz put radi je sastavljanje više naredbi u jednu. Evo jednog primera: "Ispeći pile" podrazumeva niz akcija. Nabavku namirnica, grejanje rerne, pouljivanje pleha, ... Ista stvar je i sa izvornim kodom. Jedna funkcija radi više stvari koje se "ne vide". Naime, ranije su ljudi programirali tako što su unosili nule i jedinice (ne bukvalno, ali da ne komplikujemo), pa su vremenom uvideli da kada žele da, recimo, prikažu bilo kakav tekst na ekranu koriste neke naredbe koje se ponavljaju (malo formalnije rečeno, trebalo je iz operativne memorije preneti tekst u memoriju grafičke kartice i osvežiti taj deo ekrana, između ostalog). Onda su se setili da bi bilo lepo da kad požele da urade nešto slično imaju jednu komandu koja radi sve te akcije. Tako su nastali i prvi kompajleri (da budem precizan, asembleri, ali, opet, da ne komplikujemo priču). Sve u svemu, kompajler radi 2 stvari. "Razvijanje" svake komande u više sekvencijalnih i prevođenje "recepta" u "pile".

Iz istih razloga zašto je teško napraviti pile kada vidite već jedno ispečeno (niti znate koliko minuta je provelo u rerni, niti na kojoj temperaturi, niti koji začinini su korišćeni, ...), teško je napraviti program koji izgleda isto kao neki postojeći (ako pretpostavimo da ga programirate a ne kopirate sa CD-a).

E sad zamislite restoran hrane koji radi kućnu dostavu. Vi naručujete od njih stvari sa menija. Možda Vam se sviđa način na koji je nešto spremljeno, a možda i ne. Ako budete uporni i dobar ste platiša, možda će Vam izaći u susret i izmeniti recept tako da Vama odgovara. E na taj način rade i softverske kuće. I to je upravo ona najbitnija stvar kod posedovanja izvornog koda. Program možete menjati kako god Vama odgovara i koristiti ga kako god Vi želite, a ne kada to neka kuća dozvoli.


PS. Analogija sa receptima je "ukradena" od Ričarda Stolmana.

Document Actions