Ага, всё так, только псевдо-статический тайпскрипт противоречит общепринятой точке зрения, что для больших приложений статическая типизация подходит лучше динамической. Тайпскрипт типизировали явно для других целей.
Вы заблуждаетесь, ключевое слово class и обвязка - это синтаксический сахар над прототипным наследованием, в этом смысле ни чего никуда не завезли.
LatteLua делает для Lua ровно то же самое, что стандарт ES6 сделал для JavaScript: он не ломает мощную прототипную модель (метатаблицы), а дает ей современный, "полноценный" синтаксис, но это сахар а не концепт языка.
В новых редакциях JS завезли уже полноценные классы, наследования, расширения и прочее, хотя под капотом они превращаются во всё те же метаобъекты с прототипами.
Слово «полноценные» подразумевает изменение фундаментальной модели.
В классических ООП-языках (Java, C++) класс — это «чертеж». Сначала есть класс, потом по его образу создается объект. Память выделяется ровно под структуру класса.
В JS (и в Lua) «класс» не является чертежом. Это живой объект-прототип, который делегирует свои свойства другим объектам.
Утверждать, что в JS появились «полноценные классы», но они остались «прототипами» — это оксюморон в чистом виде, всё равно что сказать: «Мы построили полноценный современный электрокар, хотя под капотом у него всё та же лошадь, просто её не видно за обшивкой».
Вы, судя по всему, воспринимает Lattelua как изолированный новый язык или новый интерпретатор, в то время как это — синтаксический сахар (transpiler).
это третий этап шугаризации
Детали имплементации в статье, чисто семантически это и есть Lua, просто с другим «лицом».
Поэтому вопрос метатаблиц/прототипов для меня вопрос открытый.
Вопрос про метатаблицы/прототипы здесь закрывается однозначно: классы в LatteLua — это синтаксический сахар над классическим Lua-паттерном метатаблиц. Никакой скрытой «JS-подобной» реализации на уровне C-движка нет. Это прозрачная обертка, которая избавляет от написания:
setmetatable(self, { __index = ... })
Если вы умеете работать с метатаблицами в Lua, вы уже знаете, как работают классы в LatteLua.
как байдингом так и полной lua имплементацией интерпретатора языка
LatteLua не пытается переписать интерпретатор. Все внешние интеграции (как пример с cqueues или lanes) — это обычные Lua-модули. Синтаксис просто делает работу с ними визуально чище (например, через операторы :: для вызова методов или короткие лямбды ->). Это не «биндинг» в смысле C-API, это просто удобный способ вызывать стандартные функции.
LatteLua — это не «черный ящик» с собственной реализацией ООП. Это инструмент, который берет ваши знания о метатаблицах Lua и позволяет записывать их в стиле современных языков (Swift/Kotlin/JS), не теряя при этом прямого доступа к «кишкам» Lua. Если вдруг нужно посмотреть, во что превращается ваш класс — достаточно запустить транспайлер и увидеть обычный Lua-скрипт.
В принципе все понятно:- статью не читал, но осуждаю. Если действительно интересно - потрудитесь, уделите 20 минут своего драгоценного времени на прочтение и все вопросы отпадут, как то так...
Это не столько проигнорированный критерий, сколько осознанная необходимость, здесь lua "машинный" язык, по отношению к lattelua. Было бы странно добавлять типизацию, при том что итог компиляции все тот же динамический lua. Иными словами: типизация - это инструмент, а не цель. Примеры: SmallTalk, Erlang, Ruby да в конце концов Python с его огромной кодовой базой.
Возможно не по теме, но все же спрошу — перестали отрабатывать псевдо-ссылки.
В качестве пример, Алиэкспресс -> Профиль -> Заказы. Хоть затыкайся, срабатывает только
такая последовательность: правый клик и потом уже левый, такое впечатление что какие то заморочки с keyup/keydown/release/etc.
Дистр один, void, на разных машинках.
Я конечно дико извиняюсь, но вам жена не отвешала за такое. Напоминает проекцию желаемого на действительное, уж сильно много проституток и борделей как по мне. Аллегория так себе, смахивает на какой-то фетиш.
С первого раза завелись DBI-Perl и JDBC потому как это "тупые клиенты" к БД.
Что значит "тупые клиенты", почитайте POD по DBD/DBI, ознакомьтесь хотя бы с 10% его функционала что бы такое утверждать.
Тем не менее, с помощью конфигурации можно и ваш запрос реализовать.
Я не знаю какие танцы с бубном возле либы у вас практикуются, но у нас хоца что бы просто работало, а вот если где-то что-то неординарное, то можно и покрутить, но не наоборот.
Тут как в песне - если надо объяснять, то не надо объяснят ...
Ага, всё так, только псевдо-статический тайпскрипт противоречит общепринятой точке зрения, что для больших приложений статическая типизация подходит лучше динамической. Тайпскрипт типизировали явно для других целей.
Вы заблуждаетесь, ключевое слово class и обвязка - это синтаксический сахар над прототипным наследованием, в этом смысле ни чего никуда не завезли.
LatteLua делает для Lua ровно то же самое, что стандарт ES6 сделал для JavaScript: он не ломает мощную прототипную модель (метатаблицы), а дает ей современный, "полноценный" синтаксис, но это сахар а не концепт языка.
Слово «полноценные» подразумевает изменение фундаментальной модели.
В классических ООП-языках (Java, C++) класс — это «чертеж». Сначала есть класс, потом по его образу создается объект. Память выделяется ровно под структуру класса.
В JS (и в Lua) «класс» не является чертежом. Это живой объект-прототип, который делегирует свои свойства другим объектам.
Утверждать, что в JS появились «полноценные классы», но они остались «прототипами» — это оксюморон в чистом виде, всё равно что сказать:
«Мы построили полноценный современный электрокар, хотя под капотом у него всё та же лошадь, просто её не видно за обшивкой».
Вы, судя по всему, воспринимает Lattelua как изолированный новый язык или новый интерпретатор, в то время как это — синтаксический сахар (transpiler).
Детали имплементации в статье, чисто семантически это и есть Lua, просто с другим «лицом».
Вопрос про метатаблицы/прототипы здесь закрывается однозначно: классы в LatteLua — это синтаксический сахар над классическим Lua-паттерном метатаблиц. Никакой скрытой «JS-подобной» реализации на уровне C-движка нет. Это прозрачная обертка, которая избавляет от написания:
Если вы умеете работать с метатаблицами в Lua, вы уже знаете, как работают классы в LatteLua.
LatteLua не пытается переписать интерпретатор. Все внешние интеграции (как пример с cqueues или lanes) — это обычные Lua-модули.
Синтаксис просто делает работу с ними визуально чище (например, через операторы
::для вызова методов или короткие лямбды->). Это не «биндинг» в смысле C-API, это просто удобный способ вызывать стандартные функции.LatteLua — это не «черный ящик» с собственной реализацией ООП. Это инструмент, который берет ваши знания о метатаблицах Lua и позволяет записывать их в стиле современных языков (Swift/Kotlin/JS), не теряя при этом прямого доступа к «кишкам» Lua. Если вдруг нужно посмотреть, во что превращается ваш класс — достаточно запустить транспайлер и увидеть обычный Lua-скрипт.
И вот это всё есть в статье)
Это истерика, не смех. И все мы знаем почему)
А смешно знаете что, то что в ветке о производительности статических ЯПов, упоминается средство контроля дисциплины разработчика (typescript)
В принципе все понятно:- статью не читал, но осуждаю. Если действительно интересно - потрудитесь, уделите 20 минут своего драгоценного времени на прочтение и все вопросы отпадут, как то так...
А что вас смущает, сударь никогда не слышал про Golang, JavaScript, Scala, Julia
Так исторически сложилось) наследство от MoonScript. Я только могу предположить, что Leafo вдохновлялся ассоциацией
!с "выполнить"По началу самому это казалось неуклюжим, а по итогу, как не крути, это удобно
Это не столько проигнорированный критерий, сколько осознанная необходимость, здесь lua "машинный" язык, по отношению к lattelua. Было бы странно добавлять типизацию, при том что итог компиляции все тот же динамический lua.
Иными словами: типизация - это инструмент, а не цель. Примеры: SmallTalk, Erlang, Ruby да в конце концов Python с его огромной кодовой базой.
Лично мне понравился Lua++
Возможно не по теме, но все же спрошу — перестали отрабатывать псевдо-ссылки.
В качестве пример, Алиэкспресс -> Профиль -> Заказы. Хоть затыкайся, срабатывает только
такая последовательность: правый клик и потом уже левый, такое впечатление что какие то заморочки с keyup/keydown/release/etc.
Дистр один, void, на разных машинках.
sorry действительно забыл
плохо что /dev/trash не поддерживается
dpkg -S ищет по базе установленных пакетов.
Возможно будет лучше воспользоваться apt-file она ищет везде и по шаблону.
Слов нет, промолчу...
Я конечно дико извиняюсь, но вам жена не отвешала за такое. Напоминает проекцию желаемого на действительное, уж сильно много проституток и борделей как по мне. Аллегория так себе, смахивает на какой-то фетиш.
Заказуха чистой воды, не?
Почему то я так и подумал ...
Чет по этому поводу большие сомнения. Проверять же не будем?
Что значит "тупые клиенты", почитайте POD по DBD/DBI, ознакомьтесь хотя бы с 10% его функционала что бы такое утверждать.
Я не знаю какие танцы с бубном возле либы у вас практикуются, но у нас хоца что бы просто работало, а вот если где-то что-то неординарное, то можно и покрутить, но не наоборот.
del
Да-да, язык тут не причем, а то что либа/фрэймворк пишется под язык и по стандартам языка - это не то.
Или что, я могу взять DBD/DBI модуль работы с базой от perl'а и заюзать его в python/php, или наоборот?