|
Vyučující
|
-
Laštovičková Adéla, Mgr.
-
Holcman Jan, Mgr.
-
Balun Jiří, Mgr.
-
Krupka Michal, doc. RNDr. Ph.D.
-
Laštovička Jan, Mgr. Ph.D.
|
|
Obsah předmětu
|
Jedná se o druhou část čtyřdílného kurzu věnovaného základním programovacím paradigmatům. Obecným cílem kurzu je seznámit studenty s principy programování bez úzké vazby na konkrétní programovací jazyk. 1. Makra v Lispu: expanzní funkce, rozšíření vyhodnocovacího modelu, problémy s makry. Rekurze v makrech, čas expanze a čas běhu. 2. Mutace proměnných, mutace v datových strukturách. Seznam jako zásobník, kruhové seznamy. Generátory. 3. Pokročilá témata z funkcionálního programování 1: líné vyhodnocování a proudy, styl předávání pokračování. 4. Pokročilá témata z funkcionálního programování 2: normální a aplikativní model vyhodnocování a jejich srovnání. Beta-redukce, parciální aplikace a currying. Implementace jazyka s normálním modelem vyhodnocování. 5. Dynamické a statické typování. Atomické a složené typy, typové funkce. Parametrické typy, substituce a unifikace. Syntaktický strom. Hindleyho-Milnerův typový systém. 6. Zásobníkové výpočty: Interpret jednoduchého jazyka pro zásobníkový stroj, viditelnost a životnost vazeb, lexikální v. dynamický rozsah platnosti. Kompilátor jednoduchého jazyka pro zásobníkový stroj.
|
|
Studijní aktivity a metody výuky
|
|
Přednášení, Demonstrace
|
|
Výstupy z učení
|
Studenti se seznámí s pokročilými pojmy z paradigmat programování.
1. Znalost Rozpoznej výhody a nevýhody používání pokročilých programovacích konstruktů jakými jsou makra a kontinuace.
|
|
Předpoklady
|
KMI/PP1 Paradigmata programování 1
KMI/PP1
|
|
Hodnoticí metody a kritéria
|
Ústní zkouška, Písemná zkouška
Aktivní účast v hodině. Plnění zadaných úkolů. Složení ústní (příp. písemné) zkoušky.
|
|
Doporučená literatura
|
-
Bird R., Wadler P. (1988). Introduction to Functional Programming. Prentice Hall, Englewood Cliffs, New Jersey.
-
Felleisen M., Findler R. B., Flatt M., Krishnamurthi S. (2001). How To Design Programs: An Introduction to Computing and Programming.
-
H. Abelson, G. J. Sussman. (1996). Structure and Implemantation of Computer Programs. Cambridge.
-
Martin Henz, Tobias Wrigstad, Harold Abelson, Gerald Jay Sussman, Julie Sussman. (2022). Structure and Interpretation of Computer Programs: JavaScript Edition.
-
Springer G., Friedman D.P. (1994). Scheme and the Art of Programming.
-
Yinong Chen. (2016). Introduction to Programming Languages: Programming in C, C++ Scheme, Prolog, C# and SOA. Kendall Hunt Pub Co.
|