mva
это их личные половые трудности
grinchfox
Если сравнивать с JS то тут все гораздо круче. Как минимум все гибче
Нету страданий с контекстом и изобретений let потому что var получился неудобным
Yuriy
по началу тоже не нравиось. Ну в общем то да. Дело вкуса Но от них по крайней мере не рябит в глазах все как то лаконично получается и однотипно
Snusmumriken
Во, а ещё у луа кошмарный и очень глупый сборщик мусора, потому что полирует кучу элементов в которых ничего не удаляли. Это медленно.
Snusmumriken
Во, а ещё - кошмарное хеширование строк. Если наплодить кучу почти одинаковых строк - скорость работы с ними замедлится раз в пятьдесят или больше: больше строк - медленнее. Потому что в хешировании участвует всего несколько символов, из начала, конца, и двух точек в середине строки.
grinchfox
При этом всем Garry's Mod отлично живёт на луа с огромным количеством всего внутри одного луастейта
grinchfox
Там luajit
Snusmumriken
Ну, кого волнует гмод: это же просто игрушка, которая не волнует никого на реальном производстве.
Snusmumriken
Ща ещё кучу недостатков у луа найду.
grinchfox
Да, но это живой пример производительности и удобства
Snusmumriken
Во, а локальные рекурсивные функции? local function foo() return foo() end выдаст ошибку, ибо "foo не найдено". Это приходится обходить через: local foo foo = function() return foo() end
Roman
это и все?
Roman
если хоть чутка напрячься, он окажется самым тупым языком!
Snusmumriken
Вот я как раз ищу способы доказать, что луа - довольно стрёмный язык :3
Snusmumriken
Я ж говорил что lua крутой язык) мне никто не верит))
Потому что я не верю Юрке. Юрка говорит что крутой, а я не верю! Мне нужны доказательства!
Yuriy
мне достаточно его гибкости
mva
производительность игрушки против производительности нефтеустановки?
mva
(для которых Lua и писалсяизначально)
Yuriy
а он гораздо гибче чем те же Js, php и иже с ними
Snusmumriken
На самом деле, нет плохих и хороших языков. Кроме эзотерических, типа petooh/whitespace/Malbolge/ALPACA. Разные цели.
Yuriy
мне этого достаточно
Yuriy
Ну я не утверждал что он лучший))
Yuriy
Я просто сказал что он мне нраваится)
Roman
где диапазоны, почему нельзя str[1] вместо str:sub(1, 1), что за язык без поддержки юникода искаропки, как тут адекватно вообще со временем работать, почему везде строка массив, а тут ссылка, что приводит к тормозам
Roman
а ещё, как можно было так сделать, что только у всех строк есть глобальная метатаблица, но не у таблиц, не у чисел
Vladislav
if 0 then print('WTF??') end
Roman
это правильно!
Snusmumriken
Во-во, доступ к строкам как к элементам таблиц, кстати, делается так: getmetatable(string).__index = function(self, key) if type(key) == 'number' then return self:sub(key, key) end return rawget(self, key) end ('string')[2] —> t
Roman
а если я захочу доступ к элементам чисел или тру фолса?
Roman
во
Roman
а могли бы
mva
"элементам тру фолса"?
mva
ШТА?
mva
1) это называется "булевы значения"
mva
2) какие там, нафиг, элементы?
Roman
можно было бы и придумать, клевая идея
Vladislav
а можно не стрелять себе в ноги ^^
void *
Это можно в ruby и crystal
Roman
больше всего в луа скучаешь по выражениям, они всегда возвращают, а в луа лишь пустота в ответ
Roman
массивы поленились отдельно от хешей, но толку, ни у тех, ни у тех нет своих методов
Roman
все вроде?
mva
всё есть
mva
просто это как Gentoo. Или git.
mva
тебе дано ровно то, что тебе нужно чтобы сделать то, что тебе нужно
mva
т.е. от тебя нужно лишь немного усилий чтобы собрать себе ровно то, что ты хочешь
mva
без лишних тысячетонных комбайнов
Snusmumriken
Комбайны уже есть. OpenResty поставляется с комбайном, есть penlight с расширениями синтаксиса и массивами-объектами и типами данных типа очередей.
Snusmumriken
Во, даже так: getmetatable('').__index = function(self, key) if type(key) == 'number' then return self:sub(key, key) end return string[key] end s = '12345' print(s[2])
Roman
какой в опенрести комбайн?
Snusmumriken
В опенрести - там всякие тонны шаблонизаторов/либ для json/xml/DOM и ещё кучи фигни.
Snusmumriken
Ну, луа-коробка мало чем отличается от js-коробки. js тоже беден без либ.
mva
какой в опенрести комбайн?
кстати, да. Большинство resty-либ там, всё же, отдельные либы, а не "из коробки в глобалспейсе" :)
Snusmumriken
Фреймворки для js - тоже продукты третьих лиц. Это у питона приличная стандартная либа, и она, кстати, хороша отсутствием велосипедов. http-сервер? Отлично, с тебя три строчки! Асинхронный http-сервер? Целых тридцать строчек. Асинхронный с препроцессором? Ну тут уже пятьдесят!
mva
...и?
mva
(это не мешает js даже из коробки быть большим комбайном, чем Lua, кстати)
Roman
всмысле что там целый дом из коробки в браузере или что там куча нодовых функций в ноде?
Snusmumriken
Нода - это отдельный разговор. js искаропки не умеет практически ни во что. Попробуй почитать про js-api в windows. Да, тут встроен препроцессор Windows Based Script Host.
Yuriy
Астанавитись! Я всего лишь сказал что хороший язык)))
Snusmumriken
mva
да хороший-то хороший
mva
но у всего есть свои недостатки и своя область применения :)
Snusmumriken
Во-во.
Roman
Да враки все это, на годном языке можно во что угодно
mva
да
Snusmumriken
Попробуй на хаскеле написать драйвер. Язык - офигенно годный.
mva
можно и в Paint'e Мону-лизу нарисовать
Snusmumriken
На луа - тоже можете попробовать.
mva
но зачем?
Roman
Есть языки общего назначения, хаскелл для выворота мозгов
Snusmumriken
Не а, тут просто не получится. Скрипты не могут быть драйверами, службами и прочей системной фигнёй.
Yuriy
Это всего лишь инструмент
mva
линуксовый драйвер вполне можно
void *
1. Пихаешь интерпретатор в драйвер 2.??? 3. Профит
mva
более того, есть пара fuse-драйверов на хачкеле
Snusmumriken
Вот, разве что так. Но на ванильном интерпретаторе не выйдет (((