Metaprogramowanie i typy
Prowadzący: Michał Zieliński
Opis
Metaprogramming is a programming technique in which computer programs have the ability to treat programs as their data. It means that a program can be designed to read, generate, analyse or transform other programs, and even modify itself while running.
~wikipedia
Na warsztatach zajmiemy się metaprogramowaniem - programami, które piszą inne programy. Najprostszy przypadek, to programy, które po prostu generują kod źródłowy, które następnie jest kompilowany.
Będziemy przyglądać się głównie statycznie typowanym językom. Weźmiemy pod lupę C++ i jego templates. Innym wariantem metaprogramowania dostępnym w C jest preprocesor. Rozwinięciem idei preprocesora jest funkcja eval i Lispowe makra. Potem zobaczymy jak makra można zaimplementować w statycznie typowanym języku na przykładzie Nima. Jak dobrze pójdzie, zobaczymy czym się różnią funkcje generyczne w Haskellu od templates w C++.
Warsztaty będą składały się z krótkiego wykłada i rozwiązywania krótkich ćwiczeń.
Wymagania
- Posiadanie komputera na WWW
- Podstawowa znajomość C++, w tym wiedza co to jest klasa, statyczne pola
- Znajomość jakiegoś dynamicznego języka (np. Python, Ruby, Javascript, Lisp)
Przydatne rzeczy
work in progress