Что такое 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.
Проверьте себя
1. В какой популярной у подростков платформе используется диалект Lua?
AMinecraft (на Java)
BRoblox (на Luau)
CFortnite (на C++)
DAmong Us (на C#)
2. Почему Lua удобно встраивать в другие программы?
AОна написана на Java
BЕё интерпретатор очень маленький и компилируется в байт-код
CОна требует мощного сервера
DОна работает только в браузере