Size: a a a

2020 March 03

S

Snusmumriken in Lua in Moscow
Кирилл Надеждин
А что всё-таки насчёт проблем с типами? Я знаю что некоторые студии пишут суперсеты Lua чтобы притащить типы в язык, но это не идиоматично и не поощряется. То есть проблема как будто есть (иначе бы никто не чесался и не делал строгую типизацию), но как будто не такая большая как говорится в статье
Скорее всего, отсутствие "автоматических" проверок при изменении таблиц. Типа в таблице должно быть "виртуальное" поле "color", а ты такой пишешь "Color" и оно автоматически не ругается на это.
Ну и чел ругается на отсутствие типизации, которая как бы есть в typescript.

И это исправляется в луа кастомной реализацией классов с перегруженным __newindex.
источник

A

Anton in Lua in Moscow
Кирилл Надеждин
А что всё-таки насчёт проблем с типами? Я знаю что некоторые студии пишут суперсеты Lua чтобы притащить типы в язык, но это не идиоматично и не поощряется. То есть проблема как будто есть (иначе бы никто не чесался и не делал строгую типизацию), но как будто не такая большая как говорится в статье
Ну если сравнивать JS и Lua, то JS хуже: оба динамически типизированы со всеми преимуществами и недостатками, но в Lua более сильная типизация (меньше неявных преобразований при операциях с данными разных типов).
источник

КН

Кирилл Надеждин in Lua in Moscow
Companion Philipp
(Кажется, то что ты имеешь ввиду, зовется статическая типизация, а не строгая, или я ошибаюсь?)
Это всё лирика и филология, главное вопрос правильно поняли
источник

AS

Anatoliy Shipitcyn in Lua in Moscow
Anton
Ну если сравнивать JS и Lua, то JS хуже: оба динамически типизированы со всеми преимуществами и недостатками, но в Lua более сильная типизация (меньше неявных преобразований при операциях с данными разных типов).
она просто проще и логичнее в lua и нет наркомании в виде массива объекта
источник

S

Snusmumriken in Lua in Moscow
Но требует немножко больше знаний для реализации штук, которые в жаваскрипте встроены по умолчанию (ооп с фичами). И отсутствуют неявные штуки (привет, неизвестно чем являющийся неявно подставленный this, который все подряд переделывают в self чтобы хоть как-то определиться)
источник

S

Snusmumriken in Lua in Moscow
Кароч, луа — проще и гибче но строже, и чтобы делать фичи нужно иметь понимание механизмов, спасибо их небольшому количеству и прозрачности.
источник

AS

Anatoliy Shipitcyn in Lua in Moscow
Snusmumriken
Но требует немножко больше знаний для реализации штук, которые в жаваскрипте встроены по умолчанию (ооп с фичами). И отсутствуют неявные штуки (привет, неизвестно чем являющийся неявно подставленный this, который все подряд переделывают в self чтобы хоть как-то определиться)
ооп там такое же как в луа прототипное
источник

S

Snusmumriken in Lua in Moscow
У луа нет ооп в принципе, оно требует конкретной реализации.
источник

S

Snusmumriken in Lua in Moscow
Даже вот это —
local ClassFoo = {}
ClassFoo.__index = ClassFoo

function ClassFoo:new(x, y)
 self = setmetatable({}, self)
 self.x, self.y = x, y
 return self
end

Уже конкретная реализация ООП через метатаблицы. Можно сделать иначе (например, без метатаблиц), и даже кардинально по другому (перегруженные __index/__newindex, которые следят за текущим скоупом, приватными/виртуальными полями и множественными родителями). Конкретного стандарта нет, фичи разных реализаций различаются, что хочешь — то и впиливай, балансируя скорость и фичеватость. Можно даже реализовать без прототипов : )

В JS есть ключевое слово Class, предоставляющее конкретную реализацию ооп на прототипах. Ну и можно нагенерить классов из функций/объектов. Это уже считается deprecated-кастомщиной, и кардинально изменить поведение нельзя.
источник
2020 March 04

КН

Кирилл Надеждин in Lua in Moscow
Продолжая тему встраиваемости - кто-нибудь имел опыт запуска Lua в браузере через что-то кроме emscripten?
источник

AG

Alexander Gladysh in Lua in Moscow
Да
источник

AG

Alexander Gladysh in Lua in Moscow
Fengari из современного очень годный
источник

S

Snusmumriken in Lua in Moscow
(но зачем лишние абстракции?)
источник

S

Snusmumriken in Lua in Moscow
Это же просто бессмысленный и беспощадный лишний слой. Зачем он нужен?
источник

AS

Anatoliy Shipitcyn in Lua in Moscow
шоб интерфейс тормозил еще сильнее и браузер жрал больше памяти
источник

AS

Anatoliy Shipitcyn in Lua in Moscow
очевидно же
источник

AG

Alexander Gladysh in Lua in Moscow
Я хочу, чтобы у меня геймдиз не учил второй язык :)
источник

AS

Anatoliy Shipitcyn in Lua in Moscow
все равно придется
источник

S

Snusmumriken in Lua in Moscow
А кстати, почему геймдиз занимается веб-программированием? : )
Области совсем разные и требуют диаметрально противоположных стеков, ты и сам в курсе. На ЖС получится прямее и короче хотя бы потому, что он для этого предназначен.

Это можно понять как "единообразие кодовой базы", но как незаставление геймдиза — смотрится немного странно : )
Учитывая что геймдиз в таком случае придётся учить хтмл/цсс, но по каким-то причинам не учить ЖСу.

Вот если научить браузеры в нативную луа — даа.
источник

T

The Dormouse in Lua in Moscow
Я тут мимокрокодил, но почему геймдизу обязательно знать HTM и CSS? Может, задачи этого вообще не требуют.
источник