The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Релиз языка программирования Lua 5.4

30.06.2020 11:48

После пяти лет разработки доступен релиз Lua 5.4, быстрого и компактного скриптового языка программирования, получившего большое распространение в качестве встраиваемого (например, для определения конфигурации или для написания расширений). Код интерпретатора Lua написан на языке Си и распространяется под лицензией MIT.

Lua комбинирует простой процедурный синтаксис с мощными возможностями описания данных через использование ассоциативных массивов и расширяемой семантики языка. В Lua используется динамическая типизация, языковые конструкции преобразуются в байт-код, выполняющийся поверх регистровой виртуальной машины с автоматическим сборщиком мусора. Сам интерпретатор оформлен в виде библиотеки, легко интегрируемой в проекты на языках Си и Си++.

Основные новшества:

  • Реализован новый режим работы сборщика мусора - "generational", который дополнил собой ранее доступный инкрементальный режим сборки мусора. Новый режим подразумевает более частый запуск сокращённого обхода, охватывающего только недавно созданные объекты. Полный обход всех объектов выполняется только, если после сокращённого обхода не удалось добиться желаемых показателей потребления памяти. Подобный подход позволяет достигнуть более высокой производительности и уменьшить потребление памяти в ситуации хранения большого числа объектов, живущих короткое время.
  • Добавлена возможность определения постоянных переменных, определяемых с атрибутом "const". Подобные переменные могут быть назначены только один раз и после инициализации уже не могут быть изменены.
  • Добавлена поддержка переменных "to-be-closed", которые назначаются при помощи атрибута "close" и напоминают постоянные локальные переменные (с атрибутом const), отличаясь от них тем, что значение закрывается (вызывается метод "__close") при любом выходе из области видимости, например, после нормального завершения блока, перехода при помощи break/goto/return или выхода при возникновении ошибки.
  • Тип "userdata", предоставляющий возможность хранения в Lua-переменных любых Си-данных (представляет блок данных в памяти или содержит Си-указатель), теперь может содержать несколько значений (иметь несколько метатаблиц).
  • Представлена новая реализация функции для генерации псевдослучайных чисел - math.random.
  • Добавлена система предупреждений, которые определяются при помощи выражения warn и, в отличие от ошибок, не влияют на дальнейшее выполнение программы.
  • Добавлена отладочная информация об аргументах функций и значениях, возвращаемых в операторе "return".
  • Предложена новая семантика для перебора целых чисел в циклах "for". Расчёт числа итераций производится до начала цикла, что позволяет избежать переполнения переменной и зацикливания. Если начальное значение больше ограничивающего, то выводится ошибка.
  • В функцию 'string.gmatch' добавлен новый необязательный аргумент 'init', определяющий с какой позиции начать поиск (по умолчанию с 1 символа).
  • Добавлены новые функции 'lua_resetthread' (сбрасывает поток, очищает весь стек вызовов и закрывает все "to-be-closed" переменные) и 'coroutine.close' (закрывает сопрограмму и все связанные "to-be-closed" переменные).
  • Функции преобразования строк в числа перемещены в библиотеку "string".
  • Вызов функции выделения памяти теперь может завершиться неудачей в случае сокращения размера блока памяти.
  • В функцию 'string.format' добавлена поддержка нового спецификатора формата '%p' (указатель, возвращаемый lua_topointer).
  • В библиотеке utf8 обеспечена поддержка кодов символов с номерами до 2^31.


  1. Главная ссылка к новости (https://www.lua.org/news.html...)
  2. OpenNews: Релиз http-сервера Apache 2.4.38 с объявлением стабильным модуля mod_lua
  3. OpenNews: Компания Microsoft опубликовала реализацию Lua VM, написанную на языке Go
  4. OpenNews: Релиз языка программирования Lua 5.3
  5. OpenNews: Выпуск LuaJIT 2.0.3, JIT-компилятора для языка Lua
  6. OpenNews: Интегрированная среда разработки для языка Lua доступна в виде отдельного продукта
Лицензия: CC-BY
Тип: Интересно / Программы
Короткая ссылка: https://opennet.ru/53259-lua
Ключевые слова: lua
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (105) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:53, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > Тип "userdata", предоставляющий возможность хранения в Lua-переменных любых Си-данных

    Что это значит? Как работает?

     
     
  • 2.4, barmaglot (??), 12:06, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Полезная штука https://www.lua.org/pil/28.1.html
    На самом деле в userdata удобно хранить указатели на класс, и для lua прописывать метаданные/методы, так чтобы работать с подобными С++ классами как с нейтив типами в lua.
     

  • 1.2, pin (??), 11:56, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Подобные переменные могут быть назначены только один раз и после инициализации уже не могут быть изменены.

    Для чего это на практике?

     
     
  • 2.3, Аноним (3), 12:00, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Для встраиваемых решений (на всяких мелкоконтроллерах, где flash )
     
     
  • 3.34, ann (??), 16:17, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да, скриптовой язык, сборка мусора, на мелкоконтроллерах.

    Давай тебе такую трансмиссию поставим?

     
     
  • 4.47, Аноним (47), 18:51, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Мелкоконтроллеры давно уже не такие мелкие. Про NodeMCU не слышал?
     
     
  • 5.55, ann (??), 22:34, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Про эту не слышал. Про то что есть и мелкие которые не мелкие знаю. Но в нормальных (которые отвечают за что-то серьёзное и критичное) как небыло сборщиков мусора, да и вообще работы с динамической памятью, так и нету.
     
     
  • 6.68, draw1 (?), 00:03, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Со "скриптами внутри" его (сборщика мусора) тоже не появится. Он же будет только внутри виртуальной машины, а весь окружающий нативный код как был статическим, так и останется (а именно он в нормальных системах делает всё критичное). Более того, ресурсы для виртуальной машины тоже делают статическими (с точки зрения вызывающего нативного кода). И если есть часть ресурсов под виртуалку заведомо read-only, то это ещё и ресурсов для нативного кода сэкономит (и уж точно это будет чистая статика).

    В общем, если знать меру и внимательно "следить за руками" (а во встраиваемых системах без этого никак невозможно), то вполне себе применяют и в серьёзных и условно*** критичных системах.

    *** Там больше сложности не в применении скриптования как такового, и тем более не в сборщике мусора внутри виртуалки (при правильной архитектуре вообще довольно пофиг что там внутри) и т. п. Там больше в доказательстве отсутствия влияния всего что связано со скриптами (в основном с самой реализацией и работой виртуальной машины) на тот нативный код, который делает "всю важную работу". Это непросто, поэтому для сильно-сильно критичных штук реально дешевле не использовать совсем. Дешевле в плане всяких сертификаций - не использовать скрипты, дешевле (в некоторых случаях) в плане разработки и всего остального жизненного цикла - использовать скрипты. На сильно критичных штуках удорожание сертификационных моментов запросто может сильно перевесить все "плюшки" от скриптов, поэтому идею скриптования хоронят часто сразу, прямо на уровне идеи.

    В общем и целом (в среднем по больнице) вы правы, но дело не в сборке мусора внутри виртуалки...

     
  • 5.56, ann (??), 22:37, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Почитал что за оно. Для другой ниши. В ту же трансмиссию её не засунут. или какой VCU
     
     
  • 6.99, Аноним (47), 19:32, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну да, не для трансмиссии (хотя боюсь гадать, что там будет через десяток лет). Но мелкоконтроллеры ведь не только в трансмиссии, да?
     
  • 3.58, Lua Rocks (?), 23:06, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Не для этого встраивания. Для встраивания в программы в качестве скриптового языка для конфигов или "бизнес-логики".
     
     
  • 4.62, draw1 (?), 23:35, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И для такого встраивания тоже! Причем, примерно для таких же целей! Само собой, в микроконтроллеры, которые не такие уж "микро", но ресурсов всё равно слишком много там обычно не бывает.

    Если весь realtime и всё критичное делать нативно, а именно всякую конфигурацию, сервисные функции и прочее второстепенное (НЕ mission-critical) выносить в скрипты (разумеется, с соблюдением правила, что даже полный отказ всего скриптового не приводит к отказу основных функций системы), то вполне себе делают.

    Удобно тем, что писать скрипты в этом случае могут совсем другие люди, с другой квалификацией (ведь нет риска что-то важное сломать), тестировать всё это проще (и существенно дешевле), ну и обновлять скрипты, не трогая основную программу - это приятно. Например, исправляются 100500 мелких придирок по сервисному веб-интерфейсу, бесконечная череда совещаний и обсуждений по поводу цветов, шрифтов и расположения меню, ...а основная программа не меняется - дешево, просто, без участия квалифицированных кадров, не надо каждый раз заново проводить полный цикл испытаний...

     
     
  • 5.64, СССР (?), 23:50, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нет, имется в виду для встраивания в программы на с/c++
    а вот про это все верно "Удобно тем, что писать скрипты в этом случае могут совсем другие люди, с другой квалификацией"
    При создании QML использовалась встраиваемая js машина. По поводу JSengines, то их много реализаций, весьма шустрые как пример:
    http://chaiscript.com/
    http://falconpl.org/
    https://github.com/cesanta/v7
     
     
  • 6.69, draw1 (?), 00:08, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > нет, имется в виду для встраивания в программы на с/c++

    Так нативный код для встраиваемых систем чаще всего и пишут на c/c++. Туда и встраивают виртуалки (js, lua, squirrel,...). В чем противоречие-то? Про прям аппаратное встраивание lua вроде никто здесь речи и не заводил...

     
     
  • 7.71, draw1 (?), 00:28, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И в "железках" тоже бывают конфиги разной степени "умности", "бизнес-логика" и много чего ещё, для чего технически удобно можно было бы использовать скрипты.

    Встраиваемое в эти железки ПО пишут на с/с++. При наличии достаточных аппаратных ресурсов (память, производительность,...) нет больших проблем встроить во встраиваемое ПО (то, которое на с/с++) движок js/lua/..., создать и запустить виртуалку, закачать в неё байт-код (можно через компиляцию "на месте", можно скомпилированный заранее) и поехали...

    Чё-то не понимаю я этих комментариев вида "нет, не для такого встраивания". В чем разница-то?

     
     
  • 8.77, СССР (?), 01:16, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ну смотри из вики Встра 769 иваемая систе 769 ма встро 769 енная систе 769 ... текст свёрнут, показать
     
     
  • 9.78, СССР (?), 01:23, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    т е я не кого не хочу обидеть, но такое понимане расставляет все точки, и нам б... текст свёрнут, показать
     
  • 9.80, draw1 (?), 01:57, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я прекрасно понимаю в чем разница между встраиваемым ПО ПО для встраиваемых сис... текст свёрнут, показать
     
     
  • 10.87, СССР (?), 09:07, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    можно да, по сути запилил API для квадракоптера, и уже на луа или жс описать как... текст свёрнут, показать
     
  • 7.76, СССР (?), 00:57, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    для всяких IoT да, на с/c++, но все же добавлять в интернет вещь встраиваемую скриптовую машину не совсем гуд. Лучше будет если часть логики будет переписана на с/c++, т.к. поведение интернет вещи (ну или там микрокомпьютера) все таки ограничено конкретными задачами и реакциями на них. А вот на против десктоп, там функционал может меняться в зависимости от предпочтений пользователя. или вот например нодаjs, это ведь встроенный webserver + встроенный движок js. Т.е вы можете один раз создать реализацию простых операций, сделать видимыми функции, классы для встраиваемого движка и вуаля, вот вам нода js или любая другая модная штука ) пользователи пишут на js логику используя функционал написанный на c/c++.
    В нашем случае используют lua для расширения пользовательского функционала по обработки чего либо. ну вот например мы же не знаем за ранее как пожелает обработать заказчик ту или иную ситуацию. Мы предоставляем некий API, а клиент уже сам на lua описывает поведение системы при поступлении той или иной информации.
    Это очень удобно уверяю Вас. И это действительно очень мощная штука.
     
     
  • 8.79, draw1 (?), 01:46, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну если трактовать термин IoT максимально широко Есть низкоуровневая логика р... большой текст свёрнут, показать
     
     
  • 9.88, СССР (?), 10:17, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Все верно говоришь На самом деле, это очень круто когда реаизация низкоуровнево... текст свёрнут, показать
     
  • 3.63, СССР (?), 23:38, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нет, не для этого. Этот язык в том плане встраиваемый, что встраивается в код с/c++ и може предоставлять в выполняемый скрипт доступ к переменным, функциям, объектам, классам (т.е. динамически создавать объекты на базе классов).
     
  • 2.5, Аноним (5), 12:06, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Если это как в си, то это сахарок для просьбы по возможности не изменять автоматически. Для удобства кодера, не более.
     
     
  • 3.65, СССР (?), 23:51, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    это технология позволяющая решать целый класс задачь
     
  • 2.19, vad (??), 13:47, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Для JIT'a: Constant-folding. Ещё один побочный эффект: упрощение работы GC. Уменьшение криворукости (попробывал Lua Demo 5.4, присвоение к константе выдает ошибку уже при компиляции, а не в рантайме)

    IPONWEB вообще себе кастомную VM сделали пару лет назад и для них константные таблицы, которые не обходятся GC, увеличение скорости раза 2+ давали. Но константы+таблицы не относятся к ванильному Lua, это так, для примера.

     
  • 2.20, Нанобот (ok), 13:47, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    способ защитить себя от ошибок
     
  • 2.60, СССР (?), 23:24, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    для расширения функционала программы на с/с++ на более абстрактном уровне. так же для создания "умных" конфигов.
     
  • 2.105, anonymous (??), 12:00, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для написания безопасного кода без необходимости каждый раз копировать значения.
     

  • 1.6, Аноним (6), 12:11, 30/06/2020 Скрыто модератором [﹢﹢﹢] [ · · · ]
  • –8 +/
     
     
  • 2.7, mos87 (ok), 12:14, 30/06/2020 Скрыто модератором
  • +/
     
     
  • 3.8, TormoZilla (?), 12:25, 30/06/2020 Скрыто модератором
  • +6 +/
     
  • 2.9, Аноним (9), 12:31, 30/06/2020 Скрыто модератором
  • +2 +/
     

     ....ответы скрыты модератором (3)

  • 1.10, nebularia (ok), 12:38, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А в генту до сих пор 5.1 в stable XD

    https://packages.gentoo.org/packages/dev-lang/lua

     
     
  • 2.11, Аноним (11), 12:45, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    5.1 ещё долго будет самой распространённой версией Lua, т.к. LuaJIT поддерживает только его (с парой-тройкой обратно совместимых фичей, бэкпортированных из 5.2)
     
  • 2.17, Ilya Indigo (ok), 13:32, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    DC-хабы использовали её.Тогда других версий и не было.
     
  • 2.22, Аноним (22), 13:48, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Генту уже давно протух. Весь свежак в арче в ауре.
     
     
  • 3.26, Аноним (5), 14:27, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не совсем. Там есть 9999 БЕЗ немодерируемой ауропомойки с вирусами. Не далее чем вчера, я хотел скачать cppcheck, а есть версия только двухлетней давности. Но это не очень страшно — во первых, ничего критического в новых версиях не случилось, а во вторых, некоторый софт в принципе можно собирать только из дев ветки (где вся движуха). Скажем, на прошлой неделе я собрал smatch из гита, релизов там не было уже 10 лет и свежая версия не имеет релизов.
     
     
  • 4.32, Аноним (22), 16:11, 30/06/2020 Скрыто модератором
  • –5 +/
     
     
  • 5.35, Аноним (5), 16:37, 30/06/2020 Скрыто модератором
  • +2 +/
     
     
  • 6.45, Lex (??), 18:19, 30/06/2020 Скрыто модератором
  • –2 +/
     
     
  • 7.50, Оуноуним (?), 21:08, 30/06/2020 Скрыто модератором
  • –1 +/
     
     
  • 8.85, Lex (??), 08:10, 01/07/2020 Скрыто модератором
  • –1 +/
     
     
  • 9.86, Vavan (?), 08:49, 01/07/2020 Скрыто модератором
  • +2 +/
     

     ....ответы скрыты модератором (10)

  • 1.12, Аноним (12), 12:46, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Я как то не смог без поллитра разобраться с метатаблицами и какой то банальной операцией над ними...ну это я допустим неосилил, хотя зачем мне осиливать, когда куча других более вменяемых встраиваемых скриптовых языков есть? Я лучше раст поосиливаю, если делать нечего будет...

    Ну и обратная совместимость. Оператор goto, например, только в 5.3 появился. Не знаю даже баг это или фича. В общем, такое себе поделие...

     
     
  • 2.13, Аноним (13), 13:03, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +6 +/
    чувак, я не осилил твой поток сознания, пойду в туалет поосиливаю
     
  • 2.28, Ненавижу SJW (?), 15:17, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Оператор goto, например, только в 5.3 появился.

    Лучше бы вообще не появлялся. Лучше бы его выдавали по N штук только по специальному запросу разработчикам в виде какой-то библиотеки, это касается любого языка.

     
     
  • 3.29, Ненавижу SJW (?), 15:19, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    По N штук на проект, в смысле
     

  • 1.15, Аноним (15), 13:11, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Долго ли ещё придётся использовать https://github.com/starwing/luautf8?
     
  • 1.16, Аноним (16), 13:26, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нормальной многопоточности нет, а библиотеки не под все операционки портированы.
     
     
  • 2.70, Аноним (70), 00:15, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    там вообще многопоточности нет (multithreading).

    в каждой нити (внутри C, куда ты встраиваешь Lua) -- предполагается создание независимого контекста Lua.

    каждый контекст Lua работает и знает только про свою нить. ни о каких нитях внутри Lua даже подумать нельзя.

    хотя конечно забавно что в самом LuaAPI есть внутреннее понятие Thread -- но оно о корутинах, а не о нитях.

     
  • 2.75, Аноним (70), 00:54, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    кстати а зачем тебе все операционки?

    ты сам-то какую операционную систему используешь?

    вот попробуй для неё и сделай годную программу. это не так просто. а уж сделать годную программу под "все" операционки -- вообще почти не возможно.

     
     
  • 3.90, Аноним (16), 13:01, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас Debian, думаю поставить вместо него одну из BSD систем. Речь не про годные программы, а саму возможность. Хотелось использовать Lua для скриптования своих простых задач, но в BSD не портированы библиотеки многопоточности для Lua.
     

  • 1.18, Аноним (18), 13:40, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    lua я люблю тебя! Хочу от тебя zlib (лицензию)
     
  • 1.21, Аноним (22), 13:47, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    На безрыбье и Луа ЯП.
     
  • 1.27, Nellex (?), 15:15, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вместо const лучше бы нативное копирование таблиц добавили, надоел этот велосипед а-ля deepcopy.
     
  • 1.30, ann (??), 15:59, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А эти где? Которые "Не на расте значит фу, ненадо"
     
     
  • 2.31, Аноним (22), 16:08, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Школу закончили пишут на плюсах.
     

  • 1.33, Аноним (33), 16:15, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Подскажите-ка в какой БЗД-е по умолчанию используют Луа? В НетБЗД-е?
     
     
  • 2.37, Аноним (5), 16:53, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Подскажите-ка в какой БЗД-е по умолчанию используют Луа? В НетБЗД-е?

    В ядре? А зачем тебе по-умолчанию? Собери для линукса.

     
  • 2.46, arfh (?), 18:21, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Да, в ней, для драйверов.
     
  • 2.66, Аноним84701 (ok), 23:52, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Подскажите-ка в какой БЗД-е по умолчанию используют Луа? В НетБЗД-е?

    В загрузчике фри заменили Forth на сабж.


     

  • 1.36, user90 (?), 16:51, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    В общем-то есть Perl.. вот честно, не оценил фичей Lua. Причем это не критика, а любопытство)
     
     
  • 2.38, Аноним (5), 16:54, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > В общем-то есть Perl.. вот честно, не оценил фичей Lua. Причем это
    > не критика, а любопытство)

    На перл ты не заскриптуешь игровой движок. Или весь движок не напишешь, как на луа. Или питоне.

     
     
  • 3.39, user90 (?), 16:57, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > На перл ты не заскриптуешь игровой движок

    Хм, такой задачи никогда и не было.. но почему нет? И попроще, если можно :)

     
     
  • 4.41, Аноним (5), 17:02, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Потому что делать это будешь не ты, замечательный профессиональный перл разработчик с 30 летним опытом, а обезьянка-формошлёп, нанятая по случаю. Скриптование самая скучная и унылая часть геймдева, которая тем не менее неплохо оплачивается (если это отдельная должность, часто совмещают). Чем проще и примитивней, тем лучше. И луа вполне укладывается в подобную парадигму, где код пишут не программисты.
     
     
  • 5.43, user90 (?), 17:05, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ок, с этой точки зрения понятно.
     
  • 5.44, Аноним (44), 17:42, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Есть же питон, который тоже встраивается, крайне популярен, имеет дцатиллион библиотек и понятен обезьянкам.
     
     
  • 6.73, Аноним (70), 00:36, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Python хуже встраивается чем Lua и вообще Python НЕ похож на встраиваемый язык ... большой текст свёрнут, показать
     
  • 3.40, 1 (??), 17:00, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Всё что надо заскриптуешь - и даже чего не могут ни луа ни питон.

    жЫрный Perl просто ... Так запросто не встроишь ...

     
     
  • 4.42, Аноним (5), 17:04, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Питон же встраивают. Даже джаву встраивали (в качестве скриптового языка). А уж жс и подавно. Вот php и perl я не встречал.
     
  • 4.48, Sarcastic scutosaurus (?), 19:02, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Так запросто не встроишь ...

    https://perldoc.perl.org/perlembed.html

     
  • 2.59, anonymous yet another (?), 23:24, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Размер имеет значение. У решений на Lua --- сильно компактнее.
     
     
  • 3.74, draw1 (?), 00:48, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Размер - это часто важно, но и помимо размера есть преимущества.

    Удобная, простая, статическая линковка без внешних зависимостей, без необходимости иметь набор доп библиотек, без необходимости иметь файловую систему с установленной системой модулей/пакетов и т. п.

    Не то чтобы для встраивания языков типа perl/python это прям всё невозможно... но даже если и возможно, то НАМНОГО сложнее и более ресурсоёмко. Ну и не очень понятно зачем встраивать такие махины внутрь, может тогда проще наоборот - вынести часть в расширения на С/С++, а основным "запускателем" оставить сам perl/python...

    Если именно lua как язык не очень нравится чисто синтаксически, то есть другие варианты с таким же простым встраиванием (js, squirrel,...). Некоторые из них даже по байт-коду совместимы с виртуальной машиной lua (ну по крайней мере раньше, вроде, такие попадались, если не путаю).

     
  • 2.92, Аноним (92), 13:50, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Луа намного быстрее и ffi в разы проще, когда надо что-то сишное дернуть.
     

  • 1.49, Главный Вопрошающий (?), 20:05, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ, объясните мне, если не сложно конечно, почему LUA в разработке игр, как скриптовый язык, прижилась больше, чем Питон например? Что в LUA такого, за что его любят разработчики игр?
     
     
  • 2.52, Аноним (52), 22:01, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    потому что для встравания lua в основе достаточно одной dll-ки. И потому что lua самый шустрый из скриптовых.
     
     
  • 3.61, anonymous yet another (?), 23:26, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    + хорошая и стабильная увязка с C в обе стороны.
     
  • 3.81, draw1 (?), 02:05, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А можно и вообще без dll-ки - статически влинковать прямо в исполняемый код. А такое гораздо проще, например, портировать на другие платформы (не везде есть dll-ки, so-шки да и вообще файлы в обычном понимании этого слова).
     
  • 2.53, Ordu (ok), 22:05, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я могу лишь предположить, что дело в том, что lua исходно создавалась как язык для встраивания в приложения. Python же создавался как самостоятельный интерпретатор. Благодаря этому lua проще воткнуть в свой бинарь и запускать скрипты прям из C'шного кода. Я не думаю, что с пайтоном там какие-то непреодолимые проблемы так сделать, но с lua, мне кажется, проще. И это одна из основных маркетинговых фишек lua, насколько я понимаю.
     
  • 2.72, funny.falcon (?), 00:33, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Встраивать Lua намного проще, т.к. он имеет минималистический api и не даёт шаловливым рукам отстрелить себе ногу (более-менее).

    Кроме того, если не массировать строки (а в играх их редко массируют), то Lua чаще всего заметно быстрее питона.

    Но как язык Lua конечно же говно в сравнении с питоном.

     
     
  • 3.94, Аноним (92), 13:53, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Луа дает кучу возможностей отмотать себе веревки, чтобы повеситься.

    Как язык луа абсолютно прекрасен. Но не для средних умов, в отличие от питона.

     
     
  • 4.95, funny.falcon (?), 16:51, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как язык, Lua, после тесного знакомства, лучше только чем Javascript. Python намного приятнее.

    Но вот api для встраивания в Lua максимально bulletproof.

     
  • 2.83, GentooBoy (ok), 03:05, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что в базовом виде впиндюриваеться за пару часов в си/си++ проекты.
    Дебажить куда удобней чем здоровенный питон.
     
  • 2.93, Аноним (92), 13:51, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что в геймдеве не используют тормозные языки программирования. Deal with it.
     

  • 1.51, Аноним (52), 21:56, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот блин почему не луа, а питон? Потому что бразильцы?
     
     
  • 2.84, Аноним (84), 06:09, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Гвидон математик он танцевать не умеет, бразильцы создали Луа под звуки Ламбады.
     

  • 1.54, Аноним (54), 22:28, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    им дали angelscript - нет, не хотим, хотим жрать деерьмо.
    и lua - самое гадкое из всех.
     
     
  • 2.57, Сталин (?), 22:52, 30/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Чем он лучше ECMAScrilt? Если скриптовый язык и встраивать - то его, ибо в браузерах он работает с jitом и нативно.
     
  • 2.82, draw1 (?), 02:40, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > им дали angelscript - нет, не хотим, хотим жрать деерьмо.
    > и lua - самое гадкое из всех.

    Вот только lua появился на 10 лет раньше и к тому времени уже плотно занял нишу и был обкатан в тысячах программ. Не все склонны всё бросать и бегом ломиться на новое, модное, блестящее...

    Вопрос (был?) не в достоинствах/недостатках языков. Ровно тоже самое и про JavaScript vs Lua. Изначально были совершенно разные ниши и разная доступность. И там те же 10 лет (если не больше) преимущество lua в нише простого встраивания во всё что угодно. Плюс ещё стереотипы про js...

     
  • 2.102, Аноним (102), 19:49, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ты бы в вопросе сначала разобрался что-ли. в твоем ангельском скрипте даже колжур нет
     

  • 1.67, СССР (?), 23:57, 30/06/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    интересно посравнивать скорость итп )
    http://chaiscript.com/
    http://falconpl.org/
    https://github.com/cesanta/v7

     
     
  • 2.100, Аноним (47), 19:41, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Посравнивай, разрешаю.
     

  • 1.89, economist (?), 11:22, 01/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Есть шикарный юзкейс применения и сравнения скорости двух языков LUA и Python в одной программе "реального времени" - популярном, почти бесплатном музыкальном мультиплатформенном (MacOS/Win/Lin) редакторе/студии DAW (dig. audio workshop) Reaper, в которой встроена IDE для LUA/Python.

    API Рипера содержит >1k команд и методов, и т.к. это музыка, - любая задержка DSP-обработки >5 миллисекунд будет слышна как недопустимый щелчок. И очень здорово что оба ЯП абсолютно равнозначны по набору реализованных команд и одинаковы быстры в работе, но LUA грузит ЦП все же меньше на 40%. Потому и репы кода 5:1 в пользу LUA.

    Можно сказать что LUA в Reaper стал тем, чем стал VBA в Excel, то есть "волшебным огнем", постепенно выводящим DAW за 60 USD на топовые места по популярности среди других DAW, стоящих от 300 до 3000 USD.    

     
  • 1.91, Аноним (92), 13:49, 01/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Луа - лучший язык и луаджит пророк его.
     
  • 1.96, Аноним (96), 18:02, 01/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Будте ли когда-нибудь Promise и async/await?
    Когда будут массивы и словари отдельно?
    Очень расстраивает реализация tables{}.
     
  • 1.97, Аноним (97), 18:08, 01/07/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ребята, есть смысл учить? Работу найти получится? Что вообще можно писать и где его в web применяют?
     
     
  • 2.101, Аноним (47), 19:44, 01/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > есть смысл учить?

    Есть, хотя — что там учить-то…

    > Работу найти получится?

    Получится, если хотя бы сишку ещё осилишь.

     
  • 2.103, Аноним (92), 02:47, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если задаешь такие вопросы - в профессии тебе делать нечего. В лучшем случае как-то протолкаешься 2-3 года и перейдешь в менеджеры.
     
     
  • 3.108, ss (??), 16:09, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А что не так в этих вопросах?

    Это совершенно нормальные вопросы которые ничего не говорят о дальнейшей судьбе человека как профессионала на выбранном поприще.

    Или человек должен узнать ответы на эти вопросы...каким то чудодейственным способом? Или иметь врожденный инстинкт который позволил бы не задаваться этими вопросами?

     
  • 2.104, economist (?), 09:21, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Есть смысл cначала выучить Python, как универсальный и c вдесятеро большим числом вакансий и применений. LUA позже зайдет...

    Python в обычной жизни среднего предприятия заменяет полностью или на 80%:

    Bash
    CMD
    Perl
    PowerShell
    VBA
    StarBasic
    1C
    SQL

    При этом шпаргалка по синтакису Python помещается на 2-х страницах А4, а у LUA - на 1-й :-)

     
     
  • 3.106, ss (??), 15:48, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    я чтото пропустил этот эпический рывок вперед... а в какой версии платформы 1с был встроен питон нативно вместо родного dsl ?
     
  • 3.107, ss (??), 15:51, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    а оракл в какой версии переполз с pl/sql на питон???
     
     
  • 4.109, economist (?), 18:29, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ни в какой никто и никуда не переползал. Мы же за обобщения и синтез? Следите за руками:

    Все 100% IT-работ на "среднем предприятии (с)" состоят из 3-х сфер работ (в %% - трудозатраты):
    - 50% сисадминства с дотой/CS/хабром/3дньюс/4пда вперемешку
    - 30% эникейства/QA c телефоном или сменой картриджей у красивых девочонок в бухии
    - 20% прикладной автоматизации (тех самых 1C/VBA/PL)

    Python как "клей" позволяет самым легким путём автоматизировать задачи из первых двух сфер 50+30=80%. Да и в оставшиеся 20% он отчасти вхож, поскольку в состоянии настолько повысить скорость разработки, что, скажем, приводит к следующим кейсам. Положим мне нужен сводный отчет из трех уже имеющихся в 1С (к это задаче сводится 80% всех хотелок бухов). И есть 2 пути решения:

    Путь 1-й: Написать за неделю ТЗ для IT, ждать месяц, исправлять баги 2 недели. Итого 1,8 мес.

    Путь 2-й: Написать самому за 1 неделю без ТЗ на Python, исправлять баги самому 1 неделю. Итого 0,5 мес.

    И хотя я сам ратую за 1-й путь с ТЗ, но беда в том что за 2 месяца любая острая проблема на "среднем предприятии (с)" утрачивает остроту, потому что обязательно появляется совсем новая, острейшая, и все силы бросаются на неё.

    Поэтому 2-й путь хоть и неправильный, но хоть что-то дающий в плане пользы.

    На должность ЯП-"клея" претендовали многие языки: Bash, PowerShell, VBScript, Perl - но теперь ясно что они уступают Python. Поскольку из него незазорно дернуть любую консольную утилиту, легко перехватить вывод или файл, организовать перебор файлов в папках с рекурсией, дернуть SELECT из любой БД/AD... То есть дописать все остальное проще и быстрее на Python, чем на зоопарке ЯП.

     
  • 4.110, economist (?), 18:41, 02/07/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и чтоб разговор поддержать: с 2015 г. Oracle и Microsoft странными, непостижимыми отказами в продажах и обслуживании, в блокировках серверов обновлений итд (более известными как "поддержка санкций") - сократили число своих клиентов в РФ в ~2 раза.

    Половина клиентов (это не "средние, а чуть "крупнее" предприятия) - не умерли, не бросили 1С, а  перевелеи её на свободный RDBMS PostgreSQL, а там PL/Python, в принципе, делает свои 80% задач.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру