URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 138747
[ Назад ]

Исходное сообщение
"Доступен язык программирования Lua 5.5"

Отправлено opennews , 23-Дек-25 00:02 
После пяти лет разработки доступен релиз Lua 5.5, быстрого и компактного скриптового языка программирования, получившего большое распространение в качестве встраиваемого языка для определения конфигурации и для написания расширений. Код интерпретатора Lua написан на языке Си и распространяется под лицензией MIT...

Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64476


Содержание

Сообщения в этом обсуждении
"Доступен язык программирования Lua 5.5"
Отправлено Недоэксперт , 23-Дек-25 00:04 
а continue так и не добавили )

"Доступен язык программирования Lua 5.5"
Отправлено anonymos , 23-Дек-25 02:06 
Не благодарите )

for line in file:lines() do
    if not line or line == '' then goto continue end
    
    --//---------------//--
    --// Ваш супер код //--
    --//---------------//--

    ::continue::
end


"Доступен язык программирования Lua 5.5"
Отправлено Абра , 23-Дек-25 03:22 
Goto можно?)

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 00:05 
через одного с ним работали, либо сталкивались

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 00:07 
Почти во всех реальных проектах с Lua люди используют LuaJIT, так что полезность данного релиза, к сожалению, не такая большая.

"Доступен язык программирования Lua 5.5"
Отправлено Xasd9 , 23-Дек-25 01:50 
тык они (люди) могут и Python и PHP использовать… вопрос-то не в этом.

LuaJIT это говвно на палке. а Lua (обычное) — это конфетка.

но ктож запретит тебе использовать LuaJIT?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 02:45 
Что не так с LuaJIT?

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 03:20 
Это велосипед на костылях, гвоздями прибитый к низкоуровневой структуре опкодов Lua 5.1, абсолютно нерасширяемый, да ещё и дико замудрённый, с генеримыми портянками ассемблерного кода. Поддержку каждой новой нативной архитектуры добавлял лично автор, за дикие деньги (корпоративных спонсоров) и в огромные сроки.

Вторая проблема — его автор, который заартачился и не стал поддерживать официально даже Lua 5.2 в пользу собственных велосипедных расширений, встроенных в LuaJIT. Ну а реализовывать integer'ы и прочие нововведения — это, считай, всё переписывать и переделывать, этого точно никто делать не будет. Были сторонние попытки актуализировать LuaJIT до 5.3, но там новые опкоды реализованы просто обычными функциями, без JIT.

В результате имеем то что имеем — дикую фрагментацию, половина сообщества сидит на древнем 5.1 («потомушта LuaJIT»), другая на актуальной версии. И бывший когда–то, лет десять назад,  крутым и модным LuaJIT теперь превратился в огромную гирю, если не якорь, тянущий весь язык в бездны стагнации.


"Доступен язык программирования Lua 5.5"
Отправлено anonymos , 23-Дек-25 05:14 
Сразу видно "иксперта" )))
Если пойти на сайт luajit.org и заглянуть в раздел extensions, то картина рисуется совсем другая.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 05:40 
Какая другая?

Там как раз и рисуется картина, что бОльшая часть 5.2 таки реализована, но не вся, не до конца, а то что есть — через одно место и по–своему. Потому что Mike Pall весь в белом стоит красивый, а остальные, включая апстрим — Д'артаньяны.

А суровая правда в том, что человек ухватился за свой хитрый хак, один раз реализованный в незапамятные времена. Но так красиво, как оно было для 5.1, уже не сделать, а запал выгорел и свежих идей у него нет. Оттого и вся драма с попыткой спихнуть проект на кого–нибудь.

Ну и его лицемерие отдельно раздражает. Пример — по ссылке на гитхаб в комменте ниже. «Хаха, поглядите на глупенький апстрим, ну и кто теперь себя загнал в угол! А у меня затостабильность!».

А по факту апстрим развивается, а LuaJIT стагнирует и тянет на дно всё сообщество. Если бы это было оформлено как самостоятельный диалект языка, вроде Terra или Pluto — претензий бы не было. Но есть то, что есть.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 08:03 
Плохо, что в neovim именно luajit, а для другого мне lua и не нужен.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 07:36 
> Поддержку каждой новой нативной архитектуры добавлял лично автор

Слегка приврал — поддержку для ARM64, MIPS32 dual-number + soft-float, MIPS64, MIPS64 r6, PPC soft-float делала уже сербская контора RT-RK, как видно из https://luajit.org/sponsors.html.

Но тем не менее, массы желающих актуализировать проект не видать и причины тому сугубо архитектурные — придётся отказаться от NaN–tagging и капитально перетряхивать всё.  

Для размышления:
https://github.com/LuaJIT/LuaJIT/issues/182/
https://github.com/LuaJIT/LuaJIT/issues/924/


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 11:51 
На случай, если кто–нибудь заинтересуется, что такое NaN–tagging и в чём заключается «хитрый хак»:

https://web.archive.org/web/20101224111654if_/http://blog.mozilla.com/rob-sayre/2010/08/02/mozillas-new-javascript-value-representation/

https://web.archive.org/web/20091107031558if_/http://article.gmane.org/gmane.comp.lang.lua.general/58908

