по работе пришлось столкнуться с этим поделием какой-то недоучившийся школоты.
это пипец. спрашиваю многих «почему выбран именно Lua как встраиваемый язык?»
типовые ответы:
- потому что он самый быстрый, вот дескать бенчмарки
- потому что его проще всего встроить, вот дескать один хидер и работа со скалярами такая простая
но чухня все это.
любой язык ща встроить в свой код одинаково. что питон что перл.
быстродействие говорите? а чтобы узнать что в ассоциативном массиве есть элемент его надо обойти это быстро? а сконкатенировтаь два массива их опять обойти - снова быстро? а ни одного приличного биндинга к распространенным либам это опять быстро?
то есть что толку с того что десять присвоений быстрее делаются? вы на реальном коде, реальной задаче посмотрите, а там будет медленнее самого медленного языка, ибо в том хоть хеши есть нормальные, массивы.
ну а уж о магии «эта хрень в lua работает вот так вот что волосы дыбом потому что на C было так проще писать» вообще сплошь.
вот например что выводит программа?:
local tbl = { 1, nil, 2 }
print( unpack(tbl) )
правильно, она выводит:
1 nil 2
а вот что выведется в следующих случаях:
local tbl = { nil, 2, 3 }
print( unpack(tbl) )
и
local tbl = { 1, 2, nil }
print( unpack(tbl) )
можете сказать?
и так в lua все.