Překladače 2. Vnitřní struktura překladače © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● činnost.

Slides:



Advertisements
Podobné prezentace
Petr Krčmář Virtualizace (především linuxová) InstallFest 2011.
Advertisements

Překladače Vnitřní struktura překladače © Milan Keršláger
Počítačové sítě 8. Využití sítí © Milan Keršlágerhttp:// Obsah: ● sdílení v sítích.
ALGORITMIZACE Mgr. Milan Pastyřík IUVENTAS, s. r. o.
Tým 32, varianta b/4/I.  Jakub Kadlubiec  Roman Pijáček  Petr Pliska  Jan Štourač  Václav Tunka (vedoucí)
Využití informačních technologií při řízení obchodního řetězce Interspar © Ing. Jan Weiser.
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: Prostředí internetu Číslo DUM: III/2/VT/2/2/27 Vzdělávací předmět: Výpočetní technika Tematická oblast:
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Úvod do Delphi - 1.hodina OB21-OP-EL-KON-DOL-M-4-006A Orbis pictus 21. století.
Číslo projektu školy CZ.1.07/1.5.00/ Číslo a název šablony klíčové aktivity III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo materiáluVY_32_INOVACE_OdP_S2_07.
Název školyZákladní škola praktická Rožnov pod Radhoštěm Číslo projektuCZ / / Číslo materiáluVY_32_INOVACE_225 AutorMgr. Romana Rybiařová.
Technologie počítačů 4. Sběrnice © Milan Keršlágerhttp:// Obsah: ● ISA, EISA, VL-BUS,
Autor:Ing. Pavel Brož Předmět/vzdělávací oblast:Informační a komunikační technologie Tematická oblast:Práce se standardním aplikačním programovým vybavením.
PAMĚTI Paměť počítače je zařízení, které slouží k ukládání programů a dat, s nimiž počítač pracuje Paměť počítače je zařízení, které slouží k ukládání.
Projekt: Škola pro život Registrační číslo: CZ.1.07/1.4.00/ Číslo DUM: VY_32_INOVACE_02-informatika 8. třída_021 Základní škola: Základní škola.
OPERAČNÍ SYSTÉMY Část 5 – souborové systémy
Software =je v informatice sada všech počítačových programů používaných v počítači, které provádějí nějakou činnost. - Software je protiklad k hardwaru,
Architektura operačních systémů
Mgr. Jiří Starý Odbor strategického rozvoje
Základy automatického řízení 1
Technické vybavení počítače - Počítač PC
Zpětná vazba v zesilovačích 2
Software počítače – opakování
Inf Počítač a lidé s handicapem
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Inf Operační systémy a jejich funkce
Výukový materiál zpracován v rámci projektu
Obrázky Ram Rom Nástupci ROM Počítačová pamět Obrázky Paměti Ram rom
Číslo v digitálním archivu školy
Programování a simulace CNC strojů I.
Financováno z ESF a státního rozpočtu ČR.
Windows – WordPad VY_32_INOVACE_32_649
Překladače 2. Vnitřní struktura překladače
Dostupné z Metodického portálu ; ISSN
Operační systémy 13. Knihovny, spustitelné soubory
UNIVERZITA PALACKÉHO V OLOMOUCI
SOFTWARE OSOBNÍHO POČÍTAČE
Operační systémy Vnitřní struktura překladače
Databáze MS ACCESS 2010.
Programovací jazyky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Jitka Vlčková. Dostupné z Metodického portálu ISSN.
Financováno z ESF a státního rozpočtu ČR.
Souběh Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Inf Vývojový diagram.
Překladače 6. Sémantická analýza
1. ročník oboru Mechanik opravář motorových vozidel
Operační systémy 13. Knihovny, spustitelné soubory
Programování (14PRG) 1. cvičení.
Informatika pro ekonomy přednáška 8
Jak postupovat při měření?
Jak přispívat do Souborného katalogu ČR
Instalace OS Linux Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Programovatelné automaty (Programmable logic controllers – PLC)
MU002 Informatika II Základy algoritmizace 1/13
Technická Evidence Zdravotnických Prostředků 1
ŠKOLA: Gymnázium, Chomutov, Mostecká 3000, příspěvková organizace
Portál PUBLIKACE jako nástroj evidence výsledků vědeckovýzkumných aktivit Situace ke konci roku 2016 Cíl na rok 2017 – z nástroje dílčích sběrů vytvořit.
Materiál byl vytvořen v rámci projektu
Remote login.
Jiří Vyskočil, Marko Genyg-Berezovskyj 2010
Projektové řízení výstavby podle PMBOK 2. Řízení rozsahu
Sada 3 Matematika MŠ, ZŠ a PrŠ Trhové Sviny
Číslo projektu Číslo materiálu název školy Autor Tematický celek
Windows – práce s okny VY_32_INOVACE_32_641
Počítačová podpora konstruování
Analýza informačního systému
Procesy – základní pojmy
Algoritmizace a datové struktury (14ASD)
Hromadné dokumenty opakující se pro kolekci osob
MU002 Informatika II Základy algoritmizace 1/13
Digitální učební materiál
Transkript prezentace:

