Mezijazyk

Z Wikipedie, otevřené encyklopedie

Mezijazyk (anglicky intermediate language) je v informatice speciální jazyk využívaný abstraktním počítačem, jenž pomáhá v analýze počítačového programu. Termín mezijazyk je používán u překladačů pro označení mezikroku (odtud tedy mezijazyk) před generováním cílového strojového nebo objektového kódu. Mezikód je volen s ohledem na snadnější optimalizací nebo jiných transformací za účelem zlepšení jeho některých parametrů.

V lingvistice přirozených jazyků se jako mezijazyk označuje nářečí nebo idiolekt, v němž se mísí prvky dvou či více jazyků, například při osvojování druhého jazyka nebo v lokalitách, kde se dva jazyky ovlivňují a mísí.

Charakteristika[editovat | editovat zdroj]

Mezijazyk se od normálního strojového kódu liší typicky ve třech základních aspektech:

  • každá instrukce vyjadřuje právě jednu základní operaci; např. nejsou přítomny operace „shift-add“, které jsou běžné v mikroprocesorech
  • informace o řídící struktuře (anglicky control flow information) nemusí být součástí instrukční sady
  • počet dostupných registrů může být velký, dokonce nekonečný

Oblíbeným formátem pro mezijazyky je tříadresní kód.

Variací významu termínu „mezijazyk“ jsou jazyky používané jako mezijazyky některými vyššími programovacími jazyky, jejichž výstupem není objektový nebo strojový kód, ale právě pouze mezijazyk. Mezijazyk je poté zpracován vlastním překladačem, jehož výstupem je finální objektový nebo strojový kód. Mezijazyk se zde používá kvůli optimalizaci nebo získání vyšší přenositelnosti (použitím mezijazyka, pro který existují překladače pro různé procesory, architektury a operační systémy, jako např. programovací jazyk C). Jazyky, které se takto používají, spadají svou komplexností mezi vyšší programovací jazyky a nižší programovací jazyky, jako např. jazyk symbolických adres.

Jazyky[editovat | editovat zdroj]

Jazyk C[editovat | editovat zdroj]

Jazyk C je využíván jako mezijazyk mnoha programovacími jazyky, využívá ho např. Eiffel, Sather, Esterel, některé dialekty Lispu (Lush, Gambit), Haskell (Glasgow Haskell Compiler), C odnož Squeak Slang, ale i další. Některé varianty jazyka C byly navrženy tak, aby poskytly vlastnosti přenositelnosti jazyku symbolických adres, například C--, C Intermediate Language.[1] a Low Level Virtual Machine

Java Bytecode[editovat | editovat zdroj]

Java Bytecode (od Sun Microsystems) je mezijazyk vytvořený pro potřeby Java Virtual Machine do kterého se překládají zdrojové kódy v různých jazycích pro běh na platformě Java Virtual Machine. JVM pak může provést JIT kompilaci, při níž je vytvořen strojový kód, který dosahuje vyššího výkonu.

Common Intermediate Language[editovat | editovat zdroj]

Common Intermediate Language (od Microsoftu) je obdobou Java Bytecode, ale pro platformu .NET. CIL je nezávislý na hardwarové platformě.

GCC[editovat | editovat zdroj]

GNU Compiler Collection (GCC) používá vnitřně hned několik mezijazyků, aby zjednodušil přenositelnost a usnadnil křížovou kompilaci. Mezi tyto jazyky patří:

Parrot Intermediate Representation[editovat | editovat zdroj]

Zatímco je většina mezijazyků navržena pro podporu staticky typovaných jazyků, Parrot Intermediate Representation je navržen pro podporu dynamicky typovaných jazyků (původně Perl a Python).

Reference[editovat | editovat zdroj]

  1. Archivovaná kopie. manju.cs.berkeley.edu [online]. [cit. 2009-05-17]. Dostupné v archivu pořízeném dne 2008-05-09. 

Externí odkazy[editovat | editovat zdroj]

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