Je zřejmé, že vnímatelnost lidí a elektronického zařízení, jako je počítač, je odlišná. Lidé mohou pochopit cokoliv prostřednictvím přirozených jazyků, ale počítač ne. Počítač potřebuje překladatele, který převede jazyky psané v lidské čitelné podobě na počítačově čitelnou formu.
Překladač a tlumočník jsou typy jazykových překladatelů. Co je jazykový překladatel? Tato otázka se může objevit ve vaší mysli.
Překladač jazyků je software, který překládá programy ze zdrojového jazyka, který je v lidské čitelné formě, do ekvivalentního programu v objektovém jazyce. Zdrojový jazyk je obecně programovací jazyk na vysoké úrovni a jazyk objektu je obvykle jazyk stroje skutečného počítače.
Srovnávací graf
Základ pro srovnání | Kompilátor | Tlumočník |
---|---|---|
Vstup | To trvá celý program najednou. | Trvá najednou jeden řádek kódu nebo instrukce. |
Výstup | Generuje mezilehlý objektový kód. | Nevytváří žádný mezilehlý objektový kód. |
Pracovní mechanismus | Kompilace se provádí před provedením. | Kompilace a provedení probíhá současně. |
Rychlost | Poměrně rychlejší | Pomaleji |
Paměť | Požadavek na paměť je více způsoben vytvořením objektového kódu. | Vyžaduje méně paměti, protože nevytváří mezilehlý objektový kód. |
Chyby | Zobrazit všechny chyby po kompilaci, vše najednou. | Zobrazuje chybu každého řádku jeden po druhém. |
Detekce chyb | Obtížný | Snadnější srovnatelně |
Příslušné programovací jazyky | C, C ++, C #, Scala, strojový překladač používá kompilátor. | Java, PHP, Perl, Python, Ruby používá tlumočníka. |
Definice kompilátoru
Kompilátor je program, který čte program napsaný v jazyce na vysoké úrovni a převádí jej na stroj nebo na nízkoúrovňový jazyk a hlásí chyby přítomné v programu. Převádí celý zdrojový kód najednou, nebo může tak učinit více průchodů, ale nakonec uživatel získá zkompilovaný kód, který je připraven ke spuštění.
Kompilátor pracuje na fázích; různé etapy lze rozdělit do dvou částí, kterými jsou:
- Analýza Fáze kompilátoru je také označována jako frontend, ve kterém je program rozdělen do základních částí a kontroluje gramatiku, sémantiku a syntaxi kódu, po kterém je generován mezilehlý kód. Fáze analýzy zahrnuje lexikální analyzátor, sémantický analyzátor a analyzátor syntaxe.
- Synthesis fáze kompilátoru je také znám jako zadní konec, ve kterém je optimalizován mezilehlý kód a generován cílový kód. Fáze syntézy zahrnuje optimalizátor kódu a generátor kódu.
Fáze kompilátoru
Nyní pojďme podrobně pochopit fungování každé etapy.
- Lexical Analyzer : Skenuje kód jako proud znaků, seskupuje posloupnost znaků do lexemes a vydává posloupnost tokenů s odkazem na programovací jazyk.
- Analyzátor syntaxe : V této fázi se tokeny, které jsou generovány v předchozí fázi, kontrolují podle gramatiky programovacího jazyka, zda jsou výrazy syntakticky správné nebo ne. To dělá parse stromy pro dělání tak.
- Sémantický analyzátor : Ověří, zda výrazy a příkazy generované v předchozí fázi dodržují pravidla programovacího jazyka nebo ne a vytvářejí anotované stromy analýzy.
- Generátor mezilehlého kódu : Generuje ekvivalentní mezilehlý kód zdrojového kódu. Existuje mnoho reprezentací mezilehlého kódu, ale TAC (Three Address Code) je nejpoužívanější.
- Optimalizátor kódu : Zlepšuje časové a prostorové nároky programu. K tomu eliminuje nadbytečný kód přítomný v programu.
- Generátor kódu : Toto je poslední fáze kompilátoru, ve které je generován cílový kód pro konkrétní stroj. Provádí operace, jako je správa paměti, přiřazení registrů a optimalizace specifická pro stroj.
Tabulka symbolů je poněkud datová struktura, která spravuje identifikátory spolu s příslušným typem dat, která ukládá. Popisovač chyb zjistí, nahlásí, opraví chyby vyskytující se mezi různými fázemi kompilátoru.
Definice tlumočníka
Tlumočník je alternativou implementace programovacího jazyka a dělá stejnou práci jako překladač. Tlumočník provádí lexing, parsování a kontrolu typu podobné kompilátoru. Interpret však zpracovává strom syntaxe přímo pro přístup k výrazům a spuštění příkazu spíše než generování kódu ze stromu syntaxe.
Interpret může vyžadovat zpracování stejného stromu syntaxe více než jednou, což je důvod, proč je interpretace poměrně pomalejší než provádění kompilovaného programu.
Kompilace a interpretace pravděpodobně kombinují implementaci programovacího jazyka. Ve kterém kompilátor generuje kód střední úrovně, pak je kód interpretován spíše než kompilován do strojového kódu.
Využívání tlumočníka je výhodné během vývoje programu, kde nejdůležitější částí je rychle otestovat modifikaci programu spíše než efektivně spustit program.
Klíčové rozdíly mezi překladačem a interpretem
Podívejme se na hlavní rozdíly mezi překladačem a překladačem.
- Kompilátor bere program jako celek a překládá jej, ale překladatel překládá prohlášení programu podle prohlášení.
- V případě kompilátoru je generován mezilehlý kód nebo cílový kód. Jako proti interpretu nevytváří mezilehlý kód.
- Kompilátor je poměrně rychlejší než Interpreter, protože překladač vezme celý program najednou, zatímco tlumočníci sestavují každý řádek kódu za druhým.
- Kompilátor vyžaduje více paměti než interpret, protože generuje kód objektu.
- Kompilátor prezentuje všechny chyby souběžně a je obtížné detekovat chyby v kontrastních interpretačních chybách jednotlivých příkazů po jednom a je snazší odhalit chyby.
- V kompilátoru, když dojde k chybě v programu, zastaví překlad a po odstranění chyby se celý program přeloží znovu. Naopak, když dojde k chybě v tlumočníku, zabrání se jejímu překladu a po odstranění chyby se pokračuje v překladu.
- V kompilátoru proces vyžaduje dva kroky, ve kterých je nejprve zdrojový kód přeložen do cílového programu a poté proveden. Zatímco v tlumočníku Je to jeden krok procesu, ve kterém je zdrojový kód zkompilován a proveden současně.
- Kompilátor je používán v programovacích jazycích jako C, C ++, C #, Scala atd. Na druhé straně je tlumočník používán v jazycích jako Java, PHP, Ruby, Python, atd.
Závěr
Kompilátor a tlumočník jsou určeny k provedení stejné práce, ale liší se v operačním postupu, kompilátor bere zdrojový kód agregovaným způsobem, zatímco Interpreter má základní součásti zdrojového kódu, tj. Prohlášení podle výpisu.
Ačkoli překladač i tlumočník mají určité výhody a nevýhody, jako jsou interpretované jazyky považovány za multiplatformní, tj. Kód je přenosný. Také nepotřebuje kompilovat instrukce dříve než kompilátor, který šetří čas. Kompilované jazyky jsou rychlejší, pokud jde o proces kompilace.