Základy a implementace programovacích jazyků
6 kreditů
Magisterské
Česky
Karel Šafr
DOPLNIT !!!
Studijní okruhy
Úvod do programovacích jazyků a první C++ projektCo je programovací jazyk, co je zdrojový kód, co je interpreter, kompilátor a proč počítač nerozumí programu přímo. Studenti si založí C++ projekt, naučí se ho zkompilovat a spustit. Zároveň si zvolí pracovní název svého budoucího jazyka.
Text programu jako vstup: čtení souboru a práce se znakyStudenti se naučí načíst zdrojový soubor svého jazyka do C++ programu. Pochopí, že program je nejdříve obyčejný text, který je potřeba zpracovat. Procvičí si práci se stringy, znaky, soubory a argumenty příkazové řádky.
Tokeny a lexer: rozdělení programu na významové částiStudenti vytvoří první část vlastního jazyka — lexer. Ten bude převádět text programu na tokeny, například čísla, názvy proměnných, klíčová slova, operátory a závorky. Na tomto bloku pochopí rozdíl mezi obyčejným textem a strukturou programu.
Výrazy a matematické operaceStudenti přidají podporu pro jednoduché výrazy, například 1 + 2, x * 5 nebo (3 + 4) * 2. Naučí se, proč mají operátory prioritu a jak jazyk rozhoduje, co se má vyhodnotit jako první.
Parser a abstraktní syntaktický stromStudenti se seznámí s parserem a s pojmem AST — abstraktní syntaktický strom. Naučí se, že program není jen seznam slov, ale stromová struktura, kterou lze vyhodnocovat. V C++ začnou vytvářet reprezentaci výrazů a příkazů pomocí struktur nebo tříd.
Proměnné a paměť programuDo vlastního jazyka přibude syntaxe pro proměnné, například let x = 10. Studenti pochopí, jak jazyk ukládá hodnoty pod jmény, jak funguje přiřazení a jak se proměnná později znovu použije ve výrazu.
Datové typy a hodnotyStudenti přidají základní datové typy: čísla, textové řetězce a logické hodnoty true / false. Naučí se, co je hodnota, co je typ, jak vzniká typová chyba a proč některé operace dávají smysl jen pro určité typy.
Podmínky: if, else a rozhodování programuJazyk se rozšíří o podmínky. Studenti implementují konstrukci podobnou if, else a end. Na tomto bloku pochopí řízení toku programu, pravdivostní hodnoty a větvení programu podle výsledku výrazu.
Cykly: opakování pomocí while a forStudenti do jazyka přidají opakování. Nejprve jednodušší while cyklus a poté základní for cyklus například ve stylu for i in range(0, 10). Pochopí princip opakovaného vyhodnocování části programu, práci s počítadlem a riziko nekonečných cyklů.
Funkce, parametry a návratové hodnotyJazyk získá možnost definovat vlastní funkce. Studenti implementují zápis typu fun add(a, b) do ... return ... end. Naučí se, co je parametr, argument, návratová hodnota, volání funkce a jak se při volání vytvoří nové prostředí pro výpočet.
Scope, lokální proměnné a chybové hláškyStudenti pochopí rozdíl mezi globálními a lokálními proměnnými. Naučí se, proč proměnná existuje jen v určité části programu a jak jazyk hledá hodnoty v různých úrovních prostředí. Zároveň vylepší chybové hlášky, aby jazyk dokázal srozumitelně říct, kde a proč program selhal.
Dokončení vlastního jazyka, kompilace a prezentaceV závěrečném bloku studenti dokončí svůj vlastní jazyk. Každý si zvolí jeho název, příponu souborů, klíčová slova a malé vlastní rozšíření. Výsledkem bude zkompilovaný C++ program, který umí spouštět soubory napsané ve studentově vlastním jazyce. Kurz bude ukončen krátkou prezentací a ukázkou funkčního programu ve vlastním jazyce.