Snusmumriken
https://pastebin.com/TpUq8L97 (Ж
Anonymous
ну тут читабельность »
Snusmumriken
А на тему доклада - я лох и бегаю от армии, не могу никуда ехать, плюс английский 'на уровне чтения технической литературы/просмотра мультиков'.
ShadoWalkeR
Кстати, я тут неделю тыкал Squirrel Lang - он очень сильно упрощает понимание Lua
ShadoWalkeR
Ну он чтото среднее между луа и тем же С - как переходный подойдет. Просто некоторые вещи в луа не сразу понятны становлятся изза специфичности
ShadoWalkeR
Угу
ShadoWalkeR
Концепция таблиц сначала в ступор ставит
ShadoWalkeR
То как работают dofile/load/loadfile
Snusmumriken
Не а. Таблицы в луа: а) массив б) структура в) хеш-мапа г) динамическая д) мета-механизм е) и класс и объект И все это может быть одновременно. Это - отличия от 'обычного массива'. И некоторые вещи действительно вводят в ступор. Я подходил к метатаблицам раза четыре, в разное время, прежде чем понял. То же самое с ООП: сначала копипастил один пример, без понимания происходящего, а потом долго осознавал, что тут происходит.
Snusmumriken
В си, есть очень много разных типов данных, и некоторые из них нельзя смешивать.
Snusmumriken
Структура - это особый тип данных, которых можно наплодить 100500к. Это фактически разные типы.
Snusmumriken
И да, таблицы в луа заменяют любой комплексный тип данных из C/C++ (массив/структуру/классы), с наличием нескольких механизмов. В этом прекол.
Snusmumriken
Я к тому, что таблицы - НЕ "обычные массивы", НЕ "хеш-мапы", НЕ "структуры" и т.п. Это всё вместе. И некоторые вещи вводят в ступор на начале, потому что нет аналогий в других ЯП.
Snusmumriken
Аналог метатаблиц там найди.
Snusmumriken
Есть, но не для "обычных составных типов данных", вроде массивов-структур. Тут перегрузка как у объектов, причём слегка странно но очень экономично выглядящая.
Snusmumriken
Слушай, хватит спорить без повода. Тут суть не в том что "у других, если изъебнуться, можно сделать так же!", а в том что ВВОДИТ В СТУПОР, и в том что ты не прав когда упрощаешь всё до предела. Когда ты упрощаешь, у тебя вылезают бешеные погрешности. Настолько чудовищные, что ты начинаешь лгать.
Snusmumriken
Ты просто достал. Ща обратно в бан улетишь )))
_AMD_
+
Snusmumriken
Если это для тебя способ "переспорить лично меня" - бан в зубы. Если это способ "найти истину" - ищи её в другом месте, потому что я уже всё сказал.
Snusmumriken
Молодец. Так бы и сказал с самого начала. Но суть-то не в этом.
Snusmumriken
Нет.
Snusmumriken
Концепция таблиц сначала в ступор ставит
Snusmumriken
Обычные массивы
Snusmumriken
И твоё описание это всё равно что: "- Концепция грузовика сначала в ступор вводит. - Обычные колёса".
Snusmumriken
Всё, чувак, хватит. Остальное все и так всё знают. Харэ выносить моск постоянным повторением очевидной херни.
Snusmumriken
Можно "заранее инициализировать нулями все поля которые теоретически могут понадобиться", но это не покатит с расширяемыми списками, например, если они там есть.
Snusmumriken
Ну вот да.
Snusmumriken
Ну теоретически из структур можно составить древовидную фигню вида: { char * Name; items * [] = [];... }
Snusmumriken
malloc для кого придумывали? А tcc с динамической компиляцией чего угодно в оперативку? Из сишки скрипты получаются. Но да, это "не в оригинальной версии" : )
Snusmumriken
В сишке получаем похожий результат через другие механизмы, более дрочные.
Snusmumriken
Вчера сверлил отвёрткой, расширял дырку в розетке для евро-вилок.
Snusmumriken
Айдар, ты упрощаешь чудовищно, до лжи. Если я тебя буду упрощать твоими же методами, ты окажешься "просто ещё одним придурком которому лишь бы поспамить/поднасрать", и тебе место в пожизненном бане. Демагогов без пользы никто не любит. Дальнейшие сообщения Айдара будут тереться, до осознания дзена.
Snusmumriken
Опа, за обсиралки без причин и аргументации - бан ))) Напомните мне в следующий раз его не пускать, если будет канючить. Мне становится лень тратить на это время, всё таки сейчас где-то полтора часа возился, без всякой пользы для себя и общества.
ShadoWalkeR
Опа, за обсиралки без причин и аргументации - бан ))) Напомните мне в следующий раз его не пускать, если будет канючить. Мне становится лень тратить на это время, всё таки сейчас где-то полтора часа возился, без всякой пользы для себя и общества.
Не знаю зачем ты с ним возился - я сразу понял что человеку бесполезно чтото объяснять. Тем более у меня важное дело нашлось - при обновлении прошивки роутер сказал "Ой все!" 😃
Snusmumriken
Ну знаешь? Типа надежда на лучшее, ему мало лет, авось научится думать головой, общаться с людьми и всё такое.
Snusmumriken
16, или около того.
ShadoWalkeR
Но на самом деле SQLang очень сильно помог - я в пятницу вернулся к луа совсем другой код начал писать
Snusmumriken
Можно глянуть, спасибо
ShadoWalkeR
Его в новой версии камаилио добавили - решил поиграться
Snusmumriken
Обожаю гугл
Snusmumriken
Snusmumriken
Теперь понятно почему совсем другой код.
ShadoWalkeR
😃
ShadoWalkeR
Не - я вот про это http://squirrel-lang.org/
ShadoWalkeR
http://wiki.squirrel-lang.org/mainsite/Wiki/default.aspx/SquirrelWiki/Lua%20Compared%20to%20Squirrel.html
ShadoWalkeR
Они даже сравнение расписали подробное. ЯП из Lua был сделан
Snusmumriken
Мне больше нравится идея: 'пишешь плохой код и sqlang бьёт тебя током в жопу'.
ShadoWalkeR
С стреляет тебе в ногу, С++ отрывает её нахрен при помощи С4 😃
ShadoWalkeR
А Жава просто засыпает тебя книгами))))
Snusmumriken
Ну, это жестоко. Но на С/С++ можно точно бить. За каждый ворнинг компилятора - слабо бьём током, за эррор - сильно, за фатал - очень сильно.
ShadoWalkeR
Да это старый текст начинающийся "В СИ вы можете выстрелить себе в ногу"
Snusmumriken
Да, это в курсе, на лурке есть забавная копипаста из федо "отстреливаем ногу в разных ЯП": http://lurkmore.to/Выстрелить_себе_в_ногу Хе. > Lua: Если разработчик пистолета предусмотрел возможность выстрела в ногу — достаточно вызвать одну функцию. Если нет — хоть убейтесь, но ничего не выйдет. > Squirrel: Намаявшись с Lua, вы прогрызаете ногу той самой белкой, глаз которой вы отстрелили из пистолета «ABAP».
ShadoWalkeR
Что сильно в sqlang опечалило - там в стандартной библиотеке нет работы с БД. И аналога luarocks тоже нет - придется писать коннектор
Snusmumriken
Луа-либы цепляются? Код совместим с луа?
ShadoWalkeR
Вроде нет
ShadoWalkeR
Там свое апи
Snusmumriken
Вот это обидно, у луа есть худо-бедная либная инфраструктура.
ShadoWalkeR
К сожалению она ужасна
Snusmumriken
Да ладно. То что "прям необходимо" - есть: - luasocket - lanes - lua-utf8 - json/cjson - всякие шифровалки/кодеры b64/defold бла-бла Они настолько распространены и доминируют, что почти стандарт. На С/С++-либы пишем врапперы.
ShadoWalkeR
Например поставить dbi_mysql, чтобы он сразу заработал через luarocks в центос - нетривиальная задача)))
Snusmumriken
Врапперы сишных просто пишутся.
ShadoWalkeR
Гдето попадался ответ на вопрос в чем разница между луа и sqlang - на луа вы пишете много хорошего кода на Си, в sqlang вы пишите много хорошоего кода на sqlange 😃
Snusmumriken
Скриптовая природа sqlang, скорее всего, не позволяет расширять сам ЯП. Ну, luajit позволяет инклюдировать на лету системные либы и ковырять их, например. То есть, sqlang, СКОРЕЕ ВСЕГО имеет те же проблемы. Ну, или на нём можно писать драйверы без сишной прослойки, или прямо командовать ОС через winapi/xwindow/posix-[signal/pipes]?
Snusmumriken
В целом, луа же изначально разрабатывался не как самостоятельный яп, то что его используют для самостоятельной сложной логики - это немного не то что закладывали изначально. Поэтому он такой мелкий: нужно чтобы влезало на микруху, цепляло либы этой микрухи и дёргало их.
ShadoWalkeR
Ну у меня простая задача - писать логику для телефонных систем - Asterisk и Kamailio. У них есть С подобный синтаксис и поддержка некоторых ЯП
Snusmumriken
Ну, луа там - стандарт скриптов. Телефония - это как раз те самые embedded-девайсы и быстрый код, который нужно мочь легко изменять, это лучшее применение луёв, ровно то для чего их делали.
ShadoWalkeR
Я еще на lua хотел скрипты для шелла ваять, но не сошлось
Snusmumriken
А мне норм
ShadoWalkeR
ruby лучше подошел - много сделано уже в виде гемов
Snusmumriken
Ну да, у меня тут утилитарное решение, я таких очень мало пишу ибо не одмен (бекенд/крупные приложения).
ShadoWalkeR
Демонов, которые сами себя мониторят, обертку для крона и тд
Snusmumriken
Во, спасибо что напомнил. Надо накатать сервис под венду-сервер луа-приложений.
ShadoWalkeR
Ну это к фразе что для каждой задачи свой инструмент)
Snusmumriken
Давно хочу фиговину, которая не отсвечивает в венде и автоматически запускается, и к которой подключаемся по telnet, и говорим: "Выполни такой-то луа-скрипт, логи писать сюды", или "останови такой-то скрипт", и типа на завершении работы компа - сохраняем текущие запущенные вещи и переоткрываем их снова при запуске.
ShadoWalkeR
О, кстати, в sqlang есть классная фишка - генерация таблиц из JSON - хочу что нить такое же, чтобы по хттп забирать диалплан в астериск
Snusmumriken
Хм. В луа есть cjson, который трансформирует таблицы в json-строки и обратно. И serpent, который просто сериализует таблицы (можно обратно загружать через loadstring). Но это не "стандартная либа", да.
ShadoWalkeR
Надо будет почитать
Snusmumriken
Если не хочешь компилировать cjson - есть варик с чисто луа-json-парсерами, даже без зависимостей (хотя ещё пара либ с зависимостью от lpeg - работают быстрее). Но cjson доминирует и по скорости и по распространённости.
ShadoWalkeR
Сейчас пока сделал возврат таблицы ключ -> имя функции и добавляю в астериск через dofile
Snusmumriken
А serpent лично я использую вместо pretty print. Функции печатает (иногда даже дамп байткода), зацикленные таблицы - тоже корректно обрабатывает, и всё такое.