https://www.freelists.org/post/luajit/Few-questions-about-LuaJIT-internals-on-64-bit,6


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 09:28 
> Вторая проблема — его автор

Он вообще "интересная личность". "Releases are an antiquated concept":

https://github.com/LuaJIT/LuaJIT/issues/665#issuecomment-784...


"Доступен язык программирования Lua 5.5"
Отправлено mos87 , 23-Дек-25 09:33 
ппц сидеть и пейсать такую пафосную чушь

хорошо што ИИ подобные портянки теперь заменяет


"Доступен язык программирования Lua 5.5"
Отправлено mos87 , 23-Дек-25 09:33 
>Поддержку каждой новой нативной архитектуры добавлял лично автор, за дикие деньги (корпоративных спонсоров) и в огромные сроки.

ви так говорити, будто енто щото плохое


"Доступен язык программирования Lua 5.5"
Отправлено mos87 , 23-Дек-25 09:35 
>якорь, тянущий весь язык в бездны стагнации

жаль об этом не осведомлены 100500 проектов его использующие. Или им просто пох в отличие от анонографомана

а то бы все уже перешли на %САМАЯ_МОДНАЯ_СКРИПТОТА%

ЗЫ жаль, что TCL так же не "застагнировал"...


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 10:00 
Те, кто хот раз портировал луа код с версии на версию, понимают, почему луажит получил такую поддержку. Производительность приятный бонус.

