Почему вы должны знать Lua
Ладно, не должны, но как минимум это полезно. Люди, которые хорошо меня знают, сейчас удивятся, они в курсе что мой первый язык программирования PHP, но не знают, что второй не JavaScript, а Lua. Думаю, вопросы возникли не только у моих знакомых, но и у вас.К этому вернёмся в конце.
А зачем он мне?
Это хороший и логичный вопрос, особенно если вы уже владеете другими скриптовыми языками. Конечно, вы можете жить без Lua. Но он живет там где вы даже не подозреваете.
Он популярный, даже если вы о нем мало слышали. Не так популярен, как смузи Python разрабы которые импортируют каждую букву, Или как джависты в пиджаках в банках, у Lua активное сообщество и много хороших материалов.
Он простой, даже слишком
Lua — минималистичный язык с чистым и понятным синтаксисом. Он не перегружен лишними конструкциями, поэтому освоить его можно буквально за пару часов. Ну и по классике:
print('Привет, всем! Долой JVM!')
if you.crazy() then
learnJava()
end
Lua обычно не юзают в соло. Его часто используют в игровых движках, внутри других программ, он дружит с C/C++, можно много писать как и где его используют, смотрите сюда если интересно.
Он быстрый
Lua — один из самых быстрых интерпретируемых языков. Он компилируется в байт-код и исполняется в вирутальной машине, что даёт ему значительное преимущество по скорости перед другими скриптовыми языками. Отсюда и пошло юзать его в игровых движках, вызывать из C/C++, во первых, это просто, во вторых не требует кучу ресурсов, сам по себе Lua очень маленький.
Игры
Вы играли в World of Warcraft? или может до сих пор играете? (личная жизнь вышла из чата). Так вот, вы должны знать про аддоны у игры. Если делать аналогию, это аля расширение для браузера.
Эти аддоны пиштуся на Lua, когда я еще учился в школе, тоже писал их, модифицировал существующие, подстраивал под себя, вошлебное было время. Как вы уже поняли, да, я это делал до изучения клиентских технологий веба. Как бы странно не звучало, я на тот момент знал PHP. Не суть, если кому интересно, могу отдельно написать про это.
Конечно же Lua не ограничивается вариком, он есть в игровых движках:
- Godot (поддержка Lua через GDScript-обёртки)
- Love2D (движок специально для Lua)
- Defold (основной язык — Lua)
- Gideros (движок для мобильных игр)
- Cocos2d-x (поддерживает Lua наряду с C++ и JavaScript)
- Solar2D (бывший Corona SDK) (движок для 2D-игр, Lua — основной язык)
- OpenMW (движок для Morrowind, поддерживает Lua для модов)
Честно, понятия не имею что это за движки, кроме Love2d, офигенная штука. У меня нет экспертизы в игровых движках, но как видите, много где встраивают скрипты на Lua.
Если верить гуглу, вот еще игры где выполняется Lua:
- Garry’s Mod — практически весь моддинг и геймплей строятся на Lua.
- Roblox — использует диалект Lua под названием Luau.
- Angry Birds — большая часть логики написана на Lua.
- Terraria (tModLoader) — моддинг через Lua.
- Don't Starve — Lua используется для моддинга и логики игры.
- Dark Souls (серия) — в некоторых частях Lua используется для скриптинга AI.
- The Sims 4 — используется Lua для механик игры.
- Far Cry (серия, до Far Cry 3) — активно использовался Lua для скриптинга.
- RimWorld (через Harmony моддинг, Lua частично используется).
- Payday 2 — Lua используется для написания модов.
- Teardown — модификации создаются на Lua.
DevOps и системное программирование
Lua встречается не только в играх, но и в администрировании:
- Nginx использует Lua для динамических конфигураций.
- Redis поддерживает Lua для серверных скриптов.
- Tarantool (in-memory база данных).
- AwesomeWM — оконный менеджер на Lua.
- Syslog-ng и логирование.
- HAProxy (Lua scripting).
- OpenWrt и прошивки для роутеров.
Lua не заменяет Python, Bash или Go в DevOps, но он хорошо вписывается в экосистему, где нужна скорость, встраиваемость и маленький вес.
Друг C (может даже лучший)
Lua создавался для встраивания. Если вы пишете BlAzIng FaSt приложения на C или C++, Lua может добавить гибкость без потери BlAzIng FaSt.
Стоит изучать?
Не стоит забывать, несмотря на то что Lua супер маленький, всё же это другой язык. Для общего развития, это интересный язык, если есть время, why not? Есть еще nelua, интересный проект, но не такой распрастраенный как Lua.
Если вы дефолтный веб макака, который складываете джсоны на сервере и вам ок, то больше нет, чем да, вы не станете делать это лучше или хуже.