Překladače 2. Vnitřní struktura překladače © Milan Keršlágerhttp:// Obsah: ● činnost překladače, části překladače ● fáze překladu, jednoprůchodové a víceprůchodové překladače ● chyby, vývojové prostředí (IDE), zvýrazňování syntaxe ● platforma, virtualizace, emulace ● portování, portabilita

Jak naprogramovat překladač ● z počátku „opravdoví programátoři“ ● relativně málo rozsáhlé a méně komplexní kódy ● programování v JSA vyžadovalo zkušenosti ● 1969 – strukturované programování (Dijkstra) ● snaha o zvládnutí velkých projektů ● zpřístupnění programování „laikům“ ● dělení problému na menší části → dělení práce ● rozdělení překladače na logické celky ● zjednodušení kódu, rozdělení problému, záměna

Činnost překladače ● transformace vstupu na výstup ● vstupní programovací jazyk – např. jazyk C, Pascal, Java,... ● výstupní kód – strojový kód ve formě spustitelného souboru ● při své činnosti ● informuje o průběhu překladu ● generuje chybová hlášení

Klasické zpracování ● editor ● zápis ve zdrojovém kódu v programovacím jazyce ● výsledek uložen do souboru ● překladač ● samostatný program ● čte zdrojový soubor, vytvoří spustitelný soubor ● v prehistroii (sálové počítače, cca do 70. let) ● zápis na papír, operátor přepsal, vytiskl ● kontrola, oprava, překlad, výpis chyb, odevzdání

Interaktivní překladač ● též „konverzační překladač“ ● umožňuje programátorovi přímo ● upozorňovat na chyby ● ladit program (inspekce proměnných) ● typické pro současná IDE rozhraní ● propojení překladače s editorem ● při nalezení chyby na ni umístí kurzor ● problémy s komplikovanými strukturami ● dopředné definice, rekurzivní zpracování funkcí,...

Části překladače ● přední část ● provádí analýzu (rozpitvání vstupu) ● nezávislá na cílovém systému ● závislá na použitém programovacím jazyce ● zadní část ● provádí syntézu (vytvoření výstupu) ● závislá na cílovém systému – typ CPU (x86, ARM, MIPS) – typ OS (Windows, Linux, Symbian)

Fáze překladu ● lexikální analýza ● zdrojový kód → posloupnost symbolů ● syntaktická analýza ● symboly → příkazy, proměnné, funkce apod. ● sémantická analýza ● přiřazení významu → intermediální kód ● optimalizace kódu ● zvýšení efektivity kódu ● generování cílového kódu Zadní část Přední část

Průchody překladače ● jednoprůchodové překladače ● každá fáze překladu se provede jen jednou – pro jednoduché programovací jazyky – tj. jen jednou se načte vstupní soubor pro krok překladu ● víceprůchodové překladače ● opakování určité fáze překladu ● vzniká mezikód (interní kód) – používá interní jazyk překladače ● typicky optimalizace ● jednodušší implementace určité fáze překladu ● nižší systémové nároky (aktivní jen část překladače)

Zpracování chyb ● při nalezení chyby by měl překladač: ● určit místo vzniku chyby – soubor, řádek, sloupec (→ konverzační překladač) ● sdělit typ chyby – chybějící deklarace, chybná syntaxe,... ● mohou i navrhnout opravu ● syntaxe a sémantika ztrácí vazbu na pův. kód ● nutné interně přenášet informaci o místě v kódu – typicky číslo řádku ● tím spíše u víceprůchodových překladačů