"Доступен язык программирования Lua 5.5"
Отправлено Bottle , 23-Дек-25 12:45 
Вот отличное описание проблем языков без стандарта. Та же ситуация с Питоном - никаких спецификаций, поэтому нет никакого понимания того, как будет работать альтернатива.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 13:16 
В Lua для каждой 5.x версии есть формальное описание полного синтаксиса языка, документация к библиотеке и батарея тестов на совместимость ( https://www.lua.org/tests/?order=d ).

Тут скорее момент, что популярная реализация застыла на старом стандарте, с частичной реализацией чуть менее старого, да ещё и со своими нестандартными расширениями. Примерно как было с языком C — новые стандарты выходили, а MSVC какое–то время забивал на их поддержку, уверенно поддерживая только C89 и лишь отчасти С99.


"Доступен язык программирования Lua 5.5"
Отправлено MaxT , 23-Дек-25 14:59 
>якорь, тянущий весь язык в бездны стагнации.

Ну что-ж поделать, если в LuaJIT отличный JIT и не менее отличный FFI. Вот люди и тянутся.
А если не хочется стагнации - берешь Teal и радуешься. https://github.com/teal-language/tl.


"Доступен язык программирования Lua 5.5"
Отправлено Frestein , 23-Дек-25 03:37 
По факту. Пруф.
https://github.com/LuaJIT/LuaJIT/issues/929#issuecomment-136...

"Доступен язык программирования Lua 5.5"
Отправлено Антикапиталист , 23-Дек-25 04:11 
В реальных проектах lua используется как скрипты для автоматизации. Например, есть звонилка для sip-телефонии, я в душе не чаю что там под капотом, и не хочу знать, но благодаря lua могу делать очень нетривиальные вещи, вроде автодозвона через транк в pstn с периодичностью 100 мс по хитрому алгоритму.

"Доступен язык программирования Lua 5.5"
Отправлено mos87 , 23-Дек-25 09:39 
Факт: LUA ПОМАГАЕТ СПАМЕРАМ!111

PS описанное это задача любого "языка расширения".


"Доступен язык программирования Lua 5.5"
Отправлено stepanxx , 23-Дек-25 11:33 
Кошмар! Сначала замедлить! А потом заблокировать!!
Срочно

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 16:58 
Что значит "реальный проект"? Я вот не вижу большого смысла в jit для lua. Если ты пишешь что-то тормозное, у тебя для этого есть C, с которым lua сопрягается легко и непринуждённо, в этом основное преимущество lua перед всеми остальными языками.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 00:19 
local player_hp = 100
plaeyr_hp = 90

луа молча хавает это, а ты потом ищешь баги. Форт в разы лучше


"Доступен язык программирования Lua 5.5"
Отправлено areful , 23-Дек-25 08:08 
Не специалист в lua и вопрос чисто из-за энтомологического интересу: а почему не должна хавать, имена-то у переменных разные?

"Доступен язык программирования Lua 5.5"
Отправлено думаю я , 23-Дек-25 09:22 
Луа должна телепатически догадаться, что мясной мешок опечатался.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 11:30 
В нормальных языках принято различать объявление и присваивание.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 17:56 
считаю это полным бредом, то есть различение эдакое.

"Доступен язык программирования Lua 5.5"
Отправлено Конь , 23-Дек-25 11:38 
Луя должна выдать ошибку, что нет такой перемноой, вместо этого создается новая переменная, причем глобальная и так можно получить очень неприятные баги

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 17:35 
Вы не поверите! Lua и это умеет:

Global variables in Lua do not need declarations. Although this is handy for small programs, in larger programs a simple typo can cause bugs that are difficult to find. However, we can change that behavior if we like. Because Lua keeps its global variables in a regular table, we can use metatables to change its behavior when accessing global variables.

https://www.lua.org/pil/14.2.html


"Доступен язык программирования Lua 5.5"
Отправлено pv , 23-Дек-25 09:02 
Для тех кто по клавиатуре не попадает есть lua-strict

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 09:30 
> луа молча хавает это, а ты потом ищешь баги

Шта? Такое обсолютно любой скриптовый язык хавает.

Автозавершением имен надо пользоваться в редакторе. 🤦


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 11:29 
>Шта? Такое обсолютно любой скриптовый язык хавает.

Ну так может в топку его, этот абсолютно любой скриптовый язык?
>Автозавершением имен надо пользоваться в редакторе.

Как вы собираетесь пользоваться автозарершением имён в динамически типизированном языке?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 13:37 
> Как вы собираетесь пользоваться автозарершением имён в динамически типизированном языке?

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


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 16:38 
Прямая. Вот есть выражение foo.bar.baz, вы в лучшем случае подсказку только для foo получите.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 17:00 
Я вот всё думаю, и мне лень проверить. А если на _G повесить метатабличку с методом __newindex, который будет кидать ошибку при попытке записи в несуществующую переменную... Это сработает?

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 17:37 
Сработает. В своих проектах я именно так и поступаю.

https://www.lua.org/pil/14.2.html


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 00:38 
>  Указываемые в циклах "for" управляющие переменные теперь доступны только для чтения и не могут быть изменены в теле цикла. Например, переменная i, объявленная в цикле "for i = 1, 5 do", не может быть изменена в теле цикла.

А такое вообще допустимо в минорном релизе? По-моему, сначала надо объявлять deprecated, в следующем мажорном релизе выводить ворнинги, и только в ещё следующем — выпиливать.


"Доступен язык программирования Lua 5.5"
Отправлено Кошкажена , 23-Дек-25 00:47 
У них не семвер.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 00:49 
В Lua это делается как раз в минорных релизах. Кто часто использует - привыкли. По мне так выпиливать нужно тех, кто меняет значения управляющих переменных цикла в теле цикла вне зависимости от используемого языка.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 01:19 
Обработку какого-нибудь буфера вполне можно так делать. Возвращаться на отступ с уже измененным состоянием. Одно дело когда человек не знает, что делает, и другое - запрещать тем, кто знает.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 01:34 
Речь про то, что такое читать сложно. В коде явно указано перечисление с указанным шагом (по умолчанию: 1) и полагаешься на это. Когда переменная инициируется до цикла - вопросов нет. Я, к примеру, даже не знаю, не "кэшируется" ли та переменная в каком-нибудь внутреннем регистре во время выполнения цикла и куда именно будет добавлена единичка. Так что даже не пытаюсь туда что-нибудь писать.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 02:19 
Я не вижу больших проблем использовать полезные свойства for для таких нужд. Большая часть операций с отступом будет в объявлении цикла, что удобно и читаемо. Лучше, чем писать явный вечный цикл и ту же самую логику в нем. Меньше риска что-то потерять по дороге.

Насчет рискованности применения согласен. Есть вариант нарваться на особенности реализации.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 11:41 
>полагаешься на это.

Явное лучше неявного. Циклы не нужны, хвостовой рекурсии достаточно.
>Я, к примеру, даже не знаю, не "кэшируется" ли та переменная в каком-нибудь внутреннем регистре во время выполнения цикла и куда именно будет добавлена единичка.

Во время написания кода на хорошо спроектированном языке не сосредатачиваться на таких мелочах, там всё понятно сразу.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 13:11 
>Явное лучше неявного
>Циклы не нужны, хвостовой рекурсии достаточно

В реальности рекурсии не нужно никакой нисколько, она разворачивается в циклы.

>на хорошо спроектированном языке

Нет такого ))


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 16:40 
>В реальности рекурсии не нужно никакой нисколько, она разворачивается в циклы.

Рекурсия очень хорошо подходит для высокоуровневых языков


"Доступен язык программирования Lua 5.5"
Отправлено Кошкажена , 23-Дек-25 00:50 
> Добавлена возможность явного объявления глобальных переменных в любых блоках кода при помощи ключевого слова "global".

Глобальные переменные по умолчанию - это, конечно, надо исправлять. Вот похоже пытаются.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 00:53 
напрасная потеря времени

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 01:05 
В своем коде я запрещаю чтение или запись в несуществующую глобальную переменную. Позволяет избежать множества скрытых ошибок.

"Доступен язык программирования Lua 5.5"
Отправлено Антикапиталист , 23-Дек-25 04:06 
Учитывая, что язык для встроенной автоматизации, это не проблема. У меня, например, на lua много скриптов на 5-10 строк не то что с глобальными переменнвми, а вообще с хардкоженными значениями, где вся эта "безопасность" нафиг не нужна. Никакого труда не составит открыть файл в дефолтном виндовом блокноте и быстро переписать, если вдруг надо.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 01:08 
Язык дико неудобен, начиная с end вместо фигурных скобок, и заканчивая тотальным отсутствием стандартной библиотеки. Прям вообще отсутствует, напрочь. Даже ключи словаря не достанешь -- иди пиши аналог Object.keys() с нуля. Единственное преимущество луа -- встраиваемость, по сути язык номер один, если нужна легковесная скриптуемость.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 01:15 
>начиная с end вместо фигурных скобок

