Interpretirani i kompilirani programski jezici: u čemu je razlika?

Svaki je program skup uputa, bilo da se radi o dodavanju dva broja ili o slanju zahtjeva putem interneta. Prevoditelji i tumači uzimaju čovjeku čitljiv kod i pretvaraju ga u računalno čitljiv strojni kod.

U kompajliranom jeziku, ciljni stroj izravno prevodi program. U interpretiranom jeziku, ciljni stroj ne prevodi izvorni kod. Umjesto toga, drugi program, zvan tumač, čita i izvršava kôd.

Dobro ... ali što to zapravo znači?

Zamislite da imate recept za humus koji želite napraviti, ali on je napisan na starogrčkom. Postoje dva načina na koja biste vi, ne-starogrčki govornik, mogli slijediti njegove upute.

Prvo je ako vam ga je netko već preveo na engleski. Vi (i bilo tko drugi koji zna engleski) mogli ste pročitati englesku verziju recepta i napraviti humus. Zamislite ovaj prevedeni recept kao kompiliranu verziju.

Drugi je način ako imate prijatelja koji zna starogrčki. Kad ste spremni za pravljenje humusa, vaš prijatelj sjedi pored vas i po potrebi prevodi recept na engleski, redak po redak. U ovom je slučaju vaš prijatelj tumač protumačene verzije recepta.

Sastavljeni jezici

Sastavljeni jezici pretvaraju se izravno u strojni kod koji procesor može izvršiti. Kao rezultat toga, oni se teže izvršavaju brže i učinkovitije od interpretiranih jezika. Oni također daju programeru veću kontrolu nad hardverskim aspektima, poput upravljanja memorijom i upotrebe CPU-a.

Sastavljeni jezici trebaju korak "gradnje" - prvo ih treba ručno sastaviti. Morate "obnoviti" program svaki put kada trebate napraviti promjenu. U našem primjeru humusa, cijeli je prijevod napisan prije nego što dođe do vas. Ako originalni autor odluči da želi upotrijebiti drugu vrstu maslinovog ulja, čitav recept trebao bi biti ponovno preveden i vama zamjeriti.

Primjeri čisto kompajliranih jezika su C, C ++, Erlang, Haskell, Rust i Go.

Tumačeni jezici

Tumači prolaze kroz program redak po redak i izvršavaju svaku naredbu. Ako autor odluči da želi upotrijebiti drugu vrstu maslinovog ulja, mogao bi izgrebati staro i dodati novo. Vaš prijatelj prevoditelj tada vam može prenijeti tu promjenu kako se dogodi.

Tumačeni jezici nekada su bili znatno sporiji od kompajliranih jezika. No, razvojem pravovremene kompilacije, taj se jaz smanjuje.

Primjeri uobičajenih interpretiranih jezika su PHP, Ruby, Python i JavaScript.

Mali upozorenje

Većina programskih jezika može imati i kompajlirane i interpretirane implementacije - sam jezik nije nužno kompiliran ili interpretiran. Međutim, radi jednostavnosti, obično se nazivaju takvim.

Primjerice, Python se može izvesti kao kompajlirani program ili kao protumačeni jezik u interaktivnom načinu. S druge strane, većina alata naredbenog retka, CLI i školjke teoretski se mogu klasificirati kao interpretirani jezici.

Prednosti i nedostatci

Prednosti kompajliranih jezika

Programi koji se prevode u izvorni strojni kôd obično su brži od protumačenih kodova. To je zato što se proces prevođenja koda u vrijeme izvođenja uvećava za opće troškove i može uzrokovati sporiji rad programa.

Mane kompajliranih jezika

Najznačajniji nedostaci su:

  • Dodatno vrijeme potrebno za dovršetak cijelog koraka sastavljanja prije testiranja
  • Ovisnost platforme generiranog binarnog koda

Prednosti tumačenih jezika

Interpretirani jezici obično su fleksibilniji i često nude značajke poput dinamičnog tipkanja i manje veličine programa. Također, budući da tumači sami izvršavaju izvorni programski kod, kod je sam po sebi neovisan o platformi.

Mane tumačenih jezika

Najuočljiviji nedostatak je tipična brzina izvršavanja u usporedbi s kompiliranim jezicima.