Почему вы должны знать 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 для модов и скриптов игры.
- Dark Souls в некоторых частях Lua используется для скриптов AI.
- The Sims 4 для механик игры.
- Far Cry (до Far Cry 3) юзают Lua для скриптов.
- RimWorld (через Harmony моддинг, Lua частично используется).
- Payday 2 для написания модов.
- 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.
Если вы дефолтный веб макака, который складываете джсоны на сервере и вам ок, то больше нет, чем да, вы не станете делать это лучше или хуже.