ShadoWalkeR
Поэтому squirrel lang мне больше луа понравился - нормальные классы, нормальные типы
anton
если хочется строгой типизации, зачем мучаться с луа, если есть c++?
Sergey
Почитал, раньше не попадалось. Ну, каши с таким "диктатором" не сваришь. Будем продолжать писать тонны local (спасибо долбаным нефтяникам) и без статики (прямым текстом на Haskell послал).
У нас не хватает смелости выпустить версию, которая будет настолько несовместима, а затем разрушить сообщество и выпустить другую документацию для Lua 5, Lua 6 и т.д. Но, может быть, однажды мы выпустим такую версию. Это были бы очень большие перемены. Считаю, что так нужно было поступить с самого начала, и тогда мы бы говорили о тривиальном изменении в языке, если не считать совместимости. А сегодня это поломает множество программ.
Даже на свой менеджер пакетов смелости не хватило. Они ведь такие страшные, уууу...
А что не так про Эрланг? Интервью читал. Это вопрос если что)
Leon174
Sergey
Сорри, не туда нажал...
Sergey
Кто-нибудь знает Эрланг достаточно хорошо чтобы парировать выпад Иерсулаимски?
Anonymous
Sergey
Я правильно понял, что его сентенция по поводу скрытого состояния сообщений полностью не соответствует действительности?
Anonymous
Оно не то что не соответствует, тут просто нет предмета для критики. Вот есть в Эрланге концепция почтовых ящиков, она обеспечивает определённую инфраструктуру, причём блестяще обеспечивает. Там никакого анализа того, что Роберто кличет "скрытыми состояниями", никак и никогда не требуется (если ты не пишешь свою ВМ, грубо говоря).
Luсky
Знаю автора эрланга.
Luсky
Мир тесен.
Anonymous
Не хочешь обмен сообщениями? Ну вызывай функции как в любом другом функциональном языке. Но зачем, если Эрланг заточен на массовый параллелизм, асинхронность и т.п. Причём настолько грамотно заточен, что после эрланговых процессов ни на какие Го и прочую смешную возню со всякими промисами и корутинами смотреть просто не хочется.
Anonymous
А Роберто пытается натянуть непонятный ему язык на совершенно чужой домен. Всё равно что критиковать, допустим, SQL за то, что на нём как-то сложновато ГИП писать.
mva
mva
а то у меня что кролик, что ёж страдали таким
mva
работает-работает N времени, а потом через ctl к нему обращаешься, а он говорит "не запущено". А что там в спике процессов - не волнует
mva
ну и на запросы извне оно тоже может при этом перестать отвечать
mva
при этом при kill -9 терять данные и ломать собственную базу
Sergey
Мне кажется, я был неправильно понят( Насколько я понимаю, Иерсулаимски критиковал не то, как Эрланг выглядит снаружи, а как устроен внутри. Вот и хотелось бы узнать мнение специалиста по внутрянке)))
Sergey
К примеру, Луа использует +- обычный синтаксис вызова функций, а с C общается через стек. То, что за кулисами может разительно отличаться от того, что на сцене.
Sergey
Вообще, функциональные языки - это здорово, ты мыслишь в терминах что нужно сделать, а не как именно. Но увы, часто этот подход разбивается о суровую реальность нефункционального окружения(
Sergey
вот бы ещё эранговые программы не теряли сами себя в запущенной вм
У нас один товарищ написал на Эрланге базу данных, так она работает на довольно слабом железе (древние АРМы) и почти не падает))) Правда требование - не более 12 часов непрерывной работы, так что... А потом, гад, уволился) У нас никто в Эрланге не шарит, так что мы теперь просто молимся)))
mva
Anonymous
Внутри Эрланг устроен по разному, в зависимости от конкретной ВМ. Вот недавно JIT выкатили (на самом деле AOT, но это детали). А так у меня опыт только с BEAM (что очевидно) и AtomVM немного. Всё там хорошо и грамотно, на самом деле.
mva
а ещё, в случае ejabberd'а, если взять тот же prosody, то у последнего и memory footprint на пользователя меньше, и производительность (в плане "максимальное количество передаваемых одновременно сообщений прежде чем захлебнуться") больше :)
mva
(prosody написан на Lua)
Anonymous
Т.е., повторюсь, Роберто полез в тему, которую понимает весьма и весьма поверхностно. Разные языки, разные идеологии, разное всё. Нельзя одни привычки натягивать на всё подряд.
Джифорсович
Джифорсович
Я заценил твои репы на битбакете
Джифорсович
А где ты щас хостишь новые? Селфхостед какой то?
Anonymous
Они везде есть :) Какая задача-то стоит, надо лазить в мейлбоксы процессов?
Sergey
Т.е. есть единый глобальный шедулер сообщений? (извините, что вопросом на вопрос)))
Anonymous
Там сложнее. Грубо говоря, по шедулеру на физическое ядро. Но можно играться параметрами ВМ в определённых пределах, плюс есть "грязные" шедулеры, у которых свои заморочки.
Anonymous
Если надо по тексту Роберто пройтись, я могу прямо тут. По интервью который.
Sergey
Вопрос был чисто академический. Я же не говорю, что это плохо - если оно устойчиво работает с приемлемой производительностью, то пользователям должно быть пофиг как оно устроено внутри. Так что Роберто и прав и не прав одновременно)
Anonymous
Он же не пытается отрицать практические преимущества экосистемы Эрланга, он именно идеологию критикует... вообще её не понимая :)
Sergey
Идеологию? Мне показалось, он говорит о том, что язык позиционирующий себя как функциональный, внутри устроен по иным принципам. Он считает это недостатком, я - нет.
Sergey
Lua написан на C и довольно сильно отличается от C. И чтоооо?
mva
на самом деле, Lua больше похож на C, чем отличается от него
mva
в т.ч. в идеологическом плане :)
Anonymous
Ну хорошо, по тексту:
> — Erlang is a funny language. It has some really good uses, fault tolerance is really interesting. But they claim it’s a functional language and the whole idea of the functional language is that you don’t have a state.
Bzz. Во-первых, общепринятого определения понятия "функциональный" вообще не существует. Во-вторых, Роберто путает функциональность и чистоту. В-третьих, "полностью чистый язык - полностью бесполезен".
>And Erlang has a huge hidden state in the messages that are sent and not yet received.
А ещё он имеет стейт в стейтах процессов. И в словарях. И в ets/dets. И на этом фоне содержимое мейлбоксов, по которому так скорбит Роберто, вообще не заметно.
>So each little process is completely functional but the program itself is completely non-functional.
Так и есть. Эрланг - ФП, ОТП - ООП. Это общее место, вообще говоря.
>It’s a mess of hidden data
А можно продемонстрировать, что это именно mess? А то я вот не могу вспомнить случая, чтобы мне за 16 лет работы с Эрлангом пришлось хоть раз руками лазить в ящик. Я вообще не уверен, что это возможно без дополнительной эквилибристики, зато отчётливо вижу, что сам Роберто подобного даже не пробовал.
>that is much worse than global variables because if it were global variables, you would print them
Да, Роберто, давай, докажи нам, что local в Луа - это на самом деле преимущество.
>Every single moment, what’s the state of the system?
Не знаю и знать не хочу. Эрланг позволяет решать задачи, не отслеживая состояние каждого отдельного бита. А если у тебя возникает такое желание, то с тобой как с программистом что-то глубоко не так.
Sergey
Даже если не обращать внимание на синтаксис, весьма сильно отличается.
Egor
Как можно использовать переменные С++ в функциях lua? Использую C API
mva
Sergey
Ну хорошо, по тексту:
> — Erlang is a funny language. It has some really good uses, fault tolerance is really interesting. But they claim it’s a functional language and the whole idea of the functional language is that you don’t have a state.
Bzz. Во-первых, общепринятого определения понятия "функциональный" вообще не существует. Во-вторых, Роберто путает функциональность и чистоту. В-третьих, "полностью чистый язык - полностью бесполезен".
>And Erlang has a huge hidden state in the messages that are sent and not yet received.
А ещё он имеет стейт в стейтах процессов. И в словарях. И в ets/dets. И на этом фоне содержимое мейлбоксов, по которому так скорбит Роберто, вообще не заметно.
>So each little process is completely functional but the program itself is completely non-functional.
Так и есть. Эрланг - ФП, ОТП - ООП. Это общее место, вообще говоря.
>It’s a mess of hidden data
А можно продемонстрировать, что это именно mess? А то я вот не могу вспомнить случая, чтобы мне за 16 лет работы с Эрлангом пришлось хоть раз руками лазить в ящик. Я вообще не уверен, что это возможно без дополнительной эквилибристики, зато отчётливо вижу, что сам Роберто подобного даже не пробовал.
>that is much worse than global variables because if it were global variables, you would print them
Да, Роберто, давай, докажи нам, что local в Луа - это на самом деле преимущество.
>Every single moment, what’s the state of the system?
Не знаю и знать не хочу. Эрланг позволяет решать задачи, не отслеживая состояние каждого отдельного бита. А если у тебя возникает такое желание, то с тобой как с программистом что-то глубоко не так.
Буду краток. Согласен.
Sergey
Ну хорошо, по тексту:
> — Erlang is a funny language. It has some really good uses, fault tolerance is really interesting. But they claim it’s a functional language and the whole idea of the functional language is that you don’t have a state.
Bzz. Во-первых, общепринятого определения понятия "функциональный" вообще не существует. Во-вторых, Роберто путает функциональность и чистоту. В-третьих, "полностью чистый язык - полностью бесполезен".
>And Erlang has a huge hidden state in the messages that are sent and not yet received.
А ещё он имеет стейт в стейтах процессов. И в словарях. И в ets/dets. И на этом фоне содержимое мейлбоксов, по которому так скорбит Роберто, вообще не заметно.
>So each little process is completely functional but the program itself is completely non-functional.
Так и есть. Эрланг - ФП, ОТП - ООП. Это общее место, вообще говоря.
>It’s a mess of hidden data
А можно продемонстрировать, что это именно mess? А то я вот не могу вспомнить случая, чтобы мне за 16 лет работы с Эрлангом пришлось хоть раз руками лазить в ящик. Я вообще не уверен, что это возможно без дополнительной эквилибристики, зато отчётливо вижу, что сам Роберто подобного даже не пробовал.
>that is much worse than global variables because if it were global variables, you would print them
Да, Роберто, давай, докажи нам, что local в Луа - это на самом деле преимущество.
>Every single moment, what’s the state of the system?
Не знаю и знать не хочу. Эрланг позволяет решать задачи, не отслеживая состояние каждого отдельного бита. А если у тебя возникает такое желание, то с тобой как с программистом что-то глубоко не так.
Правда я читал в переводе и долго плевался по поводу качества оного. Ну да ладно)))
Sergey
Sergey
В Луа нет переменных, одни ссылки)
Sergey
Userdata represent C values in Lua. A light userdata represents a pointer, a void*. It is a value (like a number): you do not create it, it has no individual metatable, and it is not collected (as it was never created). A light userdata is equal to "any" light userdata with the same C address.
Sergey
Точнее - light userdata. Но я могу быть и не прав) Надеюсь, более опытные товарищи меня поправят.
Sergey
Скорее всего, надо оборачивать в полный userdata.
Anonymous
Leon174
Код писать сюда
https://studio.zerobrane.com/
Leon174
Love2d брать тут
https://love2d.org/
Leon174
А здесь смотреть
https://www.youtube.com/watch?v=QjslCOj9nIA&list=PLNdb9-93_ov4-WcZxzjdFNiZJm4QU4IBM
Anonymous
Leon174
Маньяк ты, боцман, и стикеры у тебя маньяцкие.
Anonymous
anton
вот, может пригодится кому, всё что я нашёл на гитхабе у меня не заработало, этим можно смотреть C стек из gdb и распечатывать таблицу из этого стека по индексу https://gist.github.com/Gliese852/c5aac9a01e5cdea705080be9735cab07
Dmitry
коллеги, вопрос на миллион - как импортировать vim api (библиотеку) в lua?
Dmitry
то есть если что на луарокс его нет
Snusmumriken
Я имею ввиду, как я могу передать в функцию не копию, а ссылку(если они есть в lua, конечно) какого-либо моего объекта, чтобы изменять его.
Кароч. Есть два метода передачи значений в луа.
1. light_userdata — это просто указатель на какую-то структуру. Считай что просто некоторое число. Память под этим указателем должна быть под управлением сишки, сборка мусора её не соберёт, но при множественном пропихивании одного и того же указателя, их можно сравнивать на равенство и на луёвой стороне: допустим, мы с сишки пропихиваем событие и указатель на окно, и события одного и того же окна всегда с одним и тем же указателем. С полной юзердатой такое бы не сработало.
2. Полная юзердата — это выделение памяти на луёвой стороне. Грубо говоря, ты маллокаешь кусочек места, пихаешь в него данные, опционально присоединяешь метатаблицу и луа начинает управлять его памятью: данное значение будет собрано сборкой мусора, когда на *луашной* стороне больше не останется ссылок на данный объект.
Советую использовать фулл-юзердату во всех случаях когда возможно, и изначально организовывать своё приложение таким образом, чтобы луа управляла созданием и сборкой мусора.
Snusmumriken
Ну, похоже что примерно так.
https://neovim.io/doc/user/lua.html#Lua
Неовим где-то держит скрипты внутри себя, и дёргает по каким-то событиям.
Snusmumriken
Возможно, дёргать через :lua scriptname — имя скрипта начинает выступать в роли команды
Dmitry
Snusmumriken
Я не знаю точно, проверь.
Практически гарантировано можно :lua require"scriptname"
Wsevolod
Wsevolod
Wsevolod
Ох ты ж
Плагин хочешь написать?
Dmitry