460-2018/03 – Programovací jazyky a překladače (PJP)

Garantující katedraKatedra informatikyKredity4
Garant předmětuIng. Marek Běhálek, Ph.D.Garant verze předmětuIng. Marek Běhálek, Ph.D.
Úroveň studiapregraduální nebo graduálníPovinnostpovinný
Ročník3Semestrletní
Jazyk výukyčeština
Rok zavedení2019/2020Rok zrušení
Určeno pro fakultyFEIUrčeno pro typy studiabakalářské
Výuku zajišťuje
Os. čís.JménoCvičícíPřednášející
BEH01 Ing. Marek Běhálek, Ph.D.
Rozsah výuky pro formy studia
Forma studiaZp.zak.Rozsah
prezenční Klasifikovaný zápočet 2+2
kombinovaná Klasifikovaný zápočet 14+0

Cíle předmětu vyjádřené dosaženými dovednostmi a kompetencemi

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é dovednosti z 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 dat a jednoduchých jazyků a budou se orientovat v pojmech a konstrukcích, charakteristických pro současné programovací jazyky.

Vyučovací metody

Přednášky
Cvičení (v učebně)
Projekt

Anotace

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é dovednosti z 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).

Povinná literatura:

Beneš, M.: Překladače. Elektronická skripta. Torben Mogensen: Basics of Compiler Design - zdarma dostupné online na http://www.diku.dk/hjemmesider/ansatte/torbenm/Basics/

Doporučená literatura:

Aho, A. V., Lam M.S., Sethi, R., Ullman, J. D.: Compilers. Principles, Techniques, and Tools. Addison Wesley; 2nd edition (September 10, 2006). ISBN 0321486811. Pierce B.C.: Types and Programming Languages, MIT Press, 2002, ISBN: 9780262162098.

Forma způsobu ověření studijních výsledků a další požadavky na studenta

Hodnocení se skládá ze dvou částí. Během cvičení budou studenti programovat přidělené úkoly. Výsledky těchto úkolů budou zhruba polovinou závěrečného hodnocení. Zbývající body lze získat za projekt – překladač, který bude průběžně realizován v průběhu semestru.

E-learning

Další požadavky na studenta

Na studenty nejsou kladeny žádné další požadavky. Očekává se, že studenti budou schopni psát programy v jazycích Java, C # nebo C ++. Studenti by navíc měli rozumět témat, která jsou předmětem kurzu: Úvod do teoretické informatiky.

Prerekvizity

Předmět nemá žádné prerekvizity.

Korekvizity

Předmět nemá žádné korekvizity.

Osnova předmětu

Seznam prezentací: 1. Úvod do kurzu, úvod do teorie překladačů, struktura překladače. Specifikace programovacích jazyků. 2. Lexikální analýza – konečné automaty, regulární výrazy. Implementace lexikálního analyzátoru. 3. Syntaktická analýza, analýza shora – dolů. LL (1) gramatiky, výpočet množin FIRST a FOLLOW. 4. Implementace překladače – zásobníková automat pro LL (1) jazyky. Analýza rekurzivním sestupem. Generátory překladačů - javacc. 5. Syntaktická analýza zdola - nahoru. LR (1) jazyky, nástroje: flex a Bison. 6. Interní reprezentace programu – vnitřní reprezentace programu. Generování cílového kódu. 7. Sémantická analýza, kontrola typů. 8. Struktura programu běhu - správa paměti. 9. Optimalizace kódu. 10. Pokročilá témata: operační sémantika, syntaxí řízený překlad – atributové gramatiky. Seznam cvičení (předpokládá se, že všechny cvičení budou v počítačových laboratořích) 1. Implementace jednoduchého interpretu pro matematické výrazu (pro porovnání s pokročilejšími přístupy uvedenými později). 2. Implementace lexikálního analyzátoru. 3. Implementace algoritmů pro výpočet množin First a Follow. 4. Implementace překladače pomocí rekurzivního sestupu. 5. Úvod do generátorů překladačů - javacc. První fáze projektu - bude implementována analyzátor kódu v javacc. 6. Nástroj ANTLR – návrhový vzor Visitor. 7. Druhá fáze projektu - realizace typové kontroly v projektu. 8. Úvod do generování cílového kódu pro JVM 9. Implementace generátoru cílového kódu. 10. Hodnocení projektu.

Podmínky absolvování předmětu

Kombinovaná forma (platnost od: 2019/2020 zimní semestr)
Název úlohyTyp úlohyMax. počet bodů
(akt. za podúlohy)
Min. počet bodůMax. počet pokusů
Klasifikovaný zápočet Klasifikovaný zápočet 100 (100) 51 3
        Implementace překladače Projekt 60  31
        Body za aktivitu Laboratorní práce 40  0
Rozsah povinné účasti: Účast na cvičeních je povinná a je kontrolována. S rozsahem povinné účastí seznámí studenty garant předmětu na začátku semestru.

Zobrazit historii

Podmínky absolvování předmětu a účast na cvičeních v rámci ISP: Splnění všech povinných úkolů v individuálně dohodnutých termínech.

Zobrazit historii

Výskyt ve studijních plánech

Akademický rokProgramObor/spec.Spec.ZaměřeníFormaJazyk výuky Konz. stř.RočníkZLTyp povinnosti
2024/2025 (B0613A140014) Informatika TZI P čeština Ostrava 3 povinný stu. plán
2024/2025 (B0613A140014) Informatika TZI K čeština Ostrava 3 povinný stu. plán
2023/2024 (B0613A140014) Informatika TZI K čeština Ostrava 3 povinný stu. plán
2023/2024 (B0613A140014) Informatika TZI P čeština Ostrava 3 povinný stu. plán
2022/2023 (B0613A140014) Informatika TZI K čeština Ostrava 3 povinný stu. plán
2022/2023 (B0613A140014) Informatika TZI P čeština Ostrava 3 povinný stu. plán
2022/2023 (B2647) Informační a komunikační technologie (2612R025) Informatika a výpočetní technika P čeština Ostrava 2 volitelný odborný stu. plán
2022/2023 (B2647) Informační a komunikační technologie (2612R025) Informatika a výpočetní technika K čeština Ostrava 2 volitelný odborný stu. plán
2021/2022 (B0613A140014) Informatika TZI P čeština Ostrava 3 povinný stu. plán
2021/2022 (B0613A140014) Informatika TZI K čeština Ostrava 3 povinný stu. plán
2021/2022 (B2647) Informační a komunikační technologie (2612R025) Informatika a výpočetní technika P čeština Ostrava 2 volitelný odborný stu. plán
2021/2022 (B2647) Informační a komunikační technologie (2612R025) Informatika a výpočetní technika K čeština Ostrava 2 volitelný odborný stu. plán
2020/2021 (B0613A140014) Informatika TZI K čeština Ostrava 3 povinný stu. plán
2020/2021 (B0613A140014) Informatika TZI P čeština Ostrava 3 povinný stu. plán
2019/2020 (B0613A140014) Informatika TZI P čeština Ostrava 3 povinný stu. plán
2019/2020 (B0613A140014) Informatika TZI K čeština Ostrava 3 povinný stu. plán

Výskyt ve speciálních blocích

Název blokuAkademický rokForma studiaJazyk výuky RočníkZLTyp blokuVlastník bloku

Hodnocení Výuky



2022/2023 letní
2021/2022 letní