Компания Microsoft подготовила (https://github.com/Azure/golua) новый движок для исполнения сценариев на языке Lua. Ключевой особенностью представленного Lua VM является реализация на языке Go. В движке поддерживается синтаксис Lua 5.3, но пока отмечаются отдельные несовместимости (непример, отсутствует поддержка сопрограмм) и требуется дополнительная стабилизация API. Код проекта открыт (https://github.com/Azure/golua) под лицензией MIT, которая также используется проектом Lua для распространения кода основного интерпретатора, написанного на языке Си.Напомним, что язык Lua получил основное распространение в качестве встраиваемого языка (например, для определения конфигурации или для написания расширений). Lua комбинирует простой процедурный синтаксис с мощными возможностями описания данных через использование ассоциативных массивов и расширяемой семантики языка. В Lua используется динамическая типизация, языковые конструкции преобразуются в байт-код, выполняющийся поверх регистровой виртуальной машины с автоматическим сборщиком мусора.
URL: https://news.ycombinator.com/item?id=18469672
Новость: https://www.opennet.me/opennews/art.shtml?num=49625
>Ключевой особенностьюМожно Эпплу продать идею на миллиард: если что-то перекрасить, то это можно назвать ключевой особенностью и смело объявлять о выходе новой версии.
А теперь написать Go на Lua и выполнить его на Lua, написанном на Go.
Кажется ты начинаешь подозревать как НА САМОМ ДЕЛЕ устроен современный веб.
Он понял рекурсию
Подводная лодка в степях украины погибла в неравном воздушном бою. Сабж это как-то так...
> перекраситьиной архитектуры виртуальной машины
немножко другие названия функций, немножко другое разбиение по модулям, ну еще какие-нибудь мелочи.
> немножко другие названия функций, немножко другое разбиение по модулям, ну еще какие-нибудь
> мелочи.Вы это серьёзно? Посмотрели, сравнили? Или просто своё понимание "архитектуры" спроецировали на других?
Так что, Lua будет жить?
Очень достойный конкурент питону, но непопулярный.
Да ничего принципиального нет там. Питон ничем не хуже. Я за сабж бы и не сел, если бы не awesome wm. И то - на питоне он был бы гораздо лучше.
На Питоне есть Qtile github.com/qtile/qtile
Питон ровно ничем не отличается от пхп, и перла и руби и прочих монстров, а луа у которой 200кб бинарник, ровно такой же как у awk, легко переносится хоть на ардуину с 20кб озу, так что не надо ляля
> Питон ровно ничем не отличается от пхп, и перла и руби и прочих монстров, а луа у которой 200кб бинарник, ровно такой же
> как у awk, легко переносится хоть на ардуину с 20кб озу, так что не надо ляляОчередной Экспердус Опеннетус спешит поделиться ценнейшим мнением.
MicroPython? Не, не слышал!> How big is MicroPython? How much memory does it take?
> TL;DR: 128K ROM/8K RAM is the recommended minimum configuration for doing
> something "real". You can easily go below (or above) that, see below.
>
Ага, только когда дело дойдёт до подключения нужных модулей всё "micro" улетит в никуда.
все норм, никуда не улетит - эти модули просто не подключатся, ибо с мелко-питоном несовместимы ;-)
>> How big is MicroPython? How much memory does it take?
>> TL;DR: 128K ROM/8K RAM is the recommended minimum configuration for doing
>> something "real". You can easily go below (or above) that, see below.
>>Arduino Uno
Микроконтроллер ATmega328
Флеш-память 32 Кб (ATmega328) из которых 0.5 Кб используются для загрузчика
ОЗУ 2 Кб (ATmega328)
EEPROM 1 Кб (ATmega328)
> Arduino Uno
> Микроконтроллер ATmega328
> Флеш-память 32 Кб (ATmega328) из которых 0.5
> Кб используются для загрузчика
> ОЗУ
> 2 Кб (ATmega328)
> EEPROM 1
> Кб (ATmega328)Вы бы для начала определились:
> хоть на ардуину с 20кб озуДа и дополнительно к спекам не помешал бы пример или демка не-совсем-уж-хелловорда на Луа на ЭТОЙ ардуине.
>> Arduino Uno
>> Микроконтроллер ATmega328
>> Флеш-память 32 Кб (ATmega328) из которых 0.5
>> Кб используются для загрузчика
>> ОЗУ
>> 2 Кб (ATmega328)
>> EEPROM 1
>> Кб (ATmega328)
> Вы бы для начала определились:
>> хоть на ардуину с 20кб озуДык я и определил, что спорить с тем кто "легко переносится хоть на ардуину с 20кб озу" смысла нет :)
> Да и дополнительно к спекам не помешал бы пример или демка не-совсем-уж-хелловорда
> на Луа на ЭТОЙ ардуине.Не видел (и не искал). Вполне пишут (в т.ч. полные новички в программировании) для Ардуин на диалекте (упрощённом) С++. ИМХО больше пользы: близость к железу даёт углублённое понимание оного.
Lua лёгкий, а не удобный.
Посмотрите на количество модов для Сталкера.
Все же многие нашли его удобным.
все плагины для World of warcraft на Lua написаны
в Вампирском Машкераде был Питон. Я оба языка пробывал встраивать. Бидон был явно мощнее, но Луа проще. Там в Бидоне был миллион строк, огромная свалка библиотек. Луа была крошечной, ее можно было легко запихнуть в движок, но и делать могла почти ничего. Просто чтобы не писать свой интерпритатор.
Вы просто экосистемы Lua не знаете. Посмотрите luarocks, Open-Resty.
На lua вся Don't starve написанна, окромя обвязки с sdl.
Аналогично лучший рогалик ToME - полностью на lua.
Супер легковесный 2д движок для луа - love2d занимает минимум памяти.Вообще даже немного обидно что lua уделяется мало внимания. Я бы был бы не против встроенного в базовую систему FreeBSD lua интерпретатора. Занимает минимум памяти, а писать скрипты на нем гораздо проще чем на шелле. Особенно когда нужны списки/массивы.
> На lua вся Don't starve написанна
> Аналогично лучший рогалик ToMEи обе тормозят, как моя бабка. Особенно tales of maj eyal - там просадки фпс вообще на любом железе (особенно во время автопоиска)
> Я бы был бы не против встроенного в базовую систему FreeBSD lua интерпретатора.https://reviews.freebsd.org/D14295
> Add Lua as a scripting langauge to /boot/loaderБазовей некуда.
Угу. Потому что больше ни на чём их писать невозможно. Близы встроили lua в клиент, но не встроили туда python.
Lua - нишевой язык. Кроме скриптов в играх больше почти нигде не используется. Wireshark разве что вспоминается.
https://www.lua.org/uses.html
Расскажите это CloudFlare, MailRu, Taobao, они очень удивятся.
> Расскажите это CloudFlare, MailRu, Taobao, они очень удивятся.Вот этим-то ребятам как раз впору Lua обмазываться. )
я вас, б..дей, на этот пароход целый год собирал!
Скорее он легко встраиваемый. Лёгкостью и удобством там не пахнет близко даже.
у них отсчет начинается с единицы, а не с нуля. Только за это авторов луа надо бить ссаными тряпками
> у них отсчет начинается с единицы, а не с нуляДостаточно традиционный подход. Fortran, R, Matlab, Julia тоже с единицы
>> у них отсчет начинается с единицы, а не с нуля.
> А по-моему это е#анина, когда arr.length > 0, а arr[length] не существует.Ох уж эта вечная война остроконечни^W приверженцев 0/1 индексов.
Смотрится особенно умильно на фоне классики:
(Внимание: особо впечатлительным фанатам "единственно верной индексации" лучше не смотреть и не читать -- возможен разрыв … э-э-э шаблона :) )
------
program pukanero;
var myarr: array[-5..10, -10..10] of Byte;
begin
myarr[10][10] := 37;
myarr[-5,-10] := 13;
writeln('len:',length(myarr),',', length(myarr[low(myarr)]),
'|',myarr[-5,-10],myarr[10,10]);
end.
https://ideone.com/8HxUl5
Success #stdin #stdout 0s 336KBlen:16,21|1337
Многоли ли использующих сейчас Пасквиль?
>> на фоне классики
> Многоли ли использующих сейчас Пасквиль?
> Пасквиль?Многие ли сейчас читают Достоевского или Гоголя?
Можно ли, исходя из цифр активных читателей, сделать вывод о превосходстве языковой и сюжетной части опусов Донцовой и Поселягина над произведениями Чехова или Толстого?
Стоит ли воспринимать критику "Двинацати стулиев" всерьез?
Вопросы, вопросы …
А примерчик ведь замечательный. Адепты превосходства скобочек {} в священной войне победили. Однако, с [] вышло ой. В Паскале индексы на уровне языка. В С это введённая пользователями абстракция. Потом абстракционисты переполняют буфер, а Керниган с Риччи виноват.
Range конструкции в паскалеобразных - одна из любимых их особенностей. Особенно range case. Очень жаль, что не использовали в условиях.
И да, о Zonnon наверное люди даже не слыхали.
> у них отсчет начинается с единицы, а не с нуля. Только за это авторов луа надо бить ссаными тряпкамиПодражателей идеи Си-шных индексов надо бить, и не ссыными тряпками, а хорошей дубиной.
В Си эта идея обоснованная, язык для системного программирования, по сути высокоуровневый ассемблер.
Но в языках общего назначения - это маразм карго-культа.
Границы индекса должны назначаться при объявлении / создании массива и быть произвольными.
> Границы индекса должны назначаться при объявлении / создании массива и быть произвольными.Массивы должны быть переменного размера. В прикладухе не нужно таких геморов.
А вообще применение массивов в прикладном софте немного странно,
ну кроме случаев когда сама программа создаётся для работы с массивами
(мат. пакеты, статистика, астрономия, графика, игр. движки,....)
> идеи Си-шных индексовНе нашёл индексов в ISO/IEC 9899:201x. Единственное вхождение:
6.7.9 Initialization
22 If an array of unknown size is initialized, its size is determined by the largest indexed
element with an explicit initializer. The array type is completed at the end of its
initializer list.
int A[] = {9,8,7,6} - массив из 4-х элементов A[0],A[1], A[2], A[3]; A[0] == 9, A[3] == 6;Шо не ясно?
int A[99] = {0} - массив из 99 элементов, всё нули.
int A[99] = {11} - так низя. Точнее можно, но нихрена не понятно, равносильно: A[99] = {[0]=11, [1 ... 98]=UNDEFINED};
int A[] = {0}; - казалось бы сингулярность, но нет - 1 элемент, нулевой. :)
> Шо не ясно?Где определение "индекс" в стандарте С.
[] суть синтаксический сахар для указателей.
Боюсь, что заимствование "идеи индексов" из С выдумали сами заимствующие.> int A[] = {0}; - казалось бы сингулярность, но нет - 1 элемент, нулевой. :)
Размер при объявлении можно не указывать, тогда он будет равен количеству инициализирующих элементов.
> int A[99] = {11} - так низя.
Да, надо добавить ;// и станет well-formed.
> Где определение "индекс" в стандарте С.Ну отец, это не в Си, это в матане и линейной алгебре :)
В матрицах что ли? Так это в тетрадке заставляли вручную перемножаемые элементы расписывать, что бы научились. А в прикладухе зачем вот это вот всё? Там ведь даже ответ зачастую не в цифрах нужен, а в виде точки на экране.А то ведь получается, что они для индексации элементов упорядоченного множества используется. Осталось их добавить в LISP. :)
> А в прикладухе зачем вот это вот всё?Это ужо философия.
А нулевой индекс в массиве, патамуша массив - это куча байт, относительный адрес которых начинается с нуля.
Не потому, что массив байт, а потому что такова прямоугольная (Декартова) система координат, которая начинается с 0. Нарушение этого правила полностью ломает общепринятую систему координат.
> Не потому, что массив байт, а потому что такова прямоугольная (Декартова) система
> координат, которая начинается с 0.Напомню, что кто-то якобы увидел в языке Си некие "индексы", и перетащил их в другие языки. При чём тут абсциссы с ординатами, которые вообще-то далеко не всегда целые числа...
> А нулевой индекс в массиве, патамуша массив - это куча байт, относительный
> адрес которых начинается с нуля.Потому что Вы не поняли концепцию указателей, относительно которых и происходит нулевое (или иное) смещение.
> Не нашёл индексов в ISO/IEC 9899:201x
>> Не нашёл индексов в ISO/IEC 9899:201x
> https://port70.net/~nsz/c/c11/n1570.html#Index пожалуйстаОбманывать нехорошо.
Этот Индекс относятся не к языку.
>>> Не нашёл индексов в ISO/IEC 9899:201x
>> https://port70.net/~nsz/c/c11/n1570.html#Index пожалуйста
> Обманывать нехорошо.
> Этот Индекс относятся не к языку.А к чему он относится?
>>>> Не нашёл индексов в ISO/IEC 9899:201x
>>> https://port70.net/~nsz/c/c11/n1570.html#Index пожалуйста
>> Обманывать нехорошо.
>> Этот Индекс относятся не к языку.
> А к чему он относится?Попробуйте перевести... прямо. ;)
>> идеи Си-шных индексов
> Не нашёл индексов в ISO/IEC 9899:201x.Так может ты переводишь криво, "грамотей"?
https://port70.net/~nsz/c/c11/n1570.html#6.5.2.1 (6.5.2.1 Array subscripting)
https://translate.yandex.ru/?lang=en-ru&text=subscript
>>> идеи Си-шных индексов
>> Не нашёл индексов в ISO/IEC 9899:201x.
> Так может ты переводишь криво, "грамотей"?
> https://port70.net/~nsz/c/c11/n1570.html#6.5.2.1 (6.5.2.1 Array subscripting)
> https://translate.yandex.ru/?lang=en-ru&text=subscriptЦитаты с определением "индекса массива", очевидно, Вы предоставить не можете. Потому что её нет. Остаётся фантазировать.
>>> идеи Си-шных индексов
>> Не нашёл индексов в ISO/IEC 9899:201x.
> Так может ты переводишь криво, "грамотей"?
> https://port70.net/~nsz/c/c11/n1570.html#6.5.2.1 (6.5.2.1 Array subscripting)
> https://translate.yandex.ru/?lang=en-ru&text=subscriptСоздатели стандарта пользуются другим словарём.
Из словаря OxfordDictionary (En-En)
subscript [+]
1. adjective (of a letter, figure, or symbol) written or printed below the line
2. noun a subscript letter, figure, or symbol
■ Computing a symbol (notionally written as a subscript but in practice usually not) used in a program, alone or with others, to specify one of the elements of an arrayЧитаем: для спецификации одного из элементов массива.
"The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2)))"
Переводим стандарт по смыслу: оператор синтаксического сахара для арифметики указателей.
"Индекс" ввиду отсутствия внятной семантики -- это ещё более вольная интерпретация, чем моя выше.
а в каких сферах луа и питон конкурируют то?основная популярность питона не в сфере встраиваемых языков (хоть его так тоже используют)
Например Ардуино-подобные игрушки. Вместо тяжёлого для новичков C там можно завести интерпретатор Lua и писать на ней. А вот интерпретатор питона "тянут" лишь дорогие платы помощнее.
Имхо, там подошло бы что-то вроде Vala, которая не интерпретируется, а транслируется в C код, а освоить её не сложнее C#.
> Например Ардуино-подобные игрушки. Вместо тяжёлого для новичков C там можно завести интерпретатор
> Lua и писать на ней. А вот интерпретатор питона "тянут" лишь
> дорогие платы помощнее.
> Имхо, там подошло бы что-то вроде Vala, которая не интерпретируется, а транслируется
> в C код, а освоить её не сложнее C#.а в этом жанре разве не js сейчас в топе?
> Имхо, там подошло бы что-то вроде Vala, которая не интерпретируется, а транслируется
> в C код, а освоить её не сложнее C#.мне кажется, nim подошел бы больше чем Vala
> Очень достойный конкурент питону, но непопулярный.Это мнение основано на опыте применения lua? Если так, то киньте в меня пожалуйста каким-нибудь гайдом, который может объяснить человеку воспитанному на типизированных языках, как можно написать на нетипизированном языке программу сложнее чем hello world. Я пытался найти подобный гайд в интернете, когда столкнулся с lua, но мне это не удалось. Я знаю, что людям как-то удаётся писать на lua программы в тысячи, и даже десятки тысяч строк, но я не знаю как. А очень хочу знать.
В смысле, у меня есть как можно привнести в lua типизацию, хотя бы динамическую, но другие то обходятся без этого. И на вопрос "как им это удаётся" я могу предположить лишь один ответ: они гениальные программисты, чья гениальность недостижима для моего понимания. Но я видел примеры кода на lua, и они в большинстве своём вовсе не похожи на код гения. Хотя, если гениальность непостижима, может я просто не вижу гениальности этого кода?
Собственно мне бы очень хотелось найти что-нибудь, что может пролить свет на эту загадку.
Я тот самый анон.
Я писал на ней игрульки (мобильные движки вроде Corona SDK, Defold...), моды к играм, программировал микроконтроллеры (Lua-node), даже писал GUI приложения для десктопа (https://github.com/pavouk/lgi).
Игрушку выложил в Google Play, но популярности она не добилась, моды до сих пор где-то валяются на каких-то форумах, микроконтроллер я вообще воспринимал как игрушку.Могу сказать, что Lua - хороший язык, LuaJIT очень быстрая. Но если вы привыкли к языкам с жесткой статической типизацией, то lua вам просто не нужна.
> Но если
> вы привыкли к языкам с жесткой статической типизацией, то lua вам
> просто не нужна.Отлично. Я тоже сказал бы что она мне не нужна, но её встраивают куда ни попадя. Как правило не предлагая никаких альтернатив.
Есть различные библиотеки для проверки типов (checks, annotate) и статистического анализа кода (lua lint). Действительно большой недостаток - отсутствие статических структур и некоторые чрезмерные упрощения. Например, невозможно различить отсутствие переменной/поля таблицы и равенство его nil. Или то что обычные массивы и словари объединены в одну структуру table. Или десяток способов имитировать классы, несовместимые друг с другом.
> Есть различные библиотеки для проверки типов (checks, annotate) и статистического анализа
> кода (lua lint).Да, но они для версий старше 5.0, я же завязан на 5.0. Да и глупости всё это, я посмотрев, решил что реально чем возится со всей этой хнёй, проще написать компилятор типизированного языка в lua. Вплоть до того, что реализовать lisp на lua, с компиляцией lisp'а в lua. Правда lisp динамиечески типизируемый, то есть он снимет лишь часть проблем.
Так lua тоже динамически типизируемый. Annotate очень интересная библиотека. Там добавляются декоратором doc-строки для проверки типов аргументов функции, по которой генерируется конечный автомат. На luajit работает быстрее чем check type, реализованный на си в виде dll. Да, ещё раздражает обилие locate и end в коде. В moonscript это исправлено. Но разыменование nil - проблема больших скриптов lua. По сути это аналог null pointer exception. Здесь может помочь автоматическая инициализация всех переменных и немутирующие переменные как в функциональных языках. Но тогда это будет другой ЯП и нужно будет всё переписывать.
> Я тот самый анон.
> Я писал на ней игрульки (мобильные движки вроде Corona SDK, Defold...), моды
> к играм, программировал микроконтроллеры (Lua-node), даже писал GUI приложения для десктопа
> (https://github.com/pavouk/lgi).Ну это не очень показательный проект. Это просто бинды к внешней библиотеке без попытки создать что-то своё. Но и тем не менее вопрос: а там все эти тесты-проверки типов вручную писались, или всё же автосгенерированы были? Если автосгенерированы, то что это за утилита такая замечательная? Позволяет ли она автогенерировать произвольные юзерские типы, чтобы не надо было вручную набирать бы весь этот бойлерплейт с setmetatable, check_type на каждое поле, а тупо описать тип декларативно, и получить всё остальное бонусом?
Эта замечательная утилита называется gobject-introspection. Именно она создаёт такое многообразие биндингов к Gobject.
Если бы не она, я бы выбрал Qt.
> Эта замечательная утилита называется gobject-introspection. Именно она создаёт такое
> многообразие биндингов к Gobject.
> Если бы не она, я бы выбрал Qt.Это не вариант. В моём случае нужен именно lua код, встроить C'шные модули не удастся. Если бы это было возможно, я бы вообще не парился на тему lua ни секунды.
Lua же встраиваемый язык. Чистый Lua - это на поиграться. Там в стандартной библиотеки нет слишком много того, что нужно. Поэтому и недотягивает до python'а по популярности.
> Lua же встраиваемый язык. Чистый Lua - это на поиграться. Там в
> стандартной библиотеки нет слишком много того, что нужно. Поэтому и недотягивает
> до python'а по популярности.Да, я понимаю. И именно этот кейс я и имею в виду. Есть приложение, в нём не хватает функциональности на мой взгляд, но там есть встроенный луа. Недостающую функциональность я оцениваю в несколько тысяч SLOC. Я написал около 1 kSLOC и даже когда этот код работает, я не верю в то, что он работает. Ну, я писал его "волнами", типа написал что-то, посмотрел, перелопатил весь код дописал ещё чутка. Посмотрел, перелопатил. И так раза три-четыре. Сейчас я смотрю на то что получилось, и думаю, что же теперь делать -- переписывать заново с учётом обретённых знаний? Тщательно избегая копипаста, чтобы туда не просочились бы косяки типа "я изменил функцию добавив туда аргумент, но исправил не все вызовы этой функции, и некоторые вызывают эту функцию с недостаточным количеством аргументов". Луа, падла такая, не просто радостно принимает такие баги, он даже не даёт никакого способа найти их.
В интернете есть статические анализаторы, но они для lua версий 5.1 и выше. Мне нужно для 5.0. Написать свой статический анализатор? По идее не сложно должно быть, lua маленький и простой язык, но с другой стороны, не сильно-то сложнее запилить маленький и простой язык со статической типизацией, который будет компилироваться в луа. И я бы давно сделал это, но для этого нужно уверенное понимание всяких нюансов lua, которые возможно обрести только через опыт программирования на луа. И поэтому собственно я и задаю вопрос: какие есть секретные тулзы для программирования на lua? Или может быть секретные приёмы? Может быть какой гайд по написанию unit-тестов для нетипизированных языков? Может быть руководство по проектированию API в нетипизированных языках? В идеале, конечно же, книжку с названием "Lua для C-программиста" или "системное программирование на lua" ("системное" -- это в смысле создания сложных систем, а не написания ядра ОС).
Ох, не уверен, что смогу помочь. С функциями жрёт, т.к. для неё не баг, а фича (на сколько помню). Там даже можно несколько значений вернуть, при этом, если у вызывающего есть лишние переменные, они nil'ами будут, если же их недостаёт, ряд возвращаемых значений похерится. Точно не помню (я на нём эпизодически пишу скрипты для сборки C/C++ проектов при помощи premake), но думаю с аргументами такая же ситуация. Единственное, что могу посоветовать, книгу от автора: Роберту Иерузалимски "Программирование на языке Lua" (на русском существует). Правда она для 5.3. Не знаю, но м.б. существовало издание для 5.0, но я не интересовался. У меня её 3-е издание. На крайний случай думаю можно ориентироваться на книгу, а разницу искать в и-нете.
> Ох, не уверен, что смогу помочь. С функциями жрёт, т.к. для неё
> не баг, а фича (на сколько помню).Да там всё фича. Некоторые из этих фичей можно пофиксить колупая _G, но вызовы функций можно пофиксить, разве что, собственными реализациями funcall и defun, и вызова/объявлений всех функций через них. Да и то, этот nil, который lua пихает везде по-умолчанию, нехило так будет мешать. Придётся запретить себе использовать nil как значение, и завести новый атом означающий "отсутствие значения", такой который надо указывать явно, чтобы он был передан, и соответственно тогда возникновение nil в любом месте можно будет считать ошибкой типа "попытка доступа к несуществующей/неинициализированной переменной". И я бы сделал это, но чтобы это было бы удобно использоваться, надо написать обёртки для всех библиотечных функций. И для всех функций из разных пакетов, которые я скачиваю из интернета. Опять же надо писать парсер lua, чтобы генерить эти обёртки (не писать же их вручную!), и опять же встаёт вопрос, не проще ли написать нормальный язык, который будет компилироваться в lua.
> Там даже можно несколько
> значений вернуть, при этом, если у вызывающего есть лишние переменные, они
> nil'ами будут, если же их недостаёт, ряд возвращаемых значений похерится.Да-да. А в 5.0 ещё, если использовать эллипсис, и в качестве одного из аргументов передать nil, то все последующие аргументы пропадают. Потому что lua не может отличить неинициализированную переменную от переменной инициализированной значением nil (он даже несуществующую переменную не отличает от переменной инициализированной значением nil, хотя специальными трюками его можно отучить от этой дурной привычки), а итератор по аргументам останавливается, когда найдёт nil. Я вроде читал где-то, что в более старших версиях это пофиксили, но в 5.0 это именно так.
> Единственное, что могу посоветовать, книгу от автора: Роберту Иерузалимски "Программирование
> на языке Lua" (на русском существует). Правда она для 5.3. Не
> знаю, но м.б. существовало издание для 5.0, но я не интересовался.
> У меня её 3-е издание. На крайний случай думаю можно ориентироваться
> на книгу, а разницу искать в и-нете.Да, я читал эту книгу. Первое её издание о 5.0. Это не то, что нужно. Вообще, в идеале, было бы круто что-то типа "Practical Lua" по аналогии с "Practical Common Lisp". Или "Learning Lua with entirely too many [somthing]" по аналогии с "Learning Rust with entirely too many linked lists". Что-нибудь, что берёт какую-то проблему, и разбирает разные подходы к её решению. Или что-то что берёт несколько проблем, и разбирает подходы к их решению. Доводя эти подходы до какого-то логического завершения. А этот Иерузалимски не парится совершенно, приводя в качестве примеров высосанные из пальца строки кода, которые не делают ничего полезного, кроме демонстрации фишки языка, которые не отвечают на вопрос, когда эту фишку языка уместно использовать, а когда проще обойтись без неё. Типа если читателю надо, пускай он сам выясняет это методом проб и ошибок. Но метод проб и ошибок -- это полгода программирования на языке, с очень скромным выхлопом в плане объёма рабочего кода. Зато груды нерабочих кусков кода, в процессе написания которых было выяснено, что подход X неудачен для решения проблем класса Y.
Впрочем... Может если посмотреть на более поздние издания, то там Иерузалимски исправился и придумал какие-то более реалистичные примеры? Я загляну на досуге.
Посмотри эту книжку:google.com/search?q="Lua+Programming+Gems"+2008
В ней, вроде, как раз даны примеры применения с объяснением.
Как вариант - написать внешний dll модуль на С/C#. Примеры есть в книге Иерусалимского и на сайте quikluacsharp.ru. Ещё вариант - через lua socket и json реализовать RPC. Я так связывал брокерский терминал quik c встроенным яп qlua (расширение lua 5.1) c luajit. C json/REST/http интерфейсом можно внешние модули на любом языке написать.
Стандартная библиотека у него слабая (видимо из-за ориентации на встраиваемость). А так, если Lua + стандартную библиотеку от Python, то вообще найс.
Ну так что, сделаем сборку LuaJIT ZverDVD с JSON и мультипоточностью?)))
> В качестве причин создания новой реализации Lua VM упоминается желание добиться более строгого соответствия спецификациям Lua 5.3 и предоставить удобный API для интеграции с приложениями языке Go.А может всё-таки NiH? Просто как-то не похоже на мелкомягких. Если бы ещё лицензия была бы GPLv3, я бы подумал что сегодня 1 апреля.
не NiH а методичное и неотвратимое воплащение https://ru.wikipedia.org/wiki/Embrace,_Extend,_and_Extinguish
ой. а куда делась кнопка "Редактировать"? Я ошибку поправить не могу.
Есть LuaJIT и без Microsoft
Microsoft активно пытается внедрится в сферу разработки свободного софта. Мило
а потом сертификаты требовать для фреймворка, знаем этот бесплатный энтерпрайз
> а потом сертификаты требовать для фреймворка, знаем этот бесплатный энтерпрайзПочитайте ещё про "азуре айпи эдвентедж" -- теперь там патентные билетики на оплату рэкета Микрософт. Не лицензии, не сертификаты.
Виртуалка в виртуалке, виртуалкой погоняет. плюс ещё не спешный gO, который как и та же жаба с питоном -нетормозит.
> DCLua, GoLua, Golang Lua, go-lua-vm и gluaПохоже, что go-программистам делать больше нечего - наплодили уже 7 вариантов интерпретаторов Lua. А что-нибудь другое можно на этом go писать? :)
Можно ещё попробовать на Lua интерпретатор Go написать...
Ну, сам Go легко переписали на самом же Go, так что, видать, располагает к написанию компиляторов на этом языке.
уже есть https://github.com/gijit/gi
Каждый go-программист считает нужным написать свой web-сервер. Их наверное уже за пару десятков на нём.
Программистов го? :)
fixed: Каждый гопник считает нужным написать свой web-сервер.
Да, но не у каждого выходит удобный caddyserver в три строчки делающий все что от него нужно.
> В качестве причин создания новой реализации Lua VM упоминается желание добиться более строгого соответствия спецификациям Lua 5.3 и предоставить удобный API для интеграции с приложениями языке Go.Взять lua API и сделать к нему биндинг было бы проще кажется. С учетом того, что сам lua редко меняется.
Не проше. cgo хоть и существует, но там много ограничений получается.
А с производительностью-то у поделия как?
"компилируецца очень быстро".
А компилятор go на нем еще недописали, пока непонятно что там со скоростью.
> со скоростью.Оно те надо?
Не, ты чо. Пойду ядро Linux на JS перепишу...
Опоздал.
https://copy.sh/v86/?profile=linux26
> Опоздал.
> https://copy.sh/v86/?profile=linux26
> x86 virtualization in JavaScript, running in your browser and NodeJSНе опоздал. Это не то.
Это VirtualBox переписанный на js. До ядра они пока ещё не добрались (пока не добрались).
Ни слова про производительность
> Ни слова про производительностьТак, после _слова_ "Микрософт" -- разворачиваемся и уходим.
Какая, в Красную Армию!?, "производительность?7
>> Ни слова про производительность
> Так, после _слова_ "Микрософт" -- разворачиваемся и уходим.
> Какая, в Красную Армию!?, "производительность?7Ура, товарищи[U]! https://fritzmorgen.livejournal.com/1440212.html [/U]
$SUBJ Скорее бы уже. Опять обманут.
Вижу, там четырёхглазый стремительно побеждает мировую буржуазную русофобию.
Осталось интерпретатор Го на луа запилить и пусть друг друга запускают
чего это вдруг - интерпретатор? Компилятор.
Скоро Мелкософт всё будет раздавать на шару. Какие молодцы ребята-филантропы.
еще и доплачивать будут
Я читал их финансовые отчёты. Они знают, что делают. Чем больше перетянут одеяло на себя, тем лучше для них.
> Скоро Мелкософт всё будет раздавать на шару. Какие молодцы ребята-филантропы.Да, да! Тут один мазоизвестный филантроп вложил кучу денег, чтоб завалить небелокожий мир его же брикетированным г---ом и _стать_ _с_ _этого_ ещё-о-о-о-О-О-о богаче.
https://www.ixbt.com/news/2018/11/08/bill-gejts-predstavil-u...
#таг
да ладно, у нас в каждой деревне уже километров за 100 от мкада такой.А в небелокожем мире да, одни экологические проблемы. "чего это у вас рыба вся в речке попередохла? - Э... понимаешь, тут жидкость для септиков сильно ядовитая, а сортиры (да и вообще всё) - в сильный сезон дождей заливало - они ж от уреза воды в тридцати сантиметрах (а холмы вооооон там). Ну и, вот..."
И да, это деревня (!) в стране четвертого мира. К счастью, лишенной Создателем халявных денег от продажи нефтепродуктов. По этой причине гадить за баней у них немодно.Ну ничо, гейц всех их спасет, научит дерьмо брикетировать. А рыбу они к тому моменту все равно электрификацией всю уничтожат.
>> Скоро Мелкософт всё будет раздавать на шару. Какие молодцы ребята-филантропы.
> Да, да! Тут один мазоизвестный филантроп вложил кучу денег, чтоб завалить
> небелокожий мир его же брикетированным г---ом и _стать_ _с_ _этого_ ещё-о-о-о-О-О-о
> богаче.
> https://www.ixbt.com/news/2018/11/08/bill-gejts-predstavil-u...
> #тагНу а што. Этот человек себе может позволить этим заниматься.
И вообще...
>в небольшом количестве человеческих экскрементов может находиться 200 триллионов клеток ротавируса, Билл Гейтс принёс с собой на мероприятие банку с этими самыми экскрементами.Интересно, откуда он их взял? о_о
Корпорасты весьма предсказуемы. Они помогают СПО только в тех областях, где им не угрожает конкуренция.А зачем в принципе нужны лицензии типа MIT? Никогда не понимал пользы таких лицензий как BSD, MIT. Создатели такого ПО сами не получают выгоды от своего труда и к тому же помогают корпорастам создавать коммерческие продукты на основе их кода. Раньше мне казалось, что люди отдают свои знания бесплатно, чтобы потребителям не пришлось за них переплачивать. В случае BSD мне непонятна мотивация разработчиков. Зачем бесплатно помогать проприерастам? Бесплатно помогая проприетарщикам создавать коммерческие продукты, вы помогаете только проприетарщикам и никому более. В то время как проприетарные законы постепенно ужесточаются. Проприетарщики собирают всё больше бабок, а разработчики BSD ПО такие добрые, что готовы им помочь создавать коммерческие продукты. Потому что боитесь прослыть радикалами? Возможно, кто-то рассчитывает, что корпорации будут больше вкладывать в свободное ПО. Ровно в той мере в какой необходимо для их интересов, но так чтобы свободное по не могло составить конкуренции. На благодарность проприетарщиков никогда не стоит рассчитывать. BSD - это какой-то странный альтруизм выгодный для корпораций.
У меня в воображении возникает человек, который решил помочь бедным, раздавая деньги торговцам. В конце концов вы хотите победы свободного По или нет? Если да, то зачем бесплатно работаете на корпорации.
MIT и BSD по сути помогают проприетарщикам выигрывать конкуренцию. Они как бы несамостоятельный, работающий на подхвате у корпораций продукт, поэтому они никогда не будут полноценными альтернативами проприетарным продуктам. У Linux есть хотя бы небольшой шанс, у BSD нет вообще никаких. Если бздяшники, митчики захотят сделать конкурента какому-либо проприетарному продукту, проприетарщики тут же возьмут бесплатно их код и сделают лучше - опенсос опять в пролете. Оно вам надо?
GPL лицензия жестока и бескомпромиссна, да. Но это жестокость конкуренции на рынке. Когда проприетарщики вешают огромные штрафы на домохозяек, скачавших пиратский фильм, никто из проприетарных тупых ботов не вопит, что они упоролись. А если ты сторонник GPL значит ты псих.
На мой взгляд, они делают это, чтобы их имя упомянули в каком-нибудь успешном коммерческом продукте. А там может и работу предложат. Кроме как почесать ЧСВ и потанцевальные перспективы иных поводов быть не может.С другой стороны, корпорации могут выпускать код под такими лицензиями без особых проблем, когда они продолжают дорабатывать и использовать код в своих продуктах. Если другая сущность возьмёт их код, она автоматом попадёт в зависимость. И если та в свою очередь доработает код, она ещё может и вернуть наработки, которые принесут пользу первым. Неплохая стратегия развития на самом деле.
>И если та в свою очередь доработает код, она ещё может и вернуть наработки, которые принесут пользу первым.Если бы ТА, например, была бы моя, то да, вернула бы наработки, но вот только под Copyleft.
Если проект открыт под MIT или BSD, проще и дешевле нанять авторов проекта для решения нужной тебе задачи, чем тратить время на то, чтобы вникнуть в детали работы. Наличие открытого кода не означает, что порога вхождения в кодовую базу нет. На всё нужны ресурсы.
https://lionet.livejournal.com/31952.html
Я думаю тут много вариантов:
1) Некоторый самопиар для вероятного последующего попадания в какие-нибудь годные конторки на работу.
2) Заброшенные проекты. В этом случае авторам уже вообще по бую. Что хотели от этого кода, они уже получили (или не смогли получить и забили).
3) Отпачковывающиеся проекты. Писала компания N какие-то продукты. А потом смотрит: годный фреймворк выходит. Допилили до отдельного проекта, подтянули у себя куда надо. А далее что? Если он не критичный супер секретный компонент системы, и если лень его как-то платно продвигать, почему бы и не выбросить в опенсорс? Для опенсорса - это потенциально качественно написанный продукт. Для компании - орда халявных тестеров. Симбиоз прям. Кстати, смотрю частое явление у таких гигантов, как Google, Яндекс, Facebook и др.
а разве не проще портировать нативный lua?зачем пускать луа через ж* гоу? О_О
Потому что EEE.
У Cgo проблемы с производительностью. Оно не для всего применимо.
>проблемы с производительностью. Оно не для всего применимо.Ога, это не Микрософт тормозит, а гугле-Гоу и нище-Луа. </точняк>
Вполне веротяно, что они хотят использовать всю силу асинхронности GO?
бесплатный хинт микрософту - срочно нужен ассемблер написанный на js
Хм. А зачем Микрософт не та компания что бы делать что то просто так и затем выкинуть, или ее Гуугл заразил.
> Хм. А зачем Микрософт не та компания что бы делать что
> то просто так и затем выкинуть, или ее Гуугл заразил.Весь "бесплатный" выхлоа MS Research -- химоружие на головы интернетовских фрифагов.
Нетоксичный, полезный, двигающий Цивилизацию вперёд выхлов вемирно известных учёных, работающих в MS Research, быстро-быстро-быстро патентуется всемирно "известными" манагерами (каптёр-стайл -- "чужое, взять-взять!") из той же лавочки и переходят в разряд боеприпасов для п.1. и для фабрики тролей Микрософта.
Вурдалака никто не заразил, не беспокойтесь. К ним не пристаёт.
Что это за такое? И зачем? И зачем тратить на это время?
> Что это за такое? И зачем? И зачем тратить на это время?Похейтить мальца в каментах же, расслабиться.
Тройной изврат - Микрософт, Lua и Го.
> Тройной изврат - Микрософт, Lua и Го.Безмозглых поклонников "чего-то новенького", "2108й на дворе" и "прогрессс не осстановить" хоардят и целе-аудиторят. Чем больше они вляпались, замарались и неосилили -- тем скорее они вспомнят название того магазинчика, где надо тариться, чтобы в конце концов "всё получилось"... #я-ниасилил-микрософт
> отсутствует поддержка сопрограммСтранное решение. Когда понадобится добавить, придётся половину старого кода выбросить, а другую — с нуля переписать.
сопрограммы довольно базовая часть Lua .если они не сделали их -- то спрашиается -- на кой хрен было вообще делать Lua
> сопрограммы довольно базовая часть Lua .
> если они не сделали их -- то спрашиается -- на кой хрен
> было вообще делать LuaМиткросоуфт Рисёрч всё чего-то ни рисёурчит, да рисёурчит.
А всё бейсик получается.