Návrh Školení

Úvod do Lua

    Něco z historie Cíle, funkce a jiné cíle Lua Zdroje dokumentace a výukových programů Lua Instalace interpretu Lua Nastavení a používání LuaRocks

Základní syntaxe a sémantika

    Identifikátory Komentáře, blokové komentáře Globální proměnné a vynucení přísnosti Lokální proměnné Samostatné programy, argumenty programu Kompilační jednotky, bloky, výrazy, středníky

Datové typy a datové struktury

    Základní typy: nil, boolean, number, string Typy objektů: funkce, uživatelská data, vlákno, tabulka Reference/objekty vs. základní hodnoty Význam tabulek v Lua

Úvod do tabulek a jejich všestrannosti

    Tabulky jako asociativní pole Tabulky jako číselná pole, sekvence

Základní řídicí struktury

    The if then elseif else end Smyčka while Smyčka opakování Jednoduchá smyčka for

Vypořádání se s chybou

    Návratové hodnoty vs výjimky Převod návratové hodnoty na výjimku Převedení výjimky na návratovou hodnotu Úrovně chyb

Ukázkové programy

    Vyhodnocení polynomu První vyhledávání šířky Doplňková cvičení

Více o funkcích

    Pojmenované argumenty Objektově orientovaná volání Uzavírání volání Currying Tail Vícenásobné přiřazení a návrat Varargs

Iterátory a korutiny

    Obecná smyčka for Bezstavové vs stavové iterátory Rozdíly mezi iterátory a společnými rutinami

Metatabulky a metametody

    Příklad sady Metametoda __tostring Aritmetické metametody Metametody __index, __newindex Metametoda __len

Moduly a balíčky

    Používání modulů Vytváření modulů Organizace modulů do balíčků

Pokročilé tabulky

    Tabulky pro fronty a zásobníky Tabulky popisující grafy Matice jako tabulky Propojené seznamy jako tabulky Řetězcové buffery

Metatabulky prostřednictvím příkladů

    Proxy Memoization pouze pro čtení Dynamické programování s memoization Fibonacciho příklad

Prostředí

    Vztah mezi globálními proměnnými a prostředími Volné proměnné Tabulka _ENV a tabulka _G

Více o modulech

    Různé přístupy k vytváření modulů Moduly, které mění chování Inicializace modulu a argumenty Použití prostředí k implementaci bezpečných modulů

Pokročilé iterátory a korutiny

    Producent, spotřebitel, filtr Zabalení společných rutin pro získání iterátorů Bezstavový iterátor pro propojené seznamy

Přispívání k ekosystému

    Nahrávání balíčků do MoonRocks

Funkční paradigma v Lua

    Funkce mapy Funkce zmenšení / skládání

Objektově orientovaný Programming

    Různé přístupy k OOP Různé přístupy k dědičnosti Příklady

Přehled standardních knihoven Lua

Sestavení

    Kompilace Eval Vztah s prostředím Binární bloky

Odvoz odpadků

    Slabé tabulky Finalizátory, metametoda __gc

Lua bytecode a virtuální stroj

    Generování bajtkódu ze zdrojového kódu Čtení a analýza bajtkódu Rychlá prohlídka zdrojového kódu Lua VM

C moduly

    Volání C z Lua Search cesty a načítání C modulů

Volání Lua od C

    Chyba zásobníku zpracování pokračování

Práce s hodnotami a typy Lua z C

    Pole Řetězce Metatabulky uživatelských dat Objektově orientovaná volání Light userdata

Správa paměti

    Alokátory GC API

Vlákna v Lua

    Současné rutiny vs vlákna Skutečné vícevláknové zpracování a stavy Lua

Požadavky

Znalost alespoň jednoho dalšího programovacího jazyka. Programming zkušenost. Volitelně, pokud znáte jiné skriptovací jazyky, usnadní to pochopení Lua.

 21 hodiny

Počet účastníků


Price per participant

Upcoming Courses