Lua
Реально простой и реально мощный язык программирования. luajit приближен по скорости к C++, с головой опережает python, node, ruby и многие другие языки, при этом имеет динамическую типизацию и не превращает все в ООП (но и не запрещает)
Мои применения
- Garry's Mod сервера - основной язык моддинга (отсюда мои ноги растут). Мой проект
trigon.im
в 2015 году был в топ-3 garrysmod по мониторингу GameTracker 😎 - OpenResty - фильтрую запросы на уровне веб сервера. Рейт лимиты, алерты и тд. Так "дешевле", чем на уровне php. Еще слышал про Kong, но руки не дошли потрогать
- ggram – Моя библиотека для написания телеграм ботов различной сложности. Почти все мои боты написаны на Lua
- long polling server – OpenSource клиент и сервер, написанные на lua-express. Список применений написан в первой ссылке (по сути, единый вебхук для всего)
- GMDonate API написан тоже на lua-express
Что мне не нравится в Lua
Отсутствие continue
по умолчанию
continue
это keyword, который позволяет пропустить итерацию цикла при каком-то условии. В минимальной демке, как снизу, проблема не кажется существенной, но когда функции побольше, то это ощутимое неудобство
- Без continue
- С continue
local start_loop = function()
while something do
wait(1)
local search_ok, ctx = do_search(SEARCH_QUERY)
if search_ok then
local dat = ctx.json()
if dat and dat.success then
local step_ok, err = pcall(step_loop, dat)
if not step_ok then
print("step_loop error")
end
else
print("query error 2", ctx)
end
else
print("query error 1", ctx)
end
end
end