Вопрос привычки. С плохим форматированием кода лес из скобок не менее ужасен.

>Даже ключи словаря не достанешь -- иди пиши аналог Object.keys()

Иди про итераторы прочитай. Или ты их не понимаешь, прямо как замыкания в JS? Вот что значит первым языком пихон.

>заканчивая тотальным отсутствием стандартной библиотеки. Прям вообще отсутствует, напрочь

Есть luarocks какие хочешь.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 01:31 
> С плохим форматированием кода лес из скобок не менее ужасен.

То есть ты признаешь, что хорошо отформатированный код на луа примерно так же ужасен, как и плохо отформатированный код на си-подобном языке?

> Иди про итераторы прочитай

Коллект добавили в стд библиотеку? Чтобы можно было итератор сконвертнуть в массив и делать random access? Или ты не понимаешь, что итераторы применимы далеко не везде?

> Есть luarocks какие хочешь

Какую букву во фразе "_стандартная_ библиотека" ты не понял?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 02:37 
>хорошо отформатированный код на луа

Если в луашном стиле написан, отлично смотрится. Если там у тебя колбасы калбеков эмулирующие коколлекты всевозможные, уродливо будет, конечно.

>плохо отформатированный код на си-подобном языке

Отвратительнее, чем луашный. Когда круглые скобки перемешаны с фигурными, это намного хуже. Просто привыкли все.

>итераторы применимы далеко не везде?

В луа они применимы везде )) Квадратно гнездовое мышление воспитанное другими языками придется пересмотреть.

>Какую букву во фразе "_стандартная_ библиотека" ты не понял?

Это ты не понял. Тебе не хватает стандартной библиотеки луашной, варианты какие?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 03:21 
> > итераторы применимы далеко не везде?
> В луа они применимы везде ))

Очевидно, что кроме луа ты ничего не знаешь. Напиши мне на итераторах quicksort.

> Квадратно гнездовое мышление воспитанное другими языками придется пересмотреть

В других языках я могу выбирать между итераторами и random access массивами. В расте есть коллект. В яве есть стримы и коллекторы. В яваскрипте есть [...iterator]. Если алгоритм позволяет однонаправленное движение, принимаешь итератор. В луа это все то же можно, но ты делаешь вид, будто любую проблему можно решить только итераторами, просто потому что требуется как-то оправдать тот факт, что луа не дает даже простейший Object.keys().

> Тебе не хватает стандартной библиотеки луашной, варианты какие?

Варианты такие: 1) стандартизировать и добавить норм стд библиотеку прямо в сам язык, 2) скачять мокрую _исечку безсплатно без смс с прикольными функциями для луа, да так, чтобы изучаешь одну библиотеку, а потом у следующего работодателя твои знания не пригождаются, потому что там используют что-то другое вместо "luarocks".


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 05:20 
Вы самозабвенно несёте чушь.

В Lua осознанно используется «таблица» — гибридная структура данных, сочетающая в себе свойства массивов и хэш–таблиц.

Если там есть keys — это хэш–таблица и quicksort не имеет смысла. Потому что ради производительности сохранение порядка элементов в оных не гарантируется — и это не баг а фича.

А если использовать таблицу как массив, то quicksort уже есть в стандартной библиотеке — table.sort().

Если прям совсем надо, ничего не стоит написать свою реализацию Object.keys на пяток строчек, выплёвывающую результат pairs(), только зачем — в итераторе уже можно делать что–то полезное вместо пережёвывания литералов.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 08:57 
> Если там есть keys — это хэш–таблица и quicksort не имеет смысла. Потому что ради производительности сохранение порядка элементов в оных не гарантируется — и это не баг а фича.

Что и требовалось доказать: ты действительно ни с чем, кроме луа, не работал, ибо в нормальных языках это именно разработчик решает, в каком порядке хранятся ключи: ordered vs unordered map, ordered vs unordered set. В луа ты выдаешь единственность реализации за фичу, а на самом деле это недостаток. Впрочем, от встраиваемого языка многого не ждешь.

Но ты не понял моего примера. Я утверждаю, что далеко не все алгоритмы способны работать с итератором. Некоторые ТРЕБУЮТ, чтобы на вход подавали random access array, потому что во время своей работы они обращаются к элементам в порядке, отличающемся от примитивного 0, 1, 2.... Один из таких алгоритмов -- quicksort.

А то, что ты не понимаешь, зачем кому-то может понадобиться словарь с отсортированными ключами -- это лишь твоя проблема.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 09:19 
Если мне понадобится словарь с отсортированными ключами, я просто заведу ещё одну таблицу. И всё.

В этом и есть красота и мощь Lua — возможность делать безгранично многое простыми и минимальными средствами.

То что кто–то покусан в мозг ECMAScript^W «нормальными языками» и не понимает, как это реализовать на Lua — это точно не моя проблема. В конце–концов, просто возьмите duktape или QuickJS, и не делайте голову ни себе, ни людям.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 09:43 
> Если мне понадобится словарь с отсортированными ключами, я просто заведу ещё одну таблицу. И всё.

