Jak Začít?

Máš v počítači zápisky z přednášek
nebo jiné materiály ze školy?

Nahraj je na studentino.cz a získej
4 Kč za každý materiál
a 50 Kč za registraci!




Předmět Programovací jazyky a překladače (PJP)

Na serveru studentino.cz naleznete nejrůznější studijní materiály: zápisky z přednášek nebo cvičení, vzorové testy, seminární práce, domácí úkoly a další z předmětu PJP - Programovací jazyky a překladače, Vysoká škola báňská - Technická univerzita Ostrava (VŠB-TU).

Top 10 materiálů tohoto předmětu

Materiály tohoto předmětu

Materiál Typ Datum Počet stažení

Další informace

Cíl

Studenti získají přehledové informace o vývoji programovacích jazyků, hlavních paradigmatech programování (imperativní,funkcionální, logické) a jejich typických představitelích. Dále získají teoretické znalosti i praktické dovednostiz oblasti metod překladu programovacích jazyků se zaměřením na fázi analýzy zdrojového textu a syntézy vnitřníformy programu. Budou mít praktické zkušenosti s využitím prostředků pro podporu návrhu překladačů (například JavaCC).Po absolvování předmětu budou studenti schopni efektivně implementovat analyzátory strukturovaných textových data jednoduchých jazyků a budou se orientovat v pojmech a konstrukcích, charakteristických pro současné programovacíjazyky.

Osnova

Přednášky:Úvod: Cíle a náplň předmětu, požadavky, organizace cvičení, literatura. Klasifikace programovacích jazyků. Účela základní aplikace překladačů. Zdrojový a cílový jazyk. Popis programovacích jazyků. Formální metody pro popissyntaxe a sémantiky.Historie programovacích jazyků a překladačů: Teoretická východiska. První programovací jazyky a překladače. Vyššíprogramovací jazyky. Strukturované programování. Modulární jazyky. Objektově-orientované jazyky. Skriptovací jazyky.Funkcionální a logické programovací jazyky: Deklarativní styl programování, jeho výhody a nevýhody. Základy lambdakalkulu. Praktická implementace jednoduchých úloh v programovacím jazyce Haskel. Skriptovací jazyky: Popis odlišnosti od tradičních jazyků. Základní představitele. Praktické ukázky skriptovacíchjazyků. Stručný úvod do programovacího jazyka PHP.Imperativní programovací jazyky: Základní principy. Jiná paradigmata programování.Objektově orientované programování: Shrnutí základních principů. Méně obvyklé objektově orientované programovacíjazyky. Programování založené na prototypech.Struktura a funkce překladače: Modely zdrojového kódu, transformace. Organizace překladače - fáze překladu, průchod.Jednoprůchodové a optimalizující překladače. Pomocné programy. Testování a údržba překladače. Lexikální analýza: Funkce lexikálního analyzátoru, implementace lexikálního analyzátoru. Syntaktická analýza: Účel a metody syntaktické analýzy. Analýza shora dolů a zdola nahoru. LL(1) gramatiky, výpočetmnožin FIRST a FOLLOW. Rozkladová tabulka. Implementace syntaktického analyzátoru: Analýzu rekurzivním sestupem. Nástroje pro generování překladačů (jakopříklad JavaCC)Syntaxí řízený překlad: Překladová gramatika, atributová překladová gramatika. Implementace atributového překladupři analýze shora dolů.Tabulka symbolů a struktura programu v době běhu: Základní pojmy - vazba, rozsah platnosti, viditelnost, doba života.Funkce tabulky symbolů, blokově strukturovaná tabulka symbolů. Implementace. Systém řízení běhu programu. Podprogramy- aktivace, statická a dynamická struktura, aktivační záznam. Organizace paměti, přidělování paměti pro aktivačnízáznamy, přístupové ukazatele.Poslední fáze při překladu: Generování vnitřní reprezentace programu (formáty vnitřní reprezentace - graf, zásobníkovýkód, tříadresový kód), Provádění optimalizaci (základní rozdělení optimalizací, příklady různých optimalizací),generování cílového kódu.Projekty:V předmětu budou realizovány dva projekty. První projekt bude realizace vybrané úlohy v nějakém méně známém programovacímjazyce. Druhý projekt pak bude jednoduchý překladač.Počítačové laboratoře:Řešení problémů s využitím různých paradigmat na základě intuitivního zavedení potřebných jazykových konstrukcíUkázky deklarativního stylu programování. Praktické realizace jednoduchých úloh v programovacím jazyce Haskell.Praktická realizace úloh v jazyce Haskel.Skriptovací jazyky: Praktická realizace jednoduchých úloh ve skriptovacím jazyce PHPImperativní a objektové jazyky: Ukázky netradičních programovacích jazyků a různých paradigmat pro programování.Praktická tvorba programů v nějakém netradičním jazyce, vytváření vlastních jednoduchých příkladů. Samostatná práce na prvním projektu. Možnost konzultací prvního projektu.Implementace jednoduchých filtrů a lexikálního analyzátoru.Realizace příkladů gramatik pro základní syntaktické konstrukce (opakování, opakování s oddělovačem, složitějšíkonstrukce). Převod gramatiky s regulárními výrazy na standardní tvar. Implementace algoritmů pro výpočet množin FIRST a FOLLOW.Demonstrace činnosti syntaktického analyzátoru LL(1) a LR(1). Implementace překladače rekurzivním sestupem.Implementace lexikálního a syntaktického analyzátoru s využitím programu JavaCC. Samostatná práce na druhém projektu.

Literatura

Beneš, M.: Překladače. Elektronická skripta. Aho A., Sethi R., Ullman J. D.: Compilers. Principles, Techniques, and Tools. Addison-Wesley, 1988, ISBN 0-201-10088-6 .

Požadavky

Žádné

Garant

Ing. Marek Běhálek, Ph.D.

Vyučující

Ing. Marek Běhálek, Ph.D.