Detail předmětu

Teorie programovacích jazyků

FIT-TJDAk. rok: 2023/2024

Typy programovacích jazyků: procedurální a deklarativní, rozdíly z hlediska sémantiky. Problém formální definice programovacích jazyků. Různé možnosti formální definice sémantiky programovacích jazyků. Axiomatická definice sémantiky: Floyd-Hoarova logika. Denotační definice sématiky: lambda kalkulus. Technologie překladu programovacích jazyků po syntaktické analýze. Řešení kontextovosti programovacích jazyků v syntaxí řízeném bezkontextovém překladači. Typové systémy. Generování cílového kódu. Metody přidělování registrů. Generování cílového kódu pro procesory se zřetězeným zpracováním.

U všech absolventů předmětu se očekává přehled a porozumění základům uvedených témat. Hlubší znalosti se vyžadují u tématu, které zpracovali a prezentovali v eseji. Toto téma zpravidla nějak souvisí se zaměřením disertační práce. Jeho zpracování vyžaduje nastudování knižní publikace nebo kolekce tématicky souvisejících článků z časopisů a konferencí.

Otázky k SDZ:

  1. Typy programovacích jazyků: procedurální a deklarativní, rozdíly z hlediska sémantiky.
  2. Problém formální definice programovacích jazyků. Různé možnosti formální definice sémantiky programovacích jazyků.
  3. Axiomatická definice sémantiky: Floyd-Hoarova logika.
  4. Denotační definice sématiky: lambda kalkulus.
  5. Technologie překladu programovacích jazyků po syntaktické analýze.
  6. Řešení kontextovosti programovacích jazyků v syntaxí řízeném bezkontextovém překladači.
  7. Mezijazyky mezi front a backendem překladače.
  8. Typové systémy.
  9. Generování cílového kódu. Metody přidělování registrů.
  10. Generování cílového kódu pro procesory se zřetězeným zpracováním.

Jazyk výuky

čeština

Pravidla hodnocení a ukončení předmětu

diskuze na doktorandských přednáškách, zpracování vlastní tématické práce - eseje
Pouze přednášky. V případě otevření předmětu jako řízeného studia konzultace nad zadanou literaturou.

Učební cíle

Získat znalosti zejména v oblasti zéjména sémantiky a překladu programovacích jazyků. Zaměřit se na možnost formální definice syntaxe a sémantiky programovacích jazyků.
Schopnost formálně definovat i používat definici sémantiky různých programovacích jazyků. Mít přehled o generování kódu pro moderní procesory.

Doporučená literatura

Aho, V. A. - Sethi, R. - Ullmann, J. D. : Compilers - Principles, Techniques, and Tools, Addison - Wesley Publishing Company 1987
Gordon, J., C.: Programming language Theory and its Implementation, Prentice Hall 1988
Reynolds, J.: Theories of Programming Languages, Cambridge University Press, 2009
Sethi R.: Programming Languages Concepts, Addison Wesley 1989

Zařazení předmětu ve studijních plánech

  • Program DIT doktorský 0 ročník, zimní semestr, povinně volitelný
  • Program DIT doktorský 0 ročník, zimní semestr, povinně volitelný
  • Program DIT-EN doktorský 0 ročník, zimní semestr, povinně volitelný
  • Program DIT-EN doktorský 0 ročník, zimní semestr, povinně volitelný

  • Program VTI-DR-4 doktorský

    obor DVI4 , 0 ročník, zimní semestr, volitelný

  • Program VTI-DR-4 doktorský

    obor DVI4 , 0 ročník, zimní semestr, volitelný

  • Program VTI-DR-4 doktorský

    obor DVI4 , 0 ročník, zimní semestr, volitelný

  • Program VTI-DR-4 doktorský

    obor DVI4 , 0 ročník, zimní semestr, volitelný

Typ (způsob) výuky

 

Přednáška

39 hod., nepovinná

Vyučující / Lektor

Osnova

  1. Typy programovacích jazyků: procedurální a deklarativní, rozdíly z hlediska sémantiky.
  2. Problém formální definice programovacích jazyků. Různé možnosti formální definice sémantiky programovacích jazyků.
  3. Axiomatická definice sémantiky: Floyd-Hoarova logika.
  4. Denotační definice sématiky: lambda kalkulus.
  5. Technologie překladu programovacích jazyků po syntaktické analýze.
  6. Řešení kontextovosti programovacích jazyků v syntaxí řízeném bezkontextovém překladači.
  7. Typové systémy.
  8. Generování cílového kódu. Metody přidělování registrů.
  9. Generování cílového kódu pro procesory se zřetězeným zpracováním.

Konzultace v kombinovaném studiu

26 hod., nepovinná

Vyučující / Lektor