Джифорсович
ты кода так и не показал
Джифорсович
телепаты в отпуске
Leon174
Джифорсович
ну это тогда выглядит забавно
Oleksandr
А ещё может быть дело в замыкании связанного с этой функцией.
Жаль, что телепаты в отпуске...
Luсky
Чего там телепировать, когда можно бинарь расковырять?
Oleksandr
Можно, но это выходит за рамки области Lua знаний 😉
Leon174
А между прочим, без фанфар и салюта, вышел Fennel 1.0.0
Tverd
Лучше бы MoonScript вышел... эх, такая была задумка
Miautron
Лучше бы Teal допилили, или какой-то другой клевый язык со статтческой типизацией.
Leon174
Luau же пилят вовсю.
R
Судя по обилию "лучше бы", рынок для статики весьма обширен.
Tverd
Статики хватает, в чем проблема на C, Nim написать горячие и "статические" участки кода? А вот скорости разработки всегда мало
Snusmumriken
Судя по обилию "лучше бы", рынок для статики весьма обширен.
Они гуляют циклично:
— Очень много статики, тошнит выписывать всё вот это вот, фуууу, дайте динамику.
— Вот теперь везде динамика, отлично, можно писать левой пяткой и всё равно будет круто!
— Уууу динамика сыплет ошибками в рантайме, почему приходится писать так много тестов, пусть компилятор этим занимается, дайте статики.
— Ух, вот теперь везде статика, отлично, можно не писать тесты, умный компилятор сам всё проверит!
Джифорсович
Они гуляют циклично:
— Очень много статики, тошнит выписывать всё вот это вот, фуууу, дайте динамику.
— Вот теперь везде динамика, отлично, можно писать левой пяткой и всё равно будет круто!
— Уууу динамика сыплет ошибками в рантайме, почему приходится писать так много тестов, пусть компилятор этим занимается, дайте статики.
— Ух, вот теперь везде статика, отлично, можно не писать тесты, умный компилятор сам всё проверит!
Порриджам лишь бы не напрягаться) вон раст изобрели
Джифорсович
Но от CVE в std::net это их не спасло, т.к. спецификации читали жопой
Джифорсович
Snusmumriken
У меня иногда бывает такое ощущение, что ты пересидел на дваче.
Джифорсович
Да, есть немного, звыняйте
Джифорсович
Но согласись, раст не иначе, чем для неучей создан, которые не поняли, как с памятью работать, ну либо не захотели понимать
Snusmumriken
Мммм
Snusmumriken
Смотри, любой язык в котором есть слова (то есть любой, кроме машинного, на котором положено писать руками по цифровой клавиатуре) — придуман для неучей, которые не поняли как с машиной работать )
Snusmumriken
Раст — вполне пристойная замена сишки, особенно ещё лет через десять когда окончательно стабилизируется. Примерно как D, например.
Serhii
Serhii
лучше просто молчать и ничего не писать
R
Они гуляют циклично:
— Очень много статики, тошнит выписывать всё вот это вот, фуууу, дайте динамику.
— Вот теперь везде динамика, отлично, можно писать левой пяткой и всё равно будет круто!
— Уууу динамика сыплет ошибками в рантайме, почему приходится писать так много тестов, пусть компилятор этим занимается, дайте статики.
— Ух, вот теперь везде статика, отлично, можно не писать тесты, умный компилятор сам всё проверит!
Справедливости ради, в правильно сконструированном языке компилятор действительно массу проблем снимает. У Луа просто изначальная заточка была под относительно небольшие задачи, где можно всё в голове удержать.
Snusmumriken
Ну правильно, учим машинные слова под каждую архитектуру и набиваем в хекс-редакторе, кто так не умеет — нипрограммист и вообще нечего его к коду подпускать )
Snusmumriken
Справедливости ради, в правильно сконструированном языке компилятор действительно массу проблем снимает. У Луа просто изначальная заточка была под относительно небольшие задачи, где можно всё в голове удержать.
А тут ещё прикол в том, что если твою задачу не получается удержать в голове — самое время её декомпозировать, вне зависимости от языка, а то начинается: "ООП не нужно потому что все вокруг только и делают что наследуют по десять тысяч раз, и это в голове не помещается" и "DOD не нужно потому что всё вокруг плодится на миллиард подсистем которые в голове не помещаются, и я хз где оно первым загоняется а где перезаписывается, и вообще дублей дофига, а ещё я не заметил как перекрыл подсистемы и они теперь коллидируют и конфликтуют, и я хз какие и с кем".
Ну, то есть компилятор в принципе не очень нужен, если ты предельно упрощаешь вещи. Там особо не откуда взяться ошибкам кроме разве что опечаток, код прост, прям и строен ))
Snusmumriken
Правда, это не очень вяжется с бизнесом и командами разработки, которым абстракции подавай и сам на чужих абстракциях строй ))
R
А тут ещё прикол в том, что если твою задачу не получается удержать в голове — самое время её декомпозировать, вне зависимости от языка, а то начинается: "ООП не нужно потому что все вокруг только и делают что наследуют по десять тысяч раз, и это в голове не помещается" и "DOD не нужно потому что всё вокруг плодится на миллиард подсистем которые в голове не помещаются, и я хз где оно первым загоняется а где перезаписывается, и вообще дублей дофига, а ещё я не заметил как перекрыл подсистемы и они теперь коллидируют и конфликтуют, и я хз какие и с кем".
Ну, то есть компилятор в принципе не очень нужен, если ты предельно упрощаешь вещи. Там особо не откуда взяться ошибкам кроме разве что опечаток, код прост, прям и строен ))
К сожалению, при прочих равных декомпозиция только увеличивает общую сложность системы. Ну там, второе начало термодинамики, вот это вот всё :) И тут статика приходится очень ко двору, потому что позволяет часть сложности спихнуть на железку.
Snusmumriken
Декомпозируй так, чтобы упростить ))
R
По отдельности - да, каждый кусочек будет проще. Вместе... энтропия не убывает, сволочь такая ;)
Snusmumriken
Хе, некоторые вещи напротив весьма эффективно композировать. Например длинная портянка основного цикла, бизнес-логические блоки и минимальные функции. Ну типа, чтобы проще было находить аналогии в реальной жизни.
R
А потом ведь неизбежно наступает момент рекомпозиции. Это мне сильно напоминает анекдот про студента, сессию и чёрта с мешком гвоздей.
R
Т.е. сама возможность вынести хотя бы часть сложности на аутсорс компилятору иногда бесценна.
R
Не говоря уж про иную базу для оптимизации в более статичных языках, да.
🐅🤦♂️
Miautron
Чего именно не хватает в Teal?
Я не так давно пытался запилить байндинги для Teal апи движка Defold, нагородил костылей и так и не доделал. Уже смутно помню все проблемы. Например, для того, чтобы определения байндингов были топ-левел, обязательно нужно иметь tlconfig.lua. Юнион типов можно иметь только из примитивных типов, нельзя сделать юнион с рекордами или контейнерами. Что-то может еще было, но это то, что запомнилось.
🐅🤦♂️
Я не так давно пытался запилить байндинги для Teal апи движка Defold, нагородил костылей и так и не доделал. Уже смутно помню все проблемы. Например, для того, чтобы определения байндингов были топ-левел, обязательно нужно иметь tlconfig.lua. Юнион типов можно иметь только из примитивных типов, нельзя сделать юнион с рекордами или контейнерами. Что-то может еще было, но это то, что запомнилось.
С API Дефолда я не знаком😞, не могу предположить какие там подводные камни. API Love2d переведено практически полностью и работает. Также работает типизированный биндинг ImGui. Мне не хватает в своих проектах наследования интерфейсов(записей). И рабочего дополнения для редактора(neovim). Сам проект задумывался для создания не только тайпчекера, но и продвинутого тулинга основанного на статическом анализе типов. Писать на чистом Луа после Бирюзового уже не хочется, не хватает строгости и документированности кода. В целом мне нравится подход Хишама, он не добавляет все фичи подряд, тщательно взвешивает новую функциональность.
🐅🤦♂️
Miautron
Miautron
Кстати, есть Haxe, который тоже неплохо компилит в Lua и имеет хороший тулинг. Но он жирноватые Lua сорсы генерирует.
🐅🤦♂️
🐅🤦♂️
Tverd
Haxe это транслятор со своего языка во "все". Ну кроме Go и Rust
🐅🤦♂️
Miautron
Хотя, чтобы я когда либо на Haxe не делал, это всегда выливалось в определенную степень страдания.
Dmitriq
Кто нибудь про такой движок слышал? Есть отзывы?
Bitty Engine
Александр
Кто-то шарит в ворлд оф Варкрафт скриптах?
Александр
Есть заказ
Джифорсович
Snusmumriken
новый яп WoW
Хватит тащить имиджборды в чат. Это чистое самоутверждение, ты в курсе? Боевые картиночки-гифочки — в ту же степь. Нечего сказать по делу — нечего спамить ерундой.
Snusmumriken
Ну ладно, ерундой можно, не самоутверждательной (тем более безосновательно), а то получается что ты просто гадишь в место где сидишь.
Джифорсович
Окей
но вообще забавно получается, скрипты шоша) впервые слышу, чтобы так называли луа
Snusmumriken
Скрипты шоша это немножко больше чем "LUA", потому что там куча внутренней апишки. В чуть более корректном виде, вопрос звучал бы "кто шарит в луа и апишке вовки".
Но мы стараемся не заниматься словоблудием. Да, я теперь пишу LUA, потому что так модно.
Джифорсович
Highly Likely
Snusmumriken
LUA.
Alxius
Как компьютерные игры меняют наш мозг: обзор новейших исследований / Хабр
https://habr.com/ru/article/589149/
Alxius
Игры это полезно
Highly Likely
Snusmumriken
Лечу от ОКР без смс и регистрации
Snusmumriken
Забей
Tony
а зачем удалили статью?
Tony
антиспам-бот – полезная штука
Snusmumriken
Полезная, да )
Snusmumriken
Но местный админ отсутствует большую часть времени, это раз, два — антиспам-бот — очень узкоспециализированная штука требующая постоянной адаптации под меняющиеся условия, я предпочёл бы накатать что-то самостоятельно например, хмммм
Tony
Snusmumriken
Ну типа, появляется десять тысяч разных спамеров, и на каждый тип спамера — своего бота. Мда.
Спамеры уходят, боты остаются, появляются новые спамеры — опа, в группе больше ботов чем людей.
Michael🍷
Microvolnovka
Какие сложные конкурсы для вступления :)
Microvolnovka
local pay = 1.2
print(pay - math.floor(pay) == 0.2)
Можно ли как-то это превратить в true?
Не прибегая к tostring
Roman
https://stackoverflow.com/questions/2002821/why-does-this-subtraction-not-equal-zero
Microvolnovka
Это я всё понимаю
В принципе я нашел обходной путь
local pay = 1.2
print(pay == 0.2 + math.floor(pay))
A
Можно вычислить значение машинного эпсилон и сравнивать уже с учётом этого.
Вот тут было доступно изложено:
https://sites.google.com/site/ltwood/projects/numpro/float
Microvolnovka
В принципе (дубль два), методом тыка, написал вот такую рабочую ерунду:
function CE2F(a, b)
-- less 1
if (b < 1) then
return a == b + math.floor(a)
end
-- Else
return a + math.floor(a) == b + math.floor(a)
end
-- Plus
print(CE2F(1.12 + 1.11, 2.23)) --> true
print(CE2F(100.5, 100 + 0.5)) --> true
print(CE2F(0.080, 0.075 + 0.005)) --> true
-- Minus
print(CE2F(99.9, 100 - 0.1)) --> true
print(CE2F(12.375 - 0.375, 12)) --> true
print(CE2F(0.012 - 0.002, 0.01)) --> true
-- Multiply
print(CE2F(2.5 * 2, 5)) --> true
print(CE2F(4 * 0.5, 2)) --> true
print(CE2F(0.75 * 10, 7.5)) --> true
-- Div
print(CE2F(5 / 0.5, 10)) --> true
print(CE2F(1 / 100, 0.01)) --> true
print(CE2F(5 / 100, 5 / 100)) --> true
A
local pay = 1.2
print(pay - math.floor(pay) == 0.2)
Можно ли как-то это превратить в true?
Не прибегая к tostring
Судя по контексту, планируется работа с какими-то финансами, а для этого обычно используется десятичная арифметика с фиксированной точкой ("fixed-point", "decimal"). Стоит поискать по этим ключевым словам, и/или самому написать простенький класс с базовыми операциями, где числа представляются в виде "целочисленных" мантиссы + экспоненты: 1.2 = 12 * 10^(-1) = {12, -1}
https://www.tarantool.io/ru/doc/latest/reference/reference_lua/decimal/
http://lua-users.org/lists/lua-l/2007-10/msg00391.html
Microvolnovka