Implementace programovacího jazyka - Programming language implementation

Implementace programovací jazyk je systém pro provádění počítačových programů . Existují dva obecné přístupy k implementaci programovacího jazyka: interpretace a kompilace .

Interpretace je způsob provádění programu. Program je načten jako vstup tlumočníkem , který provádí akce zapsané v programu.

Kompilace je jiný proces, kdy kompilátor čte v programu, ale namísto spuštění programu jej kompilátor přeloží do jiného jazyka, jako je bytecode nebo strojový kód . Přeložený kód může být buď přímo spuštěn hardwarem, nebo může sloužit jako vstup pro jiný tlumočník nebo jiný kompilátor.

Tlumočník

Interpret se skládá ze dvou částí: parser a hodnotitele . Poté, co je program načten jako vstup tlumočníkem, je zpracován analyzátorem. Analyzátor rozdělí program na jazykové komponenty a vytvoří strom analýzy . Vyhodnocovač poté použije strom analýzy k provedení programu.

Virtuální stroj

Virtuální stroj je speciální typ tlumočníka, který interpretuje bytekódu. Bytecode je přenosný nízkoúrovňový kód podobný strojovému kódu, i když se obecně spouští na virtuálním počítači místo na fyzickém počítači. Aby se zlepšila jejich efektivita, mnoho programovacích jazyků, jako je Java , Python a C#, se před interpretací kompiluje do bytecode.

Kompilátor just-in-time

Některé virtuální počítače obsahují kompilátor JIT (just-in-time), aby se zlepšila účinnost provádění bytecode. Během provádění bajtového kódu virtuálním počítačem, pokud kompilátor JIT určí, že část bajtového kódu bude použita opakovaně, zkomplikuje tuto konkrétní část do strojového kódu. Kompilátor JIT pak uloží strojový kód do paměti , aby jej mohl používat virtuální počítač. Kompilátory JIT se snaží najít rovnováhu mezi delší dobou kompilace a rychlejší dobou provádění.

Překladač

Překladač překládá program napsaný v jednoho jazyka do jiného jazyka. Většina kompilátorů je organizována do tří fází: frontend , optimalizátor a back end . Front end je zodpovědný za pochopení programu. Zajišťuje, že je program platný, a transformuje jej na přechodnou reprezentaci , datovou strukturu, kterou kompilátor používá k reprezentaci programu. Optimalizátor vylepšuje přechodnou reprezentaci, aby zvýšil rychlost nebo zmenšil velikost spustitelného souboru, který je nakonec vytvořen překladačem. Back -end převádí optimalizovanou přechodnou reprezentaci do výstupního jazyka kompilátoru.

Pokud kompilátor daného jazyka vysoké úrovně produkuje další jazyk vysoké úrovně, nazývá se to transpiler . Transpilery lze použít k rozšíření stávajících jazyků nebo ke zjednodušení vývoje kompilátoru využitím přenosných a dobře optimalizovaných implementací jiných jazyků (například C ).

Je možné mnoho kombinací interpretace a kompilace a mnoho moderních implementací programovacího jazyka obsahuje prvky obou. Například programovací jazyk Smalltalk je konvenčně implementován kompilací do bytecode , který je pak interpretován nebo kompilován virtuálním strojem . Jelikož bytecode Smalltalk běží na virtuálním počítači, je přenosný na různých hardwarových platformách.

Více implementací

Programovací jazyky mohou mít více implementací. Různé implementace mohou být napsány v různých jazycích a mohou používat různé metody ke kompilaci nebo interpretaci kódu. Mezi implementace Pythonu patří například:

Reference

externí odkazy