Interpretovaný jazyk

Interpretovaný jazyk je programovací jazyk, u něhož je pro spuštění programu nezbytný jeho zdrojový kód a zvláštní program zvaný interpret, který zdrojový kód provádí (interpretuje).

Protikladem k interpretovaným jazykům jsou kompilované jazyky, u nichž je nutné zdrojový kód programu nejdříve přeložit překladačem do strojového kódu. Strojový kód je spustitelný soubor, který po zavedení do paměti může přímo provádět procesor počítače.

Výhody interpretačního zpracování programů jsou snadnost provádění úprav v programu, snazší hledání a odstraňování chyb v programu (ladění programu) a obvykle dobrá přenositelnost programu na jinou platformu (pokud pro ni existuje interpret příslušného jazyka); nevýhody jsou nutnost mít interpret programovacího jazyka a pomalejší běh programu.

Historický vývoj pohledu na interpretaci a kompilaci programů editovat

V počátcích počítačů byl návrh programovacího jazyka často významně ovlivněn rozhodnutím, zda jazyk bude kompilovaný nebo interpretovaný. Ve většině kompilovaných jazyků je například typ proměnných pevně určen deklarací nebo prvním použitím, a každou proměnnou lze používat pro ukládání hodnot pouze jednoho typu. Naproti tomu některé interpretované jazyky s výhodou využívaly dynamické aspekty interpretace, aby se deklaracím proměnných vyhnuly. Například jazyk Smalltalk (1980) navržený jako interpret dovoluje, aby spolu mohly interagovat libovolné objekty.

V současnosti pro mnoho jazyků existují kompilátory i interprety – příkladem jsou jazyky BASIC, C, Lisp, Pascal a Python. Teoreticky může být každý jazyk kompilovaný i interpretovaný, takže by se toto rozlišování mělo používat pouze pro označení konkrétního způsobu implementace, ne jako základní vlastnost programovacího jazyka. U některých programovacích jazyků je navíc jen malý rozdíl ve výkonu mezi zkompilovaným a interpretovaným programem.

Interpretované jazyky byly zpočátku kompilovány po jednotlivých řádcích; pokud byl určitý řádek uvnitř cyklu, byl kompilován při každém průchodu cyklem. V současnosti většina interpretovaných jazyků používá mezikód a tak kombinuje kompilační a interpretační přístup. Kompilátor pak vytváří určitou formu mezikódu, například bytový kód (bytecode) nebo zřetězený kód, a ten je pak interpretován interpretem mezikódu.

Příklady:

Mezikód může být překládán jen jednou (např. u Javy), před každým spuštěním (např. u Perlu nebo Ruby) nebo pokaždé, když se zjistí, že byl změněn zdrojový kód (např. u Pythonu).

U jazyka Java je program převeden do tvaru, ve kterém je následně interpretován. Nebo je možné vytvořit strojový kód pomocí just-in-time překladu. Také jazyky, které jsou součástí .NET Framework firmy Microsoft se kompilují do Common Intermediate Language (CIL), který je pak metodou just-in-time přeložen do nativního strojového kódu. Mnoho implementací jazyka Lisp umožňuje volně kombinovat interpretovaný a kompilovaný kód. Tyto implementace používají překladač, který umožňuje při běhu programu přeložit libovolný zdrojový kód na strojový kód.

Výhody interpretovaných jazyků editovat

Implementace jazyka pomocí interpretu poskytuje ze své podstaty určitou pružnost oproti implementaci pomocí překladače. Obvykle je snazší implementovat následující vlastnosti pomocí interpretu než pomocí překladače:

Nevýhody interpretovaných jazyků editovat

Hlavní nevýhodou interpretovaných jazyků je mnohem pomalejší běh programu v porovnání s rychlostí běhu strojového kódu nativního pro příslušný procesor. Tato nevýhoda může být zmenšena technikou just-in-time kompilace, která převádí části programu do strojového kódu před jejich prováděním.

Seznam nejrozšířenějších interpretovaných jazyků editovat

  • APL – jeden z nejstarších jazyků; vektorově orientovaný jazyk používající neobvyklou sadu symbolů pro zápis programu
  • ASP skriptovací jazyk na vytváření webových stránek
  • BASIC (původní verze, Dartmouth BASIC, byla kompilovaná, stejně jako mnoho moderních implementací)
  • ECMAScript

Jazyky obvykle kompilované do kódu virtuálního stroje editovat

Mnoho interpretovaných jazyků je nejdříve zkompilováno do tvaru kódu pro určitý virtuální stroj, který je potom buď interpretován nebo kompilován do strojového kódu.

Související články editovat

Reference editovat


V tomto článku byl použit překlad textu z článku Interpreted language na anglické Wikipedii.