Programovací paradigmata
Kód | Zakončení | Kredity | Rozsah | Jazyk výuky |
---|---|---|---|---|
BIK-PPA | Z,ZK | 5 | 14KP+4KC | česky |
- Garant předmětu:
- Přednášející:
- Cvičící:
- Předmět zajišťuje:
- katedra teoretické informatiky
- Anotace:
-
Předmět se zabývá základními paradigmaty vyšších programovacích jazyků, včetně jejich základních exekučních modelů, benefitů a omezení jednotlivých přístupů. Podrobněji je probíráno funkcionální paradigma a aplikace jeho základních principů. Logické programování je představeno jako další způsob deklarativního programování. Probírané principy jsou demonstrovány na lambda kalkulu a programovacích jazycích Lisp (Racket) a Prolog. Dále je ilustrováno využití principů na moderních rozšířených programovacích jazycích, jako jsou C++ a Java.
- Požadavky:
-
Základní znalosti imperativního programování a OOP (C a C++)
- Osnova přednášek:
-
1. Vyšší programovací jazyky a jejich základní paradigmata.
2. Základní běhové prostředí pro vykonávání programů.
3. Funkcionální programování: Lambda kalkul.
4. Neformální úvod do LISPu, od lambda kalkulu k LISPu.
5. Rekurze, funkce vyšších řádů a jejich kompozice.
6. Makra.
7. Funkcionální programování v moderních programovacích jazycích.
8. [2] Efektivní interpretace funkcionálních jazyků: SECD virtuální stroj.
10. Logické programování: Prolog - úvod.
11. Unifikace, operátor řezu.
12. [2] Složitější příklady, grafové algoritmy v Prologu.
- Osnova cvičení:
-
1. Lambda kalkulus I
2. Lambda kalkulus II
3. Lambda kalkulus III
4. Lisp I
5. Lisp II
6. Lisp III
7. Prolog I
8. Prolog II
- Cíle studia:
-
Cílem předmětu je poskytnout přehled a porozumění hlavních programovacích paradigmat. Jsou vysvětleny a srovnány základníprincipy a sémantické koncepty vyšších programovacích jazyků na těchto paradigmatech založených. V oblasti objektově-orientovanéhoparadigmatu navazuje předmět na předmět Objektově-orientované programování. Do větších detailů jsou probírána funkcionální a logická(deklarativní) programovací paradigmata. Vedle vysvětlení základních principů je důraz kladen i na zvládnutí základních praktickýchpříkladů a srovnání a diskuze přínosů a nevýhod jednotlivých paradigmat a důvody pro kombinování těchto paradigmat v rámcimoderních programovacích jazyků. Dále jsou diskutovány implementační aspekty jednotlivých typů programovacích jazyků.
- Studijní materiály:
-
1. Lee K. D. : Foundations of Programming Languages. Springer, 2014. ISBN 978-3-319-13314-0.
2. Hoyte D. : Let Over Lambda. lulu.com, 2008. ISBN 978-1435712751.
3. Brammer M. : Logic Programming with Prolog (2nd Edition). Springer, 2013. ISBN 978-1-4471-5487-7.
4. Weitz E. : Common Lisp Recipes: A Problem-Solution Approach. Apress, 2016. ISBN 978-1-4842-1177-9.
- Poznámka:
-
Informace o předmětu a výukové materiály naleznete na https://courses.fit.cvut.cz/BI-PPA/
- Další informace:
- https://courses.fit.cvut.cz/BI-PPA/
- Pro tento předmět se rozvrh nepřipravuje
- Předmět je součástí následujících studijních plánů:
-
- Bc. program Informatika, pro fázi studia bez oboru, kombi., 2015 - 2020 (VO)
- Bc. obor Bezpečnost a informační technologie, kombi., 2015 - 2019 (volitelný předmět)
- Bc. obor Webové a softwarové inženýrství, zaměření Softwarové inženýrství, kombi., 2015 - 2020 (povinný předmět zaměření)
- Bc. specializace Informační bezpečnost, kombi., 2021 (VO)
- Bc. specializace Počítačové systémy a virtualizace, kombi., 2021 (VO)
- Bc. obor Bezpečnost a informační technologie, kombinovaná forma studia, 2020 (volitelný předmět)