Plan Szkolenia

Wprowadzenie do Lua

  • Krótka historia
  • Cele, cechy i niecele Lua
  • Zasoby dokumentacji i tutoriali Lua
  • Instalacja interpretera Lua
  • Konfiguracja i używanie LuaRocks

Podstawowa składnia i semantyka

  • Identyfikatory
  • Komentarze, blokowe komentarze
  • Zmienne globalne i wymuszanie ścisłości
  • Zmienne lokalne
  • Programy samodzielne, argumenty programu
  • Jednostki kompilacji, chunk, wyrażenia, średniki

Typy danych i struktury danych

  • Podstawowe typy: nil, boolean, number, string
  • Typy obiektowe: function, userdata, thread, table
  • Referencje/obiekty a wartości podstawowe
  • Znaczenie tabel w Lua

Wprowadzenie do tabel i ich wszechstronność

  • Tabele jako tablice asocjacyjne
  • Tabele jako tablice numeryczne, sekwencje

Podstawowe struktury sterowania

  • Konstrukcja if then elseif else end
  • Pętla while
  • Pętla repeat
  • Prosta pętla for

Obsługa błędów

  • Wartości zwracane a wyjątki
  • Konwersja wartości zwracanej na wyjątek
  • Konwersja wyjątku na wartość zwracaną
  • Poziomy błędów

Przykładowe programy

  • Obliczanie wielomianów
  • Przeszukiwanie wszerz (BFS)
  • Dodatkowe ćwiczenia

Więcej o funkcjach

  • Argumenty nazwane
  • Wywołania obiektowe
  • Domknięcia
  • Currying
  • Wywołania ogonowe
  • Wielokrotne przypisanie i zwracanie
  • Varargs

Iteratory i korutyny

  • Pętla for generyczna
  • Iteratory bezstanowe a stanowe
  • Różnice między iteratorami a korutynami

Metatablice i metametody

  • Przykład zbioru
  • Metametoda __tostring
  • Metametody arytmetyczne
  • Metametody __index, __newindex
  • Metametoda __len

Moduły i pakiety

  • Używanie modułów
  • Tworzenie modułów
  • Organizacja modułów w pakiety

Zaawansowane tabele

  • Tabele jako kolejki i stosy
  • Tabele opisujące grafy
  • Macierze jako tabele
  • Listy powiązane jako tabele
  • Bufory łańcuchowe

Metatablice na przykładach

  • Proxy
  • Readonly
  • Memoizacja
  • Programowanie dynamiczne z memoizacją
  • Przykład Fibonacciego

Środowiska

  • Związek między zmiennymi globalnymi a środowiskami
  • Zmienne wolne
  • Tabele _ENV i _G

Więcej o modułach

  • Różne podejścia do tworzenia modułów
  • Moduły zmieniające zachowanie
  • Inicjalizacja modułów i argumenty
  • Używanie środowisk do implementacji bezpiecznych modułów

Zaawansowane iteratory i korutyny

  • Producent, konsument, filtr
  • Opakowywanie korutyn w iteratory
  • Iterator bezstanowy dla list powiązanych

Wkład w ekosystem

  • Przesyłanie pakietów do MoonRocks

Paradygmat funkcyjny w Lua

  • Funkcja map
  • Funkcja reduce / fold

Programowanie obiektowe

  • Różne podejścia do OOP
  • Różne podejścia do dziedziczenia
  • Przykłady

Przegląd standardowych bibliotek Lua

Kompilacja

  • Kompilacja
  • Eval
  • Związek ze środowiskiem
  • Chunki binarne

Zarządzanie pamięcią

  • Słabe tabele
  • Finalizatory, metametoda __gc

Bajtkod Lua i maszyna wirtualna

  • Generowanie bajtkodu z kodu źródłowego
  • Czytanie i analiza bajtkodu
  • Szybki przegląd kodu źródłowego maszyny wirtualnej Lua

Moduły C

  • Wywołanie C z Lua
  • Ścieżka wyszukiwania i ładowanie modułów C

Wywołanie Lua z C

  • Stos
  • Obsługa błędów
  • Kontynuacje

Obsługa wartości i typów Lua z C

  • Tablice
  • Łańcuchy znaków
  • Userdata
  • Metatablice
  • Wywołania obiektowe
  • Lekkie userdata

Zarządzanie pamięcią

  • Alokatory
  • API GC

Wątki w Lua

  • Korutyny a wątki
  • Prawdziwe wielowątkowość i stany Lua

Wymagania

Znajomość przynajmniej jednego innego języka programowania. Doświadczenie w programowaniu. Opcjonalnie, jeśli masz doświadczenie z innymi językami skryptowymi, ułatwi to zrozumienie Lua.

 21 godzin

Liczba uczestników


Cena za uczestnika (netto)

Propozycje terminów

Powiązane Kategorie