О разделе
Длинные листинги (от ~15 строк) вынесены в каталог code.spirzen.ru и подгружаются в статьях через ExternalCodeEmbed — так HTML энциклопедии не раздувается, а код остаётся с подсветкой, вкладками и сериями "шаг 1…N". Короткие фрагменты (одна строка, пара выражений) по-прежнему прямо в markdown. Диаграммы mermaid и интерактив — на месте или в play.spirzen.ru.
Раздел охватывает классический Lua (в материалах ориентир — Lua 5.4) и Luau (диалект Roblox на базе Lua 5.1). В разных главах могут упоминаться фичи конкретной версии — смотрите пометки в тексте.
Lua (лу́а, "луна") — встраиваемый скриптовый язык из PUC-Rio (Бразилия, с 1993 года). Таблицы заменяют массивы и объекты; метатаблицы дают ООП и перегрузку операций. Материалы раздела опираются на официальную документацию lua.org и обобщают проверенные формулировки из энциклопедических источников (в том числе статьи о Lua в Википедии).
Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка.
Две дорожки
| Контекст | Версия | На что обратить внимание |
|---|---|---|
| Чистый Lua, LÖVE, Neovim, OpenResty | 5.3–5.4 | //, table.unpack, <const>, <toclose>, generational GC |
| Roblox Studio / Luau | 5.1 + расширения | аннотации типов, task.*, --!strict, другой захват i в for, ограниченные io/os |
Маршрут Luau для Roblox
Если цель — игры на Roblox, идите параллельно с разделом Разработка игр:
Рекомендуемый порядок
- Основы языка — философия и модель выполнения
- История, экосистема, первая программа
- Синтаксис и типы: Синтаксис и пунктуация в Lua → Типы данных и объявление переменных в Lua → Управляющие конструкции и циклы в Lua → Функции, замыкания и анонимные функции
- Метатаблицы, модули, GC, корутины
- Luau и Roblox — после базового Lua
Справочник: Справочник по Lua · Самопроверка: Lua и Luau — чек-лист
Зачем этот раздел
Подборка по Lua и Luau в энциклопедии: синтаксис, первая программа и смежные темы. Выберите один язык для старта, пройдите маршрут до первой рабочей программы — затем переходите к следующему языку или стеку.
С чего начать
| Шаг | Материал | Зачем |
|---|---|---|
| 1 | Первая программа | Запуск и синтаксис |
Частые ошибки при старте
| Ошибка | Что делать |
|---|---|
| Прыжки между языками | Закройте одну "первую программу", потом сравнивайте |
| Код без запуска | Выполните пример локально |
| Сразу большой фреймворк | Сначала база раздела, потом REST/UI |
Что попробовать
- Шаг 1 из таблицы.
- Три непонятных термина — найдите статьи в оглавлении раздела.
- Другой язык — только после своей рабочей первой программы.
Основы языка Lua
Lua — это компактный, быстрый, встраиваемый интерпретируемый язык программирования высокого уровня, разработанный с акцентом на простоту, гибкость и эффективность.
Рекомендации по разработке на Lua
Набор советов, правил, принципов и обычаев в разработке на этом языке.
Простые приложения на Lua
Простые приложения на Lua — скрипты, файлы, JSON и встраивание.
Экосистема приложений на Lua
LÖVE (Love2D) - 2D-движок для создания игр на Lua, кроссплатформенный, имеет простой API (love.load(), love.update(dt), love.draw()), используется инди-разработчиками и для обучения.
История языка Lua
Lua 5.1 (2006) — стабильная, самая распространённая версия. Используется в World of Warcraft, Nginx, многих движках.
Первая программа на Lua
Гайд по установке и настройке с написанием первой программы и её запуском.
Синтаксис и пунктуация в Lua
Кавычки, точки, запятые, скобки и прочие знаки препинания.
Ключевые слова языка Lua
Lua использует двадцать два зарезервированных ключевых слова. Все они являются частью синтаксиса языка и недоступны для использования в качестве идентификаторов.
Встроенные функции и стандартная библиотека Lua
Набор функций, которые включены в стандартную библиотеку языка.
Типы данных и объявление переменных в Lua
Типизация, набор правил определения типа данных значений языка.
Управляющие конструкции и циклы в Lua
Lua предоставляет две формы условной конструкции — if-then-else и её компактный аналог через and/or, хотя последний используется с осторожностью из-за семантических различий.
Функции, замыкания и анонимные функции
Анонимные функции (или лямбда-выражения) — это функции без имени, которые могут быть определены inline. Они особенно полезны при передаче в качестве аргументов или при создании замыканий.
Объектно-ориентированное программирование в Lua
ООП в Lua — объекты через таблицы и метатаблицы, прототипная модель, наследование по __index, инкапсуляция через замыкания.
Работа со строками, таблицами и файлами
Работа со строками, таблицами и файлами в Lua - основные операции с данными и стандартная библиотека `io`.
Обработка ошибок в Lua
Обработка ошибок в Lua - использование `pcall` и `xpcall`, трассировка причин и устойчивое поведение скриптов.
Метатаблицы и метаметоды
Метатаблицы и метаметоды в Lua - расширение поведения таблиц и построение выразительных абстракций.
Модули и организация кода
Модуль в Lua — это любой файл, возвращающий таблицу, которая представляет собой его публичный интерфейс.
Работа с памятью и сборка мусора
Управление памятью в куче полностью делегировано сборщику мусора. Все объекты в куче управляются по ссылкам — переменные содержат не сами объекты, а ссылки на них.
Асинхронность и кооперативная многозадачность
Асинхронность и кооперативная многозадачность в Lua - корутины, планирование задач и управление ожиданиями.
Архитектура выполнения и встраиваемость
Архитектура выполнения Lua и встраиваемость - легкое ядро, интеграция в приложения и управление жизненным циклом VM.
Luau - типизированный диалект Lua от Roblox
Luau - типизированный диалект Lua для Roblox с акцентом на производительность и удобство командной разработки.
Справочник по Lua
number — числовой тип. По умолчанию представляет собой число с плавающей точкой двойной точности (double). В некоторых сборках может быть целочисленным (long long) или комбинированным.
Lua и Luau — итоги
Итоги раздела «Lua и Luau» — FAQ и краткие ответы по теме.
Lua и Luau — чек-лист
Чек-лист раздела «Lua и Luau» — вопросы для самопроверки.
Lua и Luau — о разделе
Раздел охватывает классический Lua (в материалах ориентир — Lua 5.4) и Luau (диалект Roblox на базе Lua 5.1).
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Бэкенд и серверная разработка — Swift — о разделе, Cobol — о разделе, Rust — о разделе, Fortran — о разделе, Groovy — о разделе, Lisp — о разделе.