Interpretované vs kompilované programovacie jazyky: Aký je rozdiel?

Každý program obsahuje sadu pokynov, či už ide o pridanie dvoch čísel, alebo odoslanie žiadosti cez internet. Prekladatelia a tlmočníci prevezmú ľudsky čitateľný kód a prevedú ho na počítačom čitateľný strojový kód.

V skompilovanom jazyku cieľový stroj priamo preloží program. V interpretovanom jazyku cieľový stroj zdrojový kód neprekladá priamo. Namiesto toho iný program, alias tlmočník, prečíta a vykoná kód.

Dobre ... ale čo to vlastne znamená?

Predstavte si, že máte recept na hummus, ktorý chcete pripraviť, ale je napísaný v starogréčtine. Existujú dva spôsoby, ako by ste sa mohli starať, nie starogrécky hovoriaci, podľa jeho pokynov.

Prvá je, ak vám to už niekto preložil do angličtiny. Vy (a ktokoľvek iný, kto hovorí anglicky) ste si mohli prečítať anglickú verziu receptu a pripraviť hummus. Predstavte si tento preložený recept ako kompilovanú verziu.

Druhý spôsob je, ak máte priateľa, ktorý vie starogréčtinu. Keď ste pripravení na prípravu hummusu, váš priateľ sedí vedľa vás a prekladá recept postupne do angličtiny, rad za radom. V takom prípade je váš priateľ tlmočníkom interpretovanej verzie receptu.

Zostavené jazyky

Zkompilované jazyky sú prevedené priamo do strojového kódu, ktorý procesor dokáže vykonať. Vo výsledku majú tendenciu byť rýchlejšie a efektívnejšie na vykonávanie ako tlmočené jazyky. Dávajú vývojárovi tiež väčšiu kontrolu nad hardvérovými aspektmi, ako je správa pamäte a využitie procesora.

Zkompilované jazyky potrebujú krok „zostavenia“ - je potrebné ich najskôr kompilovať manuálne. Program musíte „prestavať“ zakaždým, keď potrebujete urobiť zmenu. V našom príklade hummusu je celý preklad napísaný skôr, ako sa k vám dostane. Ak sa pôvodný autor rozhodne, že chce použiť iný druh olivového oleja, bude treba znova preložiť celý recept a odporovať vám.

Príklady čisto skompilovaných jazykov sú C, C ++, Erlang, Haskell, Rust a Go.

Tlmočené jazyky

Tlmočníci prechádzajú programom po riadku a vykonávajú každý príkaz. Ak sa tu autor rozhodne, že chce použiť iný druh olivového oleja, môže ten starý poškriabať a pridať nový. Váš priateľ prekladateľa vám potom môže túto zmenu okamžite oznámiť.

Interpretované jazyky boli kedysi výrazne pomalšie ako kompilované jazyky. S vývojom kompilácie just-in-time sa však táto medzera zmenšuje.

Príklady bežných interpretovaných jazykov sú PHP, Ruby, Python a JavaScript.

Malá výhrada

Väčšina programovacích jazykov môže mať kompilovanú aj interpretovanú implementáciu - samotný jazyk nemusí byť nevyhnutne kompilovaný alebo interpretovaný. Pre jednoduchosť sa však zvyčajne označujú ako také.

Napríklad Python môže byť spustený ako kompilovaný program alebo ako interpretovaný jazyk v interaktívnom režime. Na druhej strane, väčšinu nástrojov príkazového riadku, CLI a škrupín možno teoreticky klasifikovať ako interpretované jazyky.

Výhody a nevýhody

Výhody kompilovaných jazykov

Programy, ktoré sú kompilované do natívneho strojového kódu, bývajú rýchlejšie ako interpretovaný kód. Je to preto, že proces prekladu kódu za behu zvyšuje réžiu a môže spôsobiť, že program bude celkovo pomalší.

Nevýhody kompilovaných jazykov

Najvýznamnejšie nevýhody sú:

  • Pred testovaním je potrebný ďalší čas na dokončenie celého kroku kompilácie
  • Závislosť generovaného binárneho kódu na platforme

Výhody tlmočených jazykov

Interpretované jazyky majú tendenciu byť flexibilnejšie a často ponúkajú funkcie, ako je dynamické písanie a menšia veľkosť programu. Pretože tlmočníci sami vykonávajú zdrojový programový kód, samotný kód je nezávislý na platforme.

Nevýhody tlmočených jazykov

Najvýznamnejšou nevýhodou je typická rýchlosť vykonávania v porovnaní s kompilovanými jazykmi.