Ага. Причем вторая таблица будет массивом ключей, а не... итератором, про который ты тут всем рассказывал, что он чуть ли не панацея для всех алгоритмов и единственно верный™ интерфейс над всем подряд.

> как это реализовать на Lua — это точно не моя проблема

Вопрос не в том, "как" реализовать. Луа -- тьюринг-полный язык. Очевидно, что на нем можно реализовать все. Контекст дискуссии -- выяснить, является ли итератор "достаточным" для "всего подряд", как ты утверждал. Ответ: нет, не является, и ты узнал об этом 5 минут назад, выяснив для себя, что без random access массива ключей в этом конкретном сценарии никак не обойтись. О сколько новых открытий чудных ты встретишь в... программировании, ибо очевидно, что луа не только твой первый и единственный язык, но и то, что ты в целом в программировании максимум неделю.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 10:17 
> Контекст дискуссии -- выяснить, является ли итератор "достаточным" для "всего подряд"

Контекст дискуссии — вы несёте какую–то дичь. И вам уже два разных анонима пытаются это объяснить.

Есть ли «random access массивы» в Lua? Да, есть. Ничего не мешает реализовать свой медленный quicksort. Только зачем, если он уже есть штатный?

Для чего вам кровь из носу понадобился Object.keys? Нет ответа. Если нужно из хэш–таблицы получить упорядоченный словарь ключей — берём итератор, проходимся по таблице, складываем результаты в другую таблицу. Это настолько тривиально, что даже странно это разжёвывать.

Что мешает использовать имеющиеся средства языка кроме отстуствия понимания как ими пользоваться?  

Философия Lua — вместо десятков типов данных и миллиона функций со своими особенностями дать пользователю один–единственный, максимально быстрый и гибкий. Если его не хватает — ничего не мешает притащить нативную библиотечку и в ней реализовать что угодно, хоть bigint, хоть упорядоченные наборы, да хоть Гейтса в ступе.

Но штука в том, что штатных, минималистичных средств языка обычно хватает, за что его и ценят. За мастерское отсечение лишнего.

Опять же, не осиливаете — никто не заставляет: чемодан, вокзал, duktape.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 10:31 
> Контекст дискуссии — вы несёте какую–то дичь.

Напоминаю бредятину, которую ты запостил ранее: "В луа они [итераторы] применимы везде ))" Такое мог написать человек, который вообще ничего сложнее фор-цикла не писал. ЯП здесь вообще неважен, достаточно того факта, что дохренища алгоритмов и data structures не могут работать вообще, если нет random access arrays. Убежденность в том, что наличия ТОЛЬКО фор по списочным структура достаточно -- это убежденность гуманитария, который не сталкивался с реальными задачами.

> Для чего вам кровь из носу понадобился Object.keys? Нет ответа.

И снова: такой вопрос мог задать человек, который буквально неделю в программировании. Нужна ли такая функция? Да, нужна, и обычный поиск по гитхабу это подсказывает:

- https://github.com/search?q=Object.keys+language%3AJava... -- 4.8 миллиона js-файлов, где используется Object.keys
- https://github.com/search?q=keys+language%3APython&type... -- 13.2 миллиона питон-файлов, где используется keys.

Можешь зайти в любой пример и увидеть, _зачем_ такая функция может понадобиться.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 11:04 
> Напоминаю бредятину, которую ты запостил ранее
> …ты запостил…

Вы даже не в состоянии двух анонимов различить. Это какой–то позор.

> нет random access arrays

Ещё раз: они есть и ничего не мешает ими пользоваться.

> И снова: такой вопрос мог задать человек

Вопрос был не в том, зачем вообще применяется Object.keys в других языках. Вопрос был: зачем он вам при разработке на Lua? Не надо ссылаться на абстрактный поиск по гитхабу, сошлитесь на ваш конкретный кейс. «Делаю то–то, хочу добиться того–то, не получается — нету Object.keys, плак–плак».

> человек, который вообще ничего сложнее фор-цикла не писал
> убежденность гуманитария
> человек, который буквально неделю в программировании

Лёгкость, с которой вы пускаетесь в подобные предположения о собеседнике лишь наглядно иллюстрирует вашу собственную зрелость, и только.

Вам битый час намекают, что конкретно вы делаете что–то не так, пытаясь переносить на Lua шаблоны мышления, приобретённые при разработке на других языках.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 11:49 
> Ещё раз: они есть и ничего не мешает ими пользоваться

Вопрос не в том, есть в луа random access arrays или нет. Ответ прост: они там есть. Вопрос в том, являются ли ложью твои слова о том, что итераторы покрывают 100% случаев всех использований всех списочных структур. Ответ: да, такое мнение является ложью. Например, невозможно написать quicksort, если на руках только итератор: придется этот итератор вначале сконвертнуть в массив. Вывод: твои слова являются либо ложью, либо заблуждением. Я больше склоняюсь ко второму: в твоих словах чувствуется тотальное отсутствие опыта. As a matter of fact, мнение вроде твоего может иметь только тот, кто программирует не больше недели. Уже на вторую неделю изучения программирования человек обычно сталкивается с задачами вроде "проверить, является ли строка анаграммой". Попробуй напиши такое без рандом access структур.

