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

Smazaný obsah Přidaný obsah
Bez shrnutí editace
Kizivat (diskusia | príspevky)
upresnenie niektorých informácií
Značka: editor wikitextu 2017
Riadok 1:
[[Obrázok:Ideal compiler.png|right|thumb|Ideálny kompilátor (po anglicky)]]
 
'''Kompilátor''' alebo '''kompilujúci program''' alebo(anglicky: '''prekladač'compiler'') je [[Program (počítačový)|počítačový program]], ktorý dokáže preložiť [[zdrojový kód]] napísaný v niektoromjednom [[Programovací jazyk|programovacom jazyku]] (tzv. zdrojovom jazyku) do iného programovacieho jazyka, najčastejšie(tzv. docieľového jazyka). Kompilátory sú špecifickým typom [[strojovýPrekladač kód(programovanie)|strojového kóduprekladačov]]. Ak(príkladom prekladačiného vykonávatypu prekladprekladaču zje vyššiehonapr. programovacieho[[Interpreter jazyka(programovanie)|interpreter]]). doPojem nižšieho,''kompilátor'' sa najčastejšie používa pre hovorímeprekladače, žektorých idezdrojovým ojazykom je [[prekladVyšší nadolprogramovací jazyk|vysokoúrovňový jazyk]]. Aka prekladcieľovým prebiehajazykom zje nižšieho[[Nižší programovaciehoprogramovací jazykajazyk|nízkoúrovňový dojazyk]] vyššieho,(napr. hovoríme[[jazyk symbolických inštrukcií]], že[[objektový idekód]] oalebo [preklad[strojový nahorkód]]) aza takýtoúčelom prekladač volámevytvorenia [[dekompilátor]]Spustiteľný alebo opačnýprogram|spustiteľného kompilátorprogramu]].<ref>{{cite Akweb| jeauthor zdrojový= aPC cieľovýMag jazykStaff približne| rovnakodate mohutný,= takýto28 prekladačFebruary nazývame2017 [[predkompilátor]]| alebotitle kompilátor= 1Encyclopedia:1. AKDefinition jeof cieľomCompiler prekladu| získaniework optimálneho= kódu,PCMag.com takémuto| prekladačuurl=https://www.pcmag.com/encyclopedia/term/40105 hovoríme| [[optimalizačnýaccessdate=28 kompilátor]].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]].
 
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 ==