Kompilátor (programovanie): Rozdiel medzi revíziami

z Wikipédie, slobodnej encyklopédie
Smazaný obsah Přidaný obsah
Bez shrnutí editace
Kizivat (diskusia | príspevky)
upresnenie niektorých informácií
Značka: editor wikitextu 2017
Riadok 1: Riadok 1:
[[Obrázok:Ideal compiler.png|right|thumb|Ideálny kompilátor (po anglicky)]]
[[Obrázok:Ideal compiler.png|right|thumb|Ideálny kompilátor (po anglicky)]]


'''Kompilátor''' alebo '''kompilujúci program''' alebo '''prekladač''' je [[Program (počítačový)|program]], ktorý dokáže preložiť [[zdrojový kód]] napísaný v niektorom programovacom jazyku do iného programovacieho jazyka, najčastejšie do [[strojový kód|strojového kódu]]. Ak prekladač vykonáva preklad z vyššieho programovacieho jazyka do nižšieho, hovoríme, že ide o [[preklad nadol]]. Ak preklad prebieha z nižšieho programovacieho jazyka do vyššieho, hovoríme, že ide o [preklad nahor] a takýto prekladač voláme [[dekompilátor]] alebo opačný kompilátor. Ak je zdrojový a cieľový jazyk približne rovnako mohutný, takýto prekladač nazývame [[predkompilátor]] alebo kompilátor 1:1. AK je cieľom prekladu získanie optimálneho kódu, takémuto prekladaču hovoríme [[optimalizačný kompilátor]].
'''Kompilátor''' alebo '''kompilujúci program''' (anglicky: ''compiler'') je [[Program (počítačový)|počítačový program]], ktorý dokáže preložiť [[zdrojový kód]] napísaný v jednom [[Programovací jazyk|programovacom jazyku]] (tzv. zdrojovom jazyku) do iného programovacieho jazyka (tzv. cieľového jazyka). Kompilátory sú špecifickým typom [[Prekladač (programovanie)|prekladačov]] (príkladom iného typu prekladaču je napr. [[Interpreter (programovanie)|interpreter]]). Pojem ''kompilátor'' sa najčastejšie používa pre prekladače, ktorých zdrojovým jazykom je [[Vyšší programovací jazyk|vysokoúrovňový jazyk]] a cieľovým jazykom je [[Nižší programovací jazyk|nízkoúrovňový jazyk]] (napr. [[jazyk symbolických inštrukcií]], [[objektový kód]] alebo [[strojový kód]]) za účelom vytvorenia [[Spustiteľný program|spustiteľného programu]].<ref>{{cite web| author = PC Mag Staff | date = 28 February 2017 | title = Encyclopedia: Definition of Compiler | work = PCMag.com | url=https://www.pcmag.com/encyclopedia/term/40105 | accessdate=28 February 2017}}</ref>

Existuje však mnoho rôznych typov kompilátorov. Pokiaľ zkompilovaný program môže bežať na počítači, ktorého [[CPU]] alebo [[operačný systém]] sú odlišné od počítača, na ktorom beží kompilátor, hovoríme [[Krížový kompilátor|krížovom kompilátore]]. Program, ktorý prekladá z jazyka nižšej úrovne do jazyka vyššej úrovne, sa nazýva [[dekompilátor]]. Program, ktorý prekladá medzi dvoma vysokoúrovňovými jazykmi sa zvyčajne nazýva [[transpliter]].

Kompilátor musí vykonávať dve základné činnosti: analýzu zdrojového kódu a vytváranie ekvivalentného cieľového kódu (syntéza). Cieľom analýzy je získať informácie o stavbe programu, ktoré sa počas syntézy použijú na zostavenie cieľového kódu. Analýza sa najčastejšie vykonáva na troch úrovniach: [[lexikálna analýza]], [[syntaktická analýza]] a [[Sémantická analýza (informatika)|sémantická analýza]]. Výstupom týchto procesov môže byť tzv.[[intermediárny kód]]. Analytická časť kompilátoru sa niekedy nazýva aj prednou časťou (angl.: front end). Samotné [[Generovanie kódu|generovanie cieľového kódu]] môže byť doplnené (prípadne predchádzané) [[Optimalizácia (informatika)|optimalizačnými]] operáciami.


Program preložený do strojového kódu len málokedy obsahuje všetky [[procedúry]] a [[funkcie]] potrebné na jeho spustenie. Mnohé funkcie a procedúry sa nachádzajú vo vopred preložených súboroch, ktoré nazývame [[knižnice]]. Aby bolo možné program spustiť, je potrebné prepojiť relatívne odkazy na procedúry a funkcie so skutočnými adresami. Túto činnosť vykonáva spájací program, ktorý tiež nazývame [[linker]].
Program preložený do strojového kódu len málokedy obsahuje všetky [[procedúry]] a [[funkcie]] potrebné na jeho spustenie. Mnohé funkcie a procedúry sa nachádzajú vo vopred preložených súboroch, ktoré nazývame [[knižnice]]. Aby bolo možné program spustiť, je potrebné prepojiť relatívne odkazy na procedúry a funkcie so skutočnými adresami. Túto činnosť vykonáva spájací program, ktorý tiež nazývame [[linker]].


Alternatívnym spôsobom vykonávania kódu je interpretácia zdrojového kódu v čase behu programu. Program, ktorý tento preklad zabezpečuje, sa nazýva [[Interpreter (programovanie)|interpreter]]. Existujú aj kombinované riešenia, kedy sa najprv prekladá do pomocného kódu, ktorý sa interpretuje v čase behu (napr. [[Java (programovací jazyk)|Java]]).
Alternatívnym spôsobom vykonávania kódu je interpretácia zdrojového kódu v čase behu programu. Program, ktorý tento preklad zabezpečuje, sa nazýva [[Interpreter (programovanie)|interpreter]]. Existujú aj kombinované riešenia, kedy sa najprv prekladá do pomocného kódu, ktorý sa interpretuje v čase behu (napr. [[Java (programovací jazyk)|Java]]).

Kompilátor poväčšine vykonáva niekoľko, prípadne všetky z nasledujúcich činností: lexikálna analýza, preprocesing, parsing, sémantická analýza, generovanie kódu a jeho optimalizácia.


== Pozri aj ==
== Pozri aj ==

Verzia z 02:43, 4. február 2018

Ideálny kompilátor (po anglicky)

Kompilátor alebo kompilujúci program (anglicky: compiler) je počítačový program, ktorý dokáže preložiť zdrojový kód napísaný v jednom programovacom jazyku (tzv. zdrojovom jazyku) do iného programovacieho jazyka (tzv. cieľového jazyka). Kompilátory sú špecifickým typom prekladačov (príkladom iného typu prekladaču je napr. interpreter). Pojem kompilátor sa najčastejšie používa pre prekladače, ktorých zdrojovým jazykom je vysokoúrovňový jazyk a cieľovým jazykom je nízkoúrovňový jazyk (napr. jazyk symbolických inštrukcií, objektový kód alebo strojový kód) za účelom vytvorenia spustiteľného programu.[1]

Existuje však mnoho rôznych typov kompilátorov. Pokiaľ zkompilovaný program môže bežať na počítači, ktorého CPU alebo operačný systém sú odlišné od počítača, na ktorom beží kompilátor, hovoríme krížovom kompilátore. Program, ktorý prekladá z jazyka nižšej úrovne do jazyka vyššej úrovne, sa nazýva dekompilátor. Program, ktorý prekladá medzi dvoma vysokoúrovňovými jazykmi sa zvyčajne nazýva transpliter.

Kompilátor musí vykonávať dve základné činnosti: analýzu zdrojového kódu a vytváranie ekvivalentného cieľového kódu (syntéza). Cieľom analýzy je získať informácie o stavbe programu, ktoré sa počas syntézy použijú na zostavenie cieľového kódu. Analýza sa najčastejšie vykonáva na troch úrovniach: lexikálna analýza, syntaktická analýza a sémantická analýza. Výstupom týchto procesov môže byť tzv.intermediárny kód. Analytická časť kompilátoru sa niekedy nazýva aj prednou časťou (angl.: front end). Samotné generovanie cieľového kódu môže byť doplnené (prípadne predchádzané) optimalizačnými operáciami.

Program preložený do strojového kódu len málokedy obsahuje všetky procedúry a funkcie potrebné na jeho spustenie. Mnohé funkcie a procedúry sa nachádzajú vo vopred preložených súboroch, ktoré nazývame knižnice. Aby bolo možné program spustiť, je potrebné prepojiť relatívne odkazy na procedúry a funkcie so skutočnými adresami. Túto činnosť vykonáva spájací program, ktorý tiež nazývame linker.

Alternatívnym spôsobom vykonávania kódu je interpretácia zdrojového kódu v čase behu programu. Program, ktorý tento preklad zabezpečuje, sa nazýva interpreter. Existujú aj kombinované riešenia, kedy sa najprv prekladá do pomocného kódu, ktorý sa interpretuje v čase behu (napr. Java).

Pozri aj


  1. PC Mag Staff. Encyclopedia: Definition of Compiler [online]. 28 February 2017, [cit. 2017-02-28]. Dostupné online.