Anotácia
Metaprogramovanie je písanie programov, ktoré pracujú s programami ako s dátami. Tento predmet je venovaný technikám metaprogramovania a ich využitiu pri návrhu a implementácii programov. Študenti sa oboznámia s rôznymi reprezentáciami programov, s možnosťami ich analýzy a generovania. Budeme sa tiež venovať pokročilým vlastnostiam programovacích jazykov, ktoré umožňujú programom analyzovať a upravovať vlastnú štruktúru. Medzi témy predmetu patria reflexia, atribútové programovanie, makrá, generovanie kódu, aspektovo-orientované programovanie.
Z čoho sa učiť?
Snímky z prednášok nie sú študijným materiálom, ale iba pomôckou pre sledovanie prednášky. Preto nemá zmysel sa z nich učiť. Hlavnými zdrojmi pre učenie sa preto sú:
- záznamy prednášok a vlastné poznámky z nich,
- témy opísané na stránke predmetu (work in progress),
- zdroje – odporúčaná literatúra.
Zápočet
- Zadanie: 3 iterácie po 10 bodov
- Aktivita a prístup k riešeniu úloh – 10 bodov
Skúška
- Povinné čítanie – 10 bodov
- Ústna skúška – 50 bodov (2 náhodné otázky z okruhov)
Odporúčaná literatúra
- Ira R. Forman, Nate Forman: Java Reflection in Action, Manning 2004, ISBN 9781932394184
- Ján Kollár, Jaroslav Porubän, Sergej Chodarev: Modelovanie a generovanie softvérových architektúr, elfa 2012, ISBN 978-80-553-1229-3
- Martin Fowler: Domain Specific Languages, Addison-Wesley Professional 2010, ISBN: 978-0-321-71294-3
- David Thomas, Andrew Hunt: The Pragmatic Programmer, 20th Anniversary Edition. Person, 2020, ISBN: 978-0-13-595705-9
- Ramnivas Laddad. AspectJ in Action, Second Edition, Manning 2009, ISBN 9781933988054
- Harold Abelson, Gerald Jay Sussman, Julie Sussman: Structure and Interpretation of Computer Programs. MIT Press, 1996
- Luciano Ramalho: Fluent Python. O'Reilly Media, 2015. ISBN: 9781491946008