Interpret (software): Porovnání verzí

Smazaný obsah Přidaný obsah
mBez shrnutí editace
m typo
Řádek 22:
Existuje celé spektrum možností mezi interpretací a kompilací, v závislosti na výši analýzy provedené před spuštěním programu. Například [[Emacs]] [[Lisp]] je kompilován do [[bytecode|bytekódu]], který je vysoce komprimovaná a optimalizovaná reprezentace zdrojového kódu v Lispu, ale není to strojový kód (a tedy není vázán na žádný konkrétní hardware). Tento „kompilovaný“ kód je pak interpretován v bytekódu interpreta (sám napsán v jazyce [[C_(programovací_jazyk)|C]]). Kompilovaný kód je v tomto případě strojový kód pro [[Virtuální_stroj|virtuální stroj]], který není realizován pro hardware, ale jako bytekód interpret. Stejný přístup se používá ve [[Forth]] kódu používaném Open Firmware systémy: zdrojový jazyk je kompilován do „F kódu“ (bytekód), který je pak interpretován virtuálním strojem.
 
== Interpret abstraktního syntaktického stromu ==
 
Mimo možnosti interpretace a kompilace, lze využít i jiný přístup a to transformace zdrojového kódu do optimálního abstraktního syntaktického stromu (Abstract Syntax Tree - AST), a následné řízení výkonu programu podle této struktury. V tomto přístupu je třeba analyzovat každou větu pouze jednou. Hlavní výhodu oproti bytekód interpretaci je, že AST udržuje globální program, strukturu a vztahy mezi instrukcemi (která se ztratila v bytekód reprezentaci), a poskytuje více kompaktní reprezentaci.
Řádek 28:
Proto byl navržen AST jako lepší průběžný formát pro Just-in-time kompilátory než bytekód. Rovněž umožňuje provádět lepší analýzu během běhu. Na [[Java_(programovací_jazyk)|Java]] interpretu založeném na AST bylo dokázáno, že je rychlejší než obdobné interprety bytekódu, díky této silnější optimalizaci dovoluje mít kompletní strukturu programu, která je k dispozici již v průběhu spuštění.
 
== Just-in-time kompilace ==
{{Viz též|JIT}}
Další možností, která využívá výhod interpretů, byte-kód interpretů a kompilací je [[JIT|just-in-time]] kompilace (nebo JIT = právě v čas), což je technika, ve které je meziprodukt reprezentace programu kompilován do nativního [[Strojový_kód|strojového kódu]] za běhu. To vyrovnává účinnost běhu nativního kódu, vzhledem k nárokům na čas spuštění a paměť, pokud je bytekód nebo AST nejprve kompilován. Adaptivní optimalizace je doplňkovou technikou, ve které interpret profiluje běžící program a sestavuje své nejčastěji kompilované části do nativního kódu. Obě techniky jsou několik desítek let staré, jsou uvedeny v jazyce, jako je [[Smalltalk]] (1980).