VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu CZ.1.07/1.5.00/34.1076 Název projektu Pro vzdělanější Šluknovsko Číslo a název šablony 32 Inovace a zkvalitnění výuky prostřednictvím ICT Autor 0207 Mgr. Bc. Jan Škoda Tematická oblast Programování Číslo a název materiálu VY_32_INOVACE_0207_0107 Překladač (kompilátor) Anotace Žák si upevní učivo o překladačích Vytvořeno 14. 7. 2013 Určeno pro 3. ročník oboru Informační technologie Přílohy Bez příloh
Metodický list Učitel: Výklad s projekcí elektronického učebního materiálu. Ukázka obecného postupu činností. Monitorování činnosti žáků. Žák: Sleduje výkladovou projekci a demonstraci učitele.
Překladač (kompilátor)
Překladač V nejčastějším smyslu slova softwarový nástroj. Používá se programátory pro vývoj softwaru. Kompilátor slouží pro překlad algoritmů zapsaných ve vyšším programovacím jazyce do jazyka strojového, či spíše do strojového kódu.
Historie Prvním programem, který by bylo možno označit jako kompilátor, byl A-0 System, který v roce 1952 vytvořila Grace Hopperová pro počítač UNIVAC I. První kompletní překladač byl vyvinut v roce 1957 ve společnosti IBM a byl pro jazyk Fortran. V roce 1960 měl jazyk COBOL první překladač pro více architektur, což zvýšilo jeho přenositelnost.
Historie Tyto překladače byly vytvořeny v assembleru. Jazyky, které umožňují napsat překladač, který přeloží sám sebe, se označují jako self-hosting ( samonosné ) a prvním takovým se stal LISP, jehož překladač byl vytvořen v roce 1962 na MIT. Ovšem použití jazyků vyšší úrovně pro psaní překladačů se stalo běžné až po roce 1970, kdy byly překladače C a Pascalu vytvořeny v těchto jazycích.
Vztah jazyk program překladač Strojový kód tvořící počítačový program si u běžných číslicových počítačů založených na binární logice můžeme představit jako dlouhou posloupnost nul a jedniček. V pionýrských dobách výpočetní techniky bylo třeba nejprve vytvořit algoritmus, poté jej přepsat do symbolicky zapsaného strojového kódu a tento ručně přepsat do strojového kódu.
Vztah jazyk program překladač Tato činnost je časově velmi náročná, přičemž v každé fázi tohoto procesu lze udělat mnoho chyb. Prvním zjednodušením byl tedy už předtím zmíněn assembler který umožňoval převod symbolicky zapsaného strojového kódu do jeho číselného vyjádření. Typickým příkladem kompilovaného jazyka je programovací jazyk C.
Assembler Assembler nebývá řazen mezi kompilátory, přestože by mohl být za kompilátor považován. Zdrojový kód assembleru se považuje pouze za čitelnější formu zápisu strojového kódu. Adresy jsou proměnných a návěstí označeny symbolickými názvy.
Algoritmy V počátcích výpočetní techniky zapisovány formou vývojových diagramů. Vývojové diagramy jsou vhodné pro formální popis algoritmů, avšak jejich tvorba je zdlouhavá a jejich počítačové zpracování je obtížné. Vyšší programovací jazyky umožňují efektivní a jednoznačně definovaný zápis algoritmů. Klasický postup (algoritmus nejprve zapsán v programovacím jazyce poté přeložen kompilátorem do strojového kódu) se z velké části používá dodnes.
Algoritmy Začaly se objevovat jazyky, které nejsou zaměřené na vytvoření maximálně efektivního kódu, ale na pohodlnější zápis algoritmů a zmenšení problémů při přenosu programů mezi různými architekturami počítačů. Vznikly interpretované jazyky, které nejsou kompilovány. Zdrojový kód není překládán přímo do strojového kódu, ale je přímo interpretován pomocí speciálního programu interpretu (například Smalltalk).
Interpret Počítačový program, který umožňuje přímo vykonávat (interpretovat) zápis jiného programu v jeho zdrojovém kódu ve zvoleném programovacím jazyce. Program proto není nutné převádět do strojového kódu cílového procesoru, jako je tomu v případě překladače. Interpret tak umožňuje programování kódu, který je snadno přenositelný mezi různými počítačovými platformami. Interpret je použit též pro shell, který vytváří příkazový řádek.
Fáze překladu programu Bylo by možné aby kompilátor překládal zdrojový kód přímo do spustitelného tvaru, obvyklý postup překladu bývá odlišný. Zdrojový kód programu bývá obvykle rozdělen do více jednotek, u velkých programů se může jednat o tisíce souborů se zdrojovými texty. Důvodů pro takovou fragmentaci zdrojového kódu programu je mnoho, např. snadnější údržba zdrojových kódů, možnost znovu-využívání jednotek, nižší nároky na kompilátor atp.
Struktura překladače Překladač lze navrhnout mnoha způsoby, nejčastěji bývá rozdělen na dvě části. První je závislá na vstupním jazyce (tzv. front-end) a druhá závisí na cílové architektuře (tzv. back-end). Mezi těmito částmi program existuje ve formě tzv. mezikódu (bytekódu). Rovněž je výhodné, že pokud je potřeba vyrobit překladač pro další jazyk, stačí vytvořit pouze část pro překlad do mezikódu.
Části překladače Z formálního hlediska je možné rozdělit překladač na následujících částí: lexikální analýza; syntaktická analýza; sémantická analýza; optimalizace kódu; generování cílového kódu.
Části překladače Lexikální analyzátor je první jednotka překladače, která má za úkol relativně jednoduchým způsobem získat ze vstupního zdrojového textu tzv. lexémy a ty pak zasílá syntaktickému analyzátoru. Syntaktický analyzátor se dá považovat za mozek překladače, protože provádí samotnou analýzu vstupního jazyka. Sémantický analyzátor zpracovává syntaktický strom a provádí analýzu významu jednotlivých operací.
Části překladače Překladač do mezikódu ze syntaktického stromu generuje kód, tzn. strukturovaný syntaktický strom se transformuje do lineární posloupnosti instrukcí. Optimalizátor provádí optimalizace pomocí různých transformací mezikódu, jejichž cílem je zlepšení vlastností výsledného kódu (zrychlení běhu, zmenšení velikosti kódu a podobně). Generátor kódu v poslední fázi generuje z mezikódu výstupní kód, program v cílovém jazyce. Cílovým jazykem nejčastěji bývá přímo strojový kód.
Zdroje Interpret (software). In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2013 [cit. 2013-07-14]. Dostupné z: http://cs.wikipedia.org/wiki/interpret_%28software% 29. KLAS, Přemysl. Principy moderních překladačů, virtuální stroj. In: Flashi's school page [online]. 2010 [cit. 2013-07-14]. Dostupné z: http://flashi.wz.cz/materialy/szz/31-principy%20modernich%20pre kladacu,%20virtuálni%20stroj.pdf. Kompilátor. ABCLinuxu [online]. 2010 [cit. 2013-07-14]. Dostupné z: http://www.abclinuxu.cz/slovnik/kompilator. Překladač. In: Wikipedia: the free encyclopedia [online]. San Francisco (CA): Wikimedia Foundation, 2013 [cit. 2013-07-14]. Dostupné z: http://cs.wikipedia.org/wiki/p%c5%99eklada%c4%8d. Překladač. In: Referáty-seminárky.cz [online]. 2008 [cit. 2013-07-14]. Dostupné z: http://referaty-seminarky.cz/prekladac/.