> Вопрос был: зачем он вам при разработке на Lua?

Чтобы получить ключи словаря, до сих пор не понял?

> Вам битый час намекают, что конкретно вы делаете что–то не так, пытаясь переносить на Lua шаблоны мышления, приобретённые при разработке на других языках.

Луа не является концептуально иным языком. Про "шаблоны мышления" я бы больше рассуждал в контексте хаскеля. Вот там действительно надо переосмысливать все. А луа это обычный императивный язычок в ряду с яваскриптом и питоном. То, что ты выдаешь его за некий уникум лишь притворство с целью оправдать тотальное отсутствие стд библиотеки.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 12:16 
Заступаю на смену )))  

>Вывод: твои слова являются либо ложью, либо заблуждением

Ты понимаешь, что подгоняешь все под это утверждение?

>Чтобы получить ключи словаря

Словари какие-то. Это в пихоне такое? Ты считаешь, что это некий инвариант в языках программирования? Увы ))))))

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

>мнение вроде твоего может иметь только тот, кто программирует не больше недели

Я программирую 20 лет. Луа был 5 или 6 языком, точно не помню.

>луа это обычный императивный язычок в ряду с яваскриптом и питоном

Язычок у тебя во рту, но у меня есть идеи, где еще он должен находиться.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 13:25 
> Ключи получают не чтобы ключи получить, а чтобы что-то сделать с ними.

Ага. Например сортануть. И как раз в этом месте рушится твоя бредовая идея про то, что "любую проблему можно решить итераторами". Итак, напиши мне функцию, которая принимает итератор значений, и НЕ конвертируя его в массив, проверяет, является ли эта последовательность палиндромой ([4, 8, 15, 8, 4] -- пример палиндромы).

> Я программирую 20 лет. Луа был 5 или 6 языком, точно не помню.

Целых 20 лет обходишься только фор-лупом, да так, что это исключительно for (i = 0, i < l, i++)? Ага, конечно.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 15:03 
>принимает итератор значений

Ты не понимаешь, что такое итераторы в луа и как их используют.
Если тебе нужно итерировать, ты делаешь итератор. Не нужно - не делаешь, работаешь с таблицей как тебе нужно.

Для сортировки ты вызываешь table.sort, как тебе уже человек выше написал. При чем тут вообще итераторы?

Понимаешь, ты изначально заикнулся про Object.keys. Я подумал, что ты нормальный в целом человек и у тебя там какой-то объект, ассоциативный массив. А у тебя индексированный и ты сразу можешь с ним работать. В чем вообще твоя проблема, кроме того, что ты любишь из себя строить самого умного в интернетах?

Луа, к слову, требует мозгов, чтобы эффективно программировать и не залезать в идиотские проблемы, вроде твоих. Это тебе не пихон, не плюсы, даже не хаскелл (на котором ты все равно никогда ничего серьезного писать не будешь).

>Целых 20 лет обходишься только фор-лупом,

Ага. Еще иногда while ))


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 15:17 
> Ты не понимаешь, что такое итераторы в луа и как их используют.

Никто не понимает. Кроме тебя. Хорошо, что есть ты. Знающий, что такое итераторы. Рискну заявить, что даже создатели луа их не понимают. Вот такой вот ты уникум.

> [рандомная простыня текста]

Не увидел здесь ответа на поставленную задачу: "напиши мне функцию, которая принимает итератор значений, и НЕ конвертируя его в массив, проверяет, является ли эта последовательность палиндромой".

Почему именно итераторами? Потому что выше ты заявлял, что _только_ итераторов хватит всем и на все случаи жизни. Prove it.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 13:39 
Ну, то есть конкретики не будет, будет выдёргивание из контекста и приписывание оппоненту того, чего он не говорил.

>  твои слова

Это не мои слова, это слова вашего предыдущего собеседника, не позорьтесь.

> итераторы покрывают 100% случаев всех использований всех списочных структур

Ваш предыдущий собеседник этого не говорил. Он сказал, цитирую:

>> Иди про итераторы прочитай. Или ты их не понимаешь, прямо как замыкания в JS? Вот что значит первым языком пихон.
>> …
>> В луа они применимы везде )) Квадратно гнездовое мышление воспитанное другими языками придется пересмотреть.

Если у вас туго с интерпретацией, разжую: вам указали на нелепость ваших претензий, необходимость прочитать документацию к языку, на котором пытаетесь программировать и широкую универсальность итераторов в Lua.

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

Про «100% случаев всех использований всех списочных структур» вы придумали себе сами, и теперь спорите с собственноручно набитым чучелом, а не с реальными собеседниками.

> Чтобы получить ключи словаря

Вы прицепились к несущественной мелочи. Большинство тех, кому действительно выпадет на практике эта задача просто молча применят стандартные конструкции языка, получат результат и пойдут дальше. Возможно, даже не оформляя этот кусок кода в отдельную функцию, настолько он тривиален.

> Луа не является концептуально иным языком.

Здесь речь не о том, что Lua является или не является «концептуально иным». Подразумевалось, у Lua, тем не менее, есть своя концепция. Можно её принять, можно её отвергнуть и взять более подходящий инструмент. Но глупо обвинять язык в том, что он именно такой, каким его задумали и последовательно воплотили его создатели.



