Что такое Lua и где она применяется
Знакомимся с языком Lua и узнаём, почему он повсюду вокруг нас.
Lua — это лёгкий встраиваемый язык программирования, созданный для того, чтобы добавлять скрипты в готовые программы и игры.
Слово Lua по-португальски означает «Луна» — язык родился в 1993 году в Бразилии, в Папском католическом университете Рио-де-Жанейро. Создатели хотели лёгкий инструмент, который можно встроить внутрь большой программы, написанной на C, чтобы пользователи могли менять её поведение без перекомпиляции.
Почему стоит учить Lua
Если вы играли в Roblox — вы уже почти видели Lua. Весь геймплей в Roblox-играх пишется на Luau, диалекте Lua. Создатель игры расставляет на карте кубики, а скрипты на Lua оживляют их: заставляют двери открываться, монеты собираться, врагов атаковать.
Но игры — лишь верхушка. Lua встроена в десятки серьёзных программ:
| Где | Зачем нужна Lua |
| Roblox | вся логика игр (на диалекте Luau) |
| Love2D | движок для 2D-игр целиком на Lua |
| nginx | скрипты обработки запросов (OpenResty) |
| Redis | атомарные скрипты внутри базы данных |
| World of Warcraft | аддоны и настройка интерфейса |
Чем Lua отличается от других языков
Lua специально сделана маленькой. Весь её интерпретатор — это несколько сотен килобайт, поэтому он легко помещается внутрь игры или сетевого устройства. Сравните: Python тащит за собой огромную стандартную библиотеку, а Lua — почти ничего лишнего.
Из-за компактности у Lua всего восемь типов данных и единственная структура для хранения коллекций — таблица. Это делает язык простым в изучении: освоить его за выходные реально, а вот по-настоящему любят его за гибкость.
Первый взгляд на код
Вот как выглядит классическая первая программа на Lua:
print("Привет, мир!")Вывод:
Привет, мир!
Функция print печатает текст в консоль. Точку с запятой в конце строки ставить не нужно — Lua сама понимает, где кончается команда.
Как работает под капотом
Lua — интерпретируемый язык. Ваш исходный текст не превращается сразу в машинный код. Вместо этого он компилируется в промежуточный байт-код, который исполняет виртуальная машина Lua (LuaVM). Этот же байт-код можно встроить внутрь программы на C — именно поэтому игры так легко «встраивают» Lua: они просто включают LuaVM в себя как библиотеку.
Частые ошибки
- Путать Lua и Luau: Luau — это диалект от Roblox с добавленной типизацией, но основы одинаковы.
- Думать, что Lua «несерьёзный» язык. На деле он работает в банковском ПО, сетевом оборудовании и космических симуляциях.
- Ожидать огромную стандартную библиотеку, как в Python. Минимализм — это сознательный выбор Lua.
Итог
- Lua — лёгкий встраиваемый язык скриптов, созданный в Бразилии в 1993 году.
- Применяется в Roblox, Love2D, nginx, Redis, World of Warcraft и многом другом.
- Главные черты: компактность, простота и единственная структура данных — таблица.
- Lua компилируется в байт-код и исполняется виртуальной машиной LuaVM.