Plan Szkolenia

Wprowadzenie do Lua

  • Trochę historii
  • Cele, cechy i cele inne niż cele Lua.
  • Zasoby Lua dokumentacji i tutoriali
  • Instalowanie interpretera Lua.
  • Konfigurowanie i używanie LuaRocks

Podstawowa składnia i semantyka

  • Identyfikatory
  • Komentarze, blokowanie komentarzy
  • Zmienne globalne i egzekwowanie rygorystyczności
  • Zmienne lokalne
  • Programy samodzielne, argumenty programu
  • Jednostki kompilacji, fragmenty, wyrażenia, średniki

Typy danych i struktury danych

  • Podstawowe typy: nil, boolean, number, string
  • Typy obiektów: funkcja, dane użytkownika, wątek, tabela
  • Referencje/obiekty a wartości podstawowe
  • Znaczenie tabel w Lua

Wprowadzenie do tabel i ich wszechstronności

  • Tabele jako tablica asocjacyjna
  • Tabele jako tablice numeryczne, ciągi

Podstawowe struktury sterujące

  • Jeśli to elseif else się kończy
  • Pętla while
  • Pętla powtórzeń
  • Prosta pętla for

Obsługa błędów

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

Przykładowe programy

  • Ocena wielomianu
  • Przeszukiwanie wszerz
  • Dodatkowe ćwiczenia

Więcej o funkcjach

  • Nazwane argumenty
  • Wywołania obiektowe
  • Domknięcia
  • Curry
  • Ogon wzywa
  • Wielokrotne przypisanie i powrót
  • Varargs

Iteratory i współprogramy

  • Ogólna pętla for
  • Iteratory bezstanowe i stanowe
  • Różnice pomiędzy iteratorami i współprogramami

Metatabele i metametody

  • Ustawiony przykład
  • Metametoda __tostring
  • Metametody arytmetyczne
  • Metametody __index, __newindex
  • Metametoda __len

Moduły i pakiety

  • Korzystanie z modułów
  • Tworzenie modułów
  • Organizowanie modułów w pakiety

Zaawansowane tabele

  • Tabele kolejek i stosów
  • Tabele opisujące wykresy
  • Macierze jako tablice
  • Połączone listy jako tabele
  • Bufory ciągów

Metatabele na przykładach

  • Serwery proxy
  • Tylko czytać
  • Zapamiętywanie
  • Programowanie dynamiczne z zapamiętywaniem
  • Przykład Fibonacciego

Środowiska

  • Związek pomiędzy zmiennymi globalnymi a środowiskami
  • Dowolne zmienne
  • Tabela _ENV i tabela _G

Więcej o modułach

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

Zaawansowane iteratory i współprogramy

  • Producent, konsument, filtr
  • Zawijanie współprogramów w celu uzyskania iteratorów
  • Iterator bezstanowy dla list połączonych

Wkład w ekosystem

  • Przesyłanie pakietów do MoonRocks

Paradygmat funkcjonalny w Lua

  • Funkcja mapy
  • Funkcja zmniejszania/składania

Zorientowany obiektowo Programming

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

Opis przejścia Lua bibliotek standardowych

Kompilacja

  • Kompilacja
  • Ewaluacja
  • Relacja z otoczeniem
  • Kawałki binarne

Zbieranie śmieci

  • Słabe tabele
  • Finalizatory, metametoda __gc

Lua kod bajtowy i maszyna wirtualna

  • Generowanie kodu bajtowego z kodu źródłowego
  • Odczytywanie i analizowanie kodu bajtowego
  • Szybki przegląd kodu źródłowego Lua maszyny wirtualnej

moduły C

  • Dzwonię do C z Lua
  • Search ścieżka i ładowanie modułów C

Dzwonię do Lua z C

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

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

  • Tablice
  • Smyczki
  • Dane użytkownika
  • Metatabele
  • Wywołania obiektowe
  • Lekkie dane użytkownika

Zarządzanie pamięcią

  • Alokatory
  • API GC

Wątki w Lua

  • Współprogramy vs wątki
  • Prawdziwa wielowątkowość i stany Lua.

Wymagania

Znajomość co najmniej jednego innego języka programowania. Programming doświadczenie. Opcjonalnie, jeśli znasz inne języki skryptowe, ułatwi ci to zrozumienie Lua.

 21 godzin

Liczba uczestników


cena netto za uczestnika

Propozycje terminów