"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 13:53 
> у Lua, тем не менее, есть своя концепция

И что же это за концепция? Такая, чтобы она была не совместима с "шаблонами мышления" [sic!]. Такая, чтобы разработчики, не знающие луа, сказали бы: "Нихрена себе! Вот это реально новая концепция, ломающая мои шаблоны мышления! Я по сути и программировать-то не умею в этой новой концепции!"

И нет, "отсутствие вменяемой стд библиотеки" -- это не "концепция, ломающая шаблоны мышления".

И нет, "итераторы" -- это не "принципиально новая концепция". Итераторы есть везде.

Итак, что это за концепция, "ломающая шаблоны"? Удиви меня.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 15:12 
> "Нихрена себе! Вот это реально новая концепция, ломающая мои шаблоны мышления! Я по сути и программировать-то не умею в этой новой концепции!"

Я после жс и перла думал буквально это. Все мое программирование до луа было в какой-то степени использованием детских колес у велосипедов. Понимание концепций программирования не было полным и разносторонним. Луа меня определенно обогатил.

>Итераторы есть везде

Лол )) Прекращай, я могу погибнуть от смеха )


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 15:18 
> [рандомная простыня текста]

Не увидел здесь ответа на вопрос: какая такая в луа есть концепция, "ломающая шаблоны мышления"?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 17:14 
> Если прям совсем надо, ничего не стоит написать свою реализацию

Ну да, именно этим язык от поделки и отличается. На языке просто берёшь и решаешь задачу, а на поделке сначала надо "своих реализаций" базовых вещей понаписать.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 01:23 
Именно оттого, что он встроенный, стандартной библиотеки нет - на всех не угодишь, да и не нужно. Все что требуется, можно дополнительно реализовать в lua коде или в вызывающем коде. Я к примеру, уже и не упомню, когда мне последний раз требовалось перечислять ключи, хотя Lua использую часто.

Что касается синтаксиса - дело привычки.


"Доступен язык программирования Lua 5.5"
Отправлено Антикапиталист , 23-Дек-25 04:00 
> end вместо фигурных скобок

И это прекрасно. Человекочитаемое слово вместо закорючек.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 09:12 
1С одобряет этот комментарий

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 17:18 
Математикам ещё скажи что им нужно "для любого" "существует" словами писать, а заодно "сложить" и "умножить".

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 13:23 
А, да? Не знал, спасибо за информацию.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 02:43 
Lua не нужен, это абсолютно неюзабельный ЯП. Если думаете взять Lua - подумайте, может вместо лучше взять встраиваемый интерпретатор JavaScript.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 03:01 
Если не можете писать на луа, на жс вы тоже не можете. Берите какой-нибудь встраиваемый пихон, их целая куча сортов.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 03:26 
Понимаешь ли, луа тупо неудобен. В нем нет нормальных тулзов для дебага. В нем нет стд библиотеки. Яваскрипт сложнее концептуально, а луа сложнее в использовании. Бульдозер сложнее концептуально, а палкой-копалкой не вырыть шахту. Вот хочет значит компания вырыть шахту и думает, какой бульдозер взять. Но тут появляется гость из каменного века и заявляет: "если не осилили палку-копалку, то и бульдозер не осилите".

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 03:34 
> В нем нет нормальных тулзов для дебага.
> В нем нет стд библиотеки.

Всё там есть. Если вы не в курсе, неспособны гуглить и не умеете пользоваться — ваши проблемы.

И миллион готовых наборов батареек, и биндинги к библиотекам на любой вкус, и отладчики, и профайлеры.

Сам язык осознанно минималистичен и не тянет безальтернативно гигантские чемоданы с батарейками — это его концепция. И для многих это скорее плюс, чем минус.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 09:07 
> Всё там есть.

Давай простейший пример. Как вывести в консоль словарь одной строкой? по аналогии с var_dump() в похапе, print() в питоне, console.log() в яваскрипте и с аналогичной функцией любого другого вменяемого скриптового языка?

Ключевое слово: одной строкой. Ответ "написать такую функцию самому" подтвердит мой тезис: в луа ничего нет. Твой тезис -- что в нем "все есть":

> Всё там есть.

Если там "все есть", то как вывести в консоль словарь одной строкой, одним вызовом одной уже существующей стандартной функцией, без необходимости итерироваться самому?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 03:21 
А вот JavaScript куда-то вне браузера тащить - это нездоровое. M$ вам как пример.
Лучше уж Brainfuck, в самом деле.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним83 , 23-Дек-25 03:35 
Инетрпретатор JS более тяжеловесный.
Умеют ли такие интепретаторы работать с многопоточностью? (для луа - это почти всегда создать отдельный контекст для нового потока, что примерно как запустить +луа)

"Доступен язык программирования Lua 5.5"
Отправлено Антикапиталист , 23-Дек-25 03:53 
Многопоточность это зло. Можно запутаться даже в коде на 150 строк, не говоря о скрытых и неявных race conditions.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним83 , 23-Дек-25 03:57 
А что поделать?!
Не возможно бесконечно ускорять код в одном потоке, да и бывают блокирующие операции.

