Благодарим ви, че изпратихте вашето запитване! Един от членовете на нашия екип ще се свърже с вас скоро.
Благодарим ви, че направихте своята резервация! Един от членовете на нашия екип ще се свърже с вас скоро.
План на курса
Въведение в Lua
- Някоя история
- Цели, особенности и нецели на Lua
- Ресурси за документация и учебници по Lua
- Инсталиране на интерпретатора на Lua
- Настрояване и използване на LuaRocks
Основна синтаксис и семантика
- Идентификатори
- Коментари, блокови коментари
- Глобални променливи и насилствена строгост
- Локални променливи
- Самостоятелни програми, аргументи на програмите
- Единици за компилиране, фрагменти, изрази, точка и запята
Типове данни и структури от данни
- Основни типове: nil, boolean, number, string
- Обектни типове: функция, userdata, нишка, таблица
- Референции/обекти срещу основни стойности
- Значението на таблиците в Lua
Въведение в таблиците и тяхната многостранност
- Таблиците като асоциативен масив
- Таблиците като числови масиви, последователности
Основни конструкции за управление
- Конструкцията if then elseif else end
- Цикъл while
- Цикъл repeat
- Прост цикъл for
Обработка на грешки
- Стойности за връщане срещу изключения
- Преобразуване на стойност за връщане в изключение
- Преобразуване на изключение в стойност за връщане
- Нива на грешка
Примерни програми
- Оценка на полином
- Поискване с ширина първо
- Допълнителни упражнения
Още за функции
- Именовани аргументи
- Обектно-ориентирани извиквания
- Затваряне
- Карринг
- Оптимизация на рекурсията
- Множествено присвояване и връщане
- Varargs
Итератори и ко-рутини
- Общият цикъл for
- Безсъстоятелни срещу състоятелни итератори
- Разлики между итератори и ко-рутини
Меттаблици и метоматери
- Примерът с множеството
- Метоматерите __tostring
- Арифметични метоматери
- Метоматерите __index, __newindex
- Метоматерите __len
Модули и пакети
- Използване на модули
- Създаване на модули
- Организиране на модули в пакети
Напредни таблици
- Таблици за очереди и стекове
- Таблици, описващи графи
- Матрици като таблици
- Свързани списъци като таблици
- Буфери за стрингове
Меттаблици чрез примери
- Прокси
- Стопански
- Запомняне
- Динамично програмиране с запомняне
- Примерът с Фибоначи
Среда
- Взаимосвързаност между глобалните променливи и средата
- Свободни променливи
- Таблицата _ENV и таблицата _G
Още за модули
- Различни подходи за създаване на модули
- Модули, които променят поведението
- Инициализация на модулите и аргументи
- Използване на среда за имплементация на безопасни модули
Напредни итератори и ко-рутини
- Продуцент, потребител, филтър
- Опаковане на ко-рутини за получване на итератори
- Безсъстоятелен итератор за свързани списъци
Принос към Екосистемата
- Качване на пакети в MoonRocks
Функционален парадигма в Lua
- Функцията map
- Функцията reduce / fold
Обектно-ориентирано програмиране
- Различни подходи за ООП
- Различни подходи за наследяване
- Примери
Преглед на стандартните библиотеки на Lua
Компилиране
- Компилиране
- Eval
- Взаимосвързаност със средата
- Бинарни фрагменти
Сбор на отпадъци
- Слаби таблици
- Финализатори, метоматери __gc
Байт код на Lua и виртуална машина
- Генерация на байт код от изходен код
- Четене и анализ на байт код
- Бърз преглед на изходния код на Lua VM
Модули на C
- Извикване на C от Lua
- Път за търсене и зареждане на модули на C
Извикване на Lua от C
- Стек
- Обработка на грешки
- Продължения
Обработка на стойности и типове на Lua от C
- Масиви
- Стрингове
- Userdata
- Меттаблици
- Обектно-ориентирани извиквания
- Леко userdata
Управление на паметта
- Алоциращи
- GC API
Нишки в Lua
- Ко-рутини срещу нишки
- Истинско многонищовост и състояния на Lua
Изисквания
Познаване на поне още един език за програмиране. Programming опит. По желание, ако сте запознати с други скриптови езици, това ще улесни разбирането на Lua.
21 часа