Tlumočený jazyk - Interpreted language

Interpretovaný jazyk je druh programovacího jazyka , u nichž je interpret , který běží přes virtuální stroj. Tlumočník provede kód po řádku a převede jej do nízkoúrovňového strojového jazyka. Protože interpretovaný jazyk běží přes virtuální prostředí, jsou tyto jazyky považovány za nezávislé na platformě.

Termíny interpretovaný jazyk a kompilovaný jazyk nejsou dobře definovány, protože teoreticky lze libovolný programovací jazyk interpretovat nebo kompilovat. V moderní implementaci programovacího jazyka je stále populárnější, aby platforma poskytovala obě možnosti.

Interpretované jazyky lze také porovnat se strojovými jazyky. Funkčně provedení i interpretace znamenají totéž - načtení další instrukce / příkazu z programu a jeho provedení. Přestože interpretovaný bajtový kód je navíc identický se strojovým kódem ve formě a má reprezentaci asembleru , termín „interpretovaný“ je někdy vyhrazen pro jazyky „zpracované softwarem“ (pomocí virtuálního stroje nebo emulátoru ) nad nativním (tj. Hardwarovým ) procesorem.

V zásadě mohou být programy v mnoha jazycích kompilovány nebo interpretovány, emulovány nebo prováděny nativně, takže toto označení se používá pouze na základě běžné implementační praxe, místo aby představovalo základní vlastnost jazyka.

Mnoho jazyků bylo implementováno pomocí překladačů i překladačů, včetně BASIC , C , Lisp a Pascal . Java a C # jsou kompilovány do bytecode , což je jazyk interpretovatelný pro virtuální stroje . Implementace Lisp mohou volně kombinovat interpretovaný a kompilovaný kód.

Rozdíl mezi překladačem a tlumočníkem není vždy dobře definován a mnoho jazykových procesorů kombinuje obojí.

Historické pozadí

V počátcích práce na počítači byl jazykový design silně ovlivněn rozhodnutím použít kompilaci nebo tlumočení jako způsob provedení. Například Smalltalk (1980), který byl navržen tak, aby byl interpretován za běhu, umožňuje generickým objektům vzájemně dynamicky interagovat.

Zpočátku byly tlumočené jazyky kompilovány řádek po řádku; to znamená, že každý řádek byl zkompilován tak, jak se chystal provést, a pokud by smyčka nebo podprogram způsobily, že některé řádky byly provedeny vícekrát, byly by pokaždé znovu zkompilovány. To se stalo mnohem méně časté. Většina takzvaných interpretovaných jazyků používá mezilehlou reprezentaci , která kombinuje kompilaci a tlumočení.

Mezi příklady patří:

Mezilehlá reprezentace může být kompilována jednou provždy (jako v Javě ), pokaždé před spuštěním (jako v Ruby ) nebo pokaždé, když je detekována změna zdroje před provedením (jako v Pythonu ).

Výhody

Interpretace jazyka dává implementacím určitou flexibilitu oproti kompilovaným implementacím. Mezi funkce, které je často snazší implementovat do tlumočníků než do překladačů, patří:

Dále lze číst a kopírovat zdrojový kód, což uživatelům poskytuje větší svobodu.

Nevýhody

Nevýhody tlumočených jazyků jsou:

  • Bez statické kontroly typu , kterou obvykle provádí kompilátor, mohou být programy méně spolehlivé, protože kontrola typu eliminuje třídu programovacích chyb (ačkoli kontrolu typu kódu lze provést pomocí dalších samostatných nástrojů. Viz TypeScript například)
  • Tlumočníci mohou být citliví na útoky vložením kódu .
  • Pomalejší provádění ve srovnání s přímým spuštěním nativního strojového kódu na hostitelském CPU . Technika používaná ke zlepšení výkonu je kompilace just-in-time, která převádí často prováděné sekvence interpretované instrukce na hostitelský strojový kód. JIT se nejčastěji kombinuje s kompilací do bajtového kódu jako v Javě .
  • Zdrojový kód lze číst a kopírovat (např. JavaScript na webových stránkách) nebo snadněji zpětně analyzovat pomocí odrazu v aplikacích, kde má duševní vlastnictví komerční výhodu. V některých případech se jako částečná obrana proti tomu používá zmatek .

Lakmusové testy

K určení, zda je určitý jazyk pravděpodobně nazýván kompilovaným nebo interpretovaným jeho uživateli, lze použít několik kritérií:

  • Pokud je možné vyvolat podprogram před místem, kde je definován ve zdrojovém kódu, je pravděpodobné, že celý zdroj bude před provedením kompilován do prostřední reprezentace. Příklady: Perl , Java
  • Pokud se zprostředkující reprezentace (např. Bytecode) obvykle vytváří a vyvolává přímo jako samostatný krok při provádění kódu, je pravděpodobné, že bude jazyk považován za kompilovaný. Příklady: Java , C
  • Pokud syntaktická chyba ve zdrojovém kódu nezabrání provedení předchozích příkazů, je to pravděpodobně interpretované paradigma. Příklady: Unixové jazyky prostředí

Nejsou definitivní. Zkompilované jazyky mohou mít vlastnosti podobné tlumočníkovi a naopak.

Seznam často používaných interpretovaných jazyků

Jazyky obvykle kompilované do bytecode

Mnoho jazyků je nejprve zkompilováno do bytecode . Někdy může být bytecode také kompilován do nativního binárního souboru pomocí kompilátoru AOT nebo spuštěn nativně hardwarovým procesorem.

Viz také

Citace

  1. ^ „Archiv CodePlex“ . Archiv CodePlex . Vyvolány 7 April je 2018 .

Reference

  • Brown, PJ (1979). Psaní interaktivních překladačů a tlumočníků . John Wiley. ISBN   0-471-27609-X .