You are on page 1of 1

Kompajleri i interpreteri

Već je rečeno da računar neposredno razumije samo mašinski jezik. Program, u ma kojem drugom
programskom jeziku, za računar je obični tekst koji mu ne znači apsolutno ništa. Stoga se programi
pisani u drugim programskim jezicima moraju prevesti u mašinski jezik uz pomoć posebnih programa
prevodilaca koji se nazivaju komopajleri (jasno je da su prvi kompajleri morali biti napisani u mašinskom
jeziku, s obzirom da je na početku on bio jedini jezik koji je na raspolaganju). Program napisan u nekom
višem programskom jeziku (prije prevođenja) naziva se izvorni program (ili izvorni kod), dok se mašinski
program nastao kao rezultat prevođenja naziva se objektni program (ili objektni kod). Prevodioci koji
prevode asemblerski u mašinski jezik obično se nazivaju asembleri a ne kompajleri (što je donekle
konfuzno, jer se i sam asemblerski jezik nerjetko naziva asembler). Nekada je programer bio mnogo
svjesniji postojanja kompajlera, jer su se programi prvo pisali u nekom od editora teksta, zatim snimali
kao tekstualni dokument (odnosno tekstualna datoteka), nakon čega se kompajler pozivao kao poseban
program sa ciljem formiranja objektnog programa koji se mogao izvršavati. Današnji kompajleri su
najčešće tako dobro integrirani u razvojni sistem da programer najčešće nije ni svjestan njihovog
postojanja, nego stiče iluziju da računar neposredno izvršava program pisan u nekom višem
programskom jeziku.
Pored kompajlera, postoji i drugi tip programa prevodilaca: to su tzv. interpreteri. Za razliku od
kompajlera, kod kojih se prvo čitav izvorni program prevodi u mašinski jezik pa tek tada započinje
njegovo izvršavanje, interpreteri uzimaju jednu naredbu izvornog programa, prevode je, izvršavaju je,
"zaboravljaju" njen prijevod, uzimaju sljedeću naredbu, prevode je, izvršavaju, itd. Stoga, interpreteri
podsjećaju na čovjeka – prevodioca koji obavlja simultano prevođenje nekog govora sa jednog jezika na
drugi, uporedo dok govornik govori. S druge strane, kompajleri podsjećaju na čovjeka – prevodioca koji
dobije pisani tekst na jednom jeziku, a predaje kao rezultat svoga rada pisani tekst na drugom jeziku.
Kompajlirani programi izvršavaju se mnogo brže u odnosu na interpretirane programe. Naime, u slučaju
interpretera, naredbe koje se ponavljaju (recimo, u nekom ciklusu), prevode se svaki put ispočetka
(nakon čega interpreter svaki put "zaboravlja" njihov prijevod), što nesumnjivo troši vrijeme. Međutim,
interpreteri imaju i svojih prednosti. Interpretirani program je lako prekinuti u bilo kojem trenutku, nakon
čega možemo obaviti neke izmjene u programu i nastaviti izvođenje od mjesta prekida, što nije lako
izvodljivo (ponekad i nemoguće) u kompajliranim programima. Stoga su razvoj i ispravka interpretiranih
programa znatno jednostavniji nego u slučaju kompajliranih programa. Dalje, neki od jezika po svojoj
prirodi nisu pogodni za kompajliranje, nego samo za interpretiranje. Tu se prvenstveno misli na
neproceduralne jezike, koji se uglavnom interpretiraju (kompajleri za neproceduralne jezike su prava
rjetkost). Od proceduralnih jezika najčešće se interpretira BASIC (iako postoje i kompajleri za BASIC),
dok se FORTRAN, Pascal i C isključivo kompajliraju. Međutim, današnji kompajleri za Pascal i C pružaju
gotovo sve pogodnosti koje pružaju interpreteri, tako da je danas rad sa ovim jezicima udoban kao
nekad rad u BASIC-u. Napomenimo još da postoje i hibridni prevodioci (na primjer, tzv. P-kod kompajleri
i run-time interpreteri) koji kombiniraju tehnike koje koriste kompajleri i interpreteri. Ovakvi prevodioci
najčešće se koriste kod programskog jezika Java.

You might also like