Reakce na chyby ● zastavení na prvním chybě ● typicky konverzační překladače ● pokus o zotavení ● překladač se snaží pokračovat – vynechání symbolu – načítání, dokud nenaváže na předchozí správný průběh – pokus o opravu chyby (např. doplnění symbolu) ● uživatel vidí více chyb ● problém zavlečených chyb

Chyby z hlediska uživatele ● chyby struktury programu ● při překladu (lexikální, syntaktické) – zajímavé pro studium překladačů ● běhové chyby ● zjistitelné až za běhu programu – dělení nulou (překladač může vydat varování) ● logické chyby ● formální správnost programu, ale chybné výsledky ● prakticky nelze překladačem odhalit

Vývojová prostředí ● unixové systémy: editor vim, Emacs ● „programátoři sobě“ ● vznik integrovaných prostředí (IDE) ● již v textovém prostředí (Turbo Pascal) ● komplexní vývojové systémy pro GUI – návrhář formulářů, speciální editor propojený s konverzačním překladačem, propojení s debuggerem ● vytváření struktogramů ● rozlišení začátečník a pokročilý, děti

Eclipse

Zvýrazňování syntaxe ● vizuální zvýraznění zdrojového kódu ● usnadňuje orientaci programátora ● využití překladače ● poměrně komplikované ● typicky konverzační překladače ● využití regulárních výrazů ● jednodušší, ale velmi efektivní ● není potřeba překladač ● editor typicky podporu pro více jazyků

Platforma ● souhrn vlastností hardware a software ● zajišťuje běh programů ● hardware – typ procesoru, typ a ovládání I/O zařízení ● software – abstrakce I/O pomocí jádra operačního systému – knihovny, běhové prostředí (Java) – použitý programovací jazyk, framework (vývoj + běh) ● například: – Java,.NET, Android, Symbian, Windows, Flash – IBM PC a kompatibilní, ARM (mobilní telefony), MIPS...

Emulace, virtualizace ● emulátor ● program, který simuluje činnost (jiného) počítače ● může to být i jiná platforma ● nižší výkon, protože se rozdíly řeší softwarově ● virtualizace ● program či celý systém běží odděleně od zbytku – virtualizovaný systém neví o tom, že HW sdílí s jiným ● zajišťuje jádro, nutná podpora v CPU – základní podpora (32bitový CPU Intel 386 a novější) – rozšířená podpora (x64 – Pacifica, Vanderpool) ● virtualizace nepřizpůsobených systémů

Křížová kompilace ● vytváření cílového kódu pro jinou platformu ● výměna zadní části překladače ● po překladu nelze přímo spustit ● transport na cílovou platformu ● užití emulátorů, virtuálních strojů a pod. ● praktické důvody ● pro mobily, PDA, vestavěná zařízení, herní konzole ● výrobce vydává tzv. SDK ● někdy není potřeba (např. Java)

Portování programu ● změna cílové platformy ● různé zvyklosti, jiný hardware ● psaní přenositelných programů ● již při návrhu, výběru jazyka i programování – v zásadě je převod na jinou platformu také překlad ● pravidla jsou známá, ale programátoři jsou... ● některé platformy portování usnadňují ● portabilita je dnes konkurenční výhoda – unixové systémy (Linux: PC, ARM, MIPS,...) – Windows hřeší na majoritu PC systémů

Open system ● otevřený (počítačový) systém ● 80. léta → unixové systémy – vydělení proti mainframům a minipočítačům – neplést s open source software – open system může být i komerční a s uzavřeným kódem ● umožňuje interoperabilitu – schopnost spolupráce s ostatními systémy ● usnadňuje portabilitu ● snadno zajištěno tak, že: – vše je detailně zdokumentováno – dokumentace je volně k dispozici ● manuálové stránky, zdrojový kód (program, jádro, knihovny)

Generátory překladačů ● lex, flex ● lexikální analyzátor ● yacc, bison ● syntaktický analyzátor ● self-hosting compiler ● Co bylo dřív? Vejce nebo slepice? ● bootstraping ● v čem je napsán, co zpracovává, co je výstup