Lua jest językiem skryptowym charakteryzującym się minimalizmem, szybkością
działania oraz prostotą osadzenia w języku C. Dzięki tym cechom jest to od
wielu już lat najpopularniejszy język skryptowy w przemyśle gier komputerowych
([wiki list](https://en.wikipedia.org/wiki/Category:Lua-scripted_video_games)).
Lua daje programiście szerokie możliwości ale niewiele narzuca: można w niej
programować zarówno imperatywnie, funkcjonalnie jak i obiektowo, a elastyczna
składnia pozwala na dostosowanie języka do własnych potrzeb.
Wykład w części będzie poświęcony samemu językowi Lua, a w części technikom
jego osadzania w C i wykorzystywania jako język skryptowy i na odwrót -
rozszerzaniem skryptów Lua o moduły będące skompilowanymi bibliotekami C.
**Program:**
1. podstawy - typy, wyrażenia, struktury kontrolne i funkcje
2. iteratory, generyczne "for", koprocedury, domknięcia
3. struktury danych, metatabele, metametody i środowisko
4. "słabe" tabele, programowanie OO i tworzenie modułów oraz biblioteka standardowa
5. API w C - stos lua, obsługa błędów, wywoływanie kodu C z Lua i Lua z C, techniki pisania funkcji
6. typy użytkownika i zaawansowane tematy wiązania
**Wymagania:** znajomość języka C, C++ lub innego języka "niskiego" poziomu w
którym można osadzać Lua
W przypadku konieczności przeprowadzanie zajęć zdalnie, wykłady będę przeprowadzone w formie interaktywnej korzystając z Discord/Google Hangouts i najprawdopodobniej nagrywane. Oddawanie pracowni oraz projektów odbywać się będzie również za pomocą ww. narzędzi, przy czym student jest zobowiązany do zaprezentowania działania programu / wyników "osobiście", za pomocą funkcji udostępniania ekranu. Ogólne zasady przedmiotu nie ulegają zmianie.