"Доступен язык программирования Lua 5.5"
Отправлено Антикапиталист , 23-Дек-25 04:19 
Оптимизировать алгоритмы, по возможности переходить на корутины.

"Доступен язык программирования Lua 5.5"
Отправлено Антикапиталист , 23-Дек-25 03:51 
Позвольте поинтересоваться, откуда столь критичное мненье?

"Доступен язык программирования Lua 5.5"
Отправлено Антикапиталист , 23-Дек-25 03:49 
Это мой любимый синтаксис всех времён и народов. После C/C++/Rust это отдых для души. И я абсолютно серьёзно.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 06:17 
После JS. С этими тремя всё-таки не сравнить, они в другой упряжке. А так-то луна - это js done right.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 07:28 
-- Ok

Это тег комментарий на языке Луа?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 07:36 
> Для большей части операций сборки мусора задействован инкрементальный режим,...

Ошибка в новости. В оригинале: major garbage collections done incrementally

В Lua есть 2 режима сборки мусора: incremental (включён по умолчанию) и generational. В режиме generational циклы делятся на major (длинные, редкие и собирающие мусор всех поколений) и minor (частые, короткие и собирающие только новый мусор). Раньше эти режимы были несовместимы: при включении режима generational инкрементальность терялась. Теперь для мажорных циклов в этом режиме была реализована инкрементальность, а минорные и так короткие и в ней не нуждаются.


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 09:14 
а можно список ЯП с некопилефтной лицензией, который можно встроить в свой продукт для скриптинга? Lua номер в списке, это понятно

"Доступен язык программирования Lua 5.5"
Отправлено mos87 , 23-Дек-25 09:42 
Знаком с ним в основном по Neovim (mpv, и т.д.) - по ощущениям весьма специфический синтаксис. И на вид код жутко лапшеобразный, с печальной кучей вот ентого ({}).
И эти люди запрещают Perl в носу ковыряцца..

"Доступен язык программирования Lua 5.5"
Отправлено kravich , 23-Дек-25 10:24 
>В режиме "generational" полный цикл сборки мусора (major collection), перебирающий все объекты, переведён на использование инкрементальной обработки, при которой сборка мусора разбивается на отдельные шаги, чередующиеся с выполнением программы, что позволяет избавиться от длительных приостановок выполнения приложений с большим числом объектов в памяти.

Squirrel-окапец?


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 11:22 
>При указании в блоке кода выражений с ключевым словом "global", все переменные обязательно должны объявляется явно.
>Указываемые в циклах "for" управляющие переменные теперь доступны только для чтения и не могут быть изменены в теле цикла.

Идеальные изменения для языка с неявным определением переменных без фазы компиляции. Чем позже всплывёт баг, тем лучше, в идеале всплыть прямо на релизе.


"Доступен язык программирования Lua 5.5"
Отправлено anon57 , 23-Дек-25 13:12 
QuickJS слегка медленнее, но писать скрипты на JS куда веселее. Тем более миллион и еще тележка библиотек есть. Есть где разгуляться. Большие кодовые базы на Lua тяжело поддерживать. Lua более утилитарный язык, для конфигов например. Это конечно лично мое мнение.

"Доступен язык программирования Lua 5.5"
Отправлено anon57 , 23-Дек-25 13:34 
Как вариант, есть транслятор из TypeScript в Lua: https://github.com/TypeScriptToLua/TypeScriptToLua

"Доступен язык программирования Lua 5.5"
Отправлено myster , 23-Дек-25 14:45 
> После пяти лет разработки доступен релиз Lua 5.5

Реальная причина выкатки версии - недавний сбой в Cloudflare из-за Lua бага


"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 15:14 
Надо было в день сбоя выкатывать.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 15:15 
Чем просто Луа отличается от Луажида?

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 16:04 
Луа интерпретирует, а Луажид компилирует в байткод?

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 16:29 
Вот хороший язык, никто его не пропихивет, не навязывает, он просто органично занял свою нишу.

"Доступен язык программирования Lua 5.5"
Отправлено Аноним , 23-Дек-25 17:12 
Они слишком увлечены динамизмом, на мой взгляд. Надо на этапе парсинга/компиляции проверять существование глобальных переменных. Это, конечно, ограничивает способы расположения кода, заставляет грузить код в определённом порядке, но для lua это не есть что-то новое, он уже на этапе компиляции ведь решает, считать ли переменную за глобальную или за локальную, и если, скажем, вызываешь локальную функцию, которая объявлена позже, то это не работает:

> do
>> local function foo() return bar(); end;
>> local function bar() return 42; end;
>> print(foo());
>> end

stdin:2: attempt to call a nil value (global 'bar')
stack traceback:
    stdin:2: in local 'foo'
    stdin:4: in main chunk
    [C]: in ?

Так вот на мой взгляд, надо было гораздо более ломающее изменение внести, и на этапе разбора кода, тогда когда принимается решение о том, что bar надо искать в _G, выкидывать ошибку о том, что никакого bar'а там нет. Можно как-нибудь это сделать опциональным, но обязательно с возможностью врубить глобально этот режим для всего кода.