Programovací jazyky obecně spadají do jednoho ze dvou typů jazyků - kompilované jazyky nebo interpretované jazyky. Rozdíl však není v jazyce; je to v realizaci. Není špatné říkat, že oba jsou vlastnosti implementace jazyka, ale nikoli vlastnosti samotného jazyka. Implementace programovacího jazyka znamená překlenutí mezery od myšlení na vysoké úrovni k programátorům k nulem a strojům. Pokud se to dělá efektivně, mohou se programátoři soustředit spíše na skutečné problémy než na podrobnosti o strojích. Programovací jazyk lze tedy sestavit nebo interpretovat na základě implementace.
Oba typy programovacích jazyků mají své silné stránky. Některé jazyky vyžadují, aby byl celý kód zkompilován dříve, než bude možné jakýkoli kód spustit. Jiné jazyky interpretují každou instrukci v okamžiku spuštění kódu. Ve skutečnosti jsou kompilované jazyky obvykle kompilovány programátorem v počítači programátora; když programátor sdílí software, sdílí kompilované 0 a 1, ale ne zdrojový kód. U interpretovaného jazyka je však kód uložen ve stejném formátu, jaký jste zadali, a musí být přeložen za běhu. Pojďme se podívat na podrobné srovnání kompilovaných a interpretovaných jazyků.
Počítače jsou schopny provádět pouze strojový jazyk, což je jazyk centrální procesorové jednotky (CPU) a je velmi jednoduchý. Cílem jakékoli implementace programovacího jazyka je přeložit zdrojový program do strojového jazyka, aby jej bylo možné provést CPU. Všechny jazykové implementace převádějí zdrojový program do nějaké přechodné reprezentace před přeložením přechodné reprezentace do strojového jazyka. Nejpřímější metoda překladu programu do jazyka stroje se nazývá kompilace. Program napsaný ve kompilovaném jazyce musí být před spuštěním převeden do jiného formátu. Zdrojový kód musí být před provedením transformován do strojově čitelných pokynů. Stručně řečeno, jazyky, jejichž implementace jsou obvykle kompilátory, a nikoli tlumočníci, se nazývají kompilované jazyky.
Tlumočník je program, který je psán v jiném jazyce a zkompilován do strojově čitelného jazyka. Samotný tlumočník je program strojového jazyka a je psán pro čtení zdrojových programů z interpretovaného jazyka a jejich interpretaci. Interpretovaný jazyk naopak před spuštěním programu nekompiluje zdrojový kód do strojového jazyka. Pouze interpretuje kód za běhu. Takže nemáte výhody ani nevýhody kompilačních chyb. Interpretované jazyky vyžadují kus softwaru nazývaného tlumočník, který vezme zdrojový kód a provede jednu instrukci najednou. Když spustíte interpretovaný zdrojový program, skutečně spustíte tlumočníka. Tlumočník je program strojového jazyka, který provádí všechny programy, které píšete v interpretovaném jazyce.
- Program napsaný ve kompilovaném jazyce musí být před spuštěním převeden do jiného formátu. Zdrojový kód musí být před provedením transformován do strojově čitelných pokynů. Interpretovaný jazyk naopak před spuštěním programu nekompiluje zdrojový kód do strojového jazyka. Pouze interpretuje kód za běhu. Interpretované jazyky vyžadují kus softwaru nazývaného tlumočník, který vezme zdrojový kód a provede jednu instrukci najednou.
- U kompilovaných jazyků existují alespoň dva kroky, jak se dostat ze zdrojového kódu k provedení, zatímco u interpretovaných jazyků existuje pouze jedno provedení. Program napsaný v interpretovaném jazyce není kompilován - je interpretován jiným programem, zatímco běží. Program napsaný ve zkompilovaném jazyce prochází procesem jeho změny z textového formátu čitelného člověkem na strojově čitelný formát. Program nazvaný kompilátor provede tento přechod.
- Kompilované programy běží rychleji než interpretované programy, ale interpretované programy lze během chodu programu upravit. Díky tomu jsou interpretované programy ideální pro psaní softwaru pro živé vystoupení. Práce se kompilovanými jazyky může být příjemná, protože při kompilaci zdrojového kódu je nalezeno mnoho chyb. Tyto chyby nazývané chyby kompilace zabraňují kompilaci kódu. Naopak, interpretované jazyky nejsou kompilovány, takže nemáte výhody ani nevýhody kompilačních chyb.
- U interpretovaných jazyků dochází k veškerému ladění za běhu. Neexistuje žádný krok kompilace, během kterého můžete vyčíst všechny chyby syntaxe v kódu; místo toho musíte spustit program, abyste v něm našli nějaké chyby. To se stává problémem při interpretaci programu, který upravuje soubory nebo provádí jakékoli změny trvalých zdrojů. To ztěžuje zachycení některých chyb, protože kód není třeba kompilovat. Interpretované jazyky také představují určité bezpečnostní obavy v online prostředí, protože škodlivý kód lze vložit do poloviny provádění.
Stručně řečeno, kompilované i interpretované jazyky mají své silné stránky. Některé jazyky vyžadují, aby byl celý kód zkompilován dříve, než bude možné jakýkoli kód spustit. Jiné jazyky interpretují každou instrukci v okamžiku spuštění kódu. Hlavní rozdíl mezi těmito dvěma je, že existují alespoň dva kroky, jak se dostat ze zdrojového kódu k provedení se zkompilovanými jazyky. U interpretovaných jazyků je však pouze jeden krok - provedení. Kompilované programy běží rychleji než interpretované programy, ale interpretované programy lze během chodu programu upravit.