Lua - идеальный встраиваемый язык|Lua vs Python, Lua vs C++, Lua vs JavaScript|Podlodka Podcast

  Рет қаралды 6,236

Podlodka

Podlodka

Күн бұрын

Пікірлер: 59
@JohnJTraston
@JohnJTraston Ай бұрын
На игровых проектах что я работал у нас было и по 2 и по 3 инстанса, даже разных версий, луы. Использовалось чисто для скриптования внутренних с/с++ api разных систем, практически без использования даже стандартных модулей и даже без использования таблиц и других наворотов с метами. Чисто тубо обёртка над с. Интеграция предельно простая, намного проще чем тот же Питон. Скорость интерпретации при таком использовании было близка и нативной. В дебегере не больше 10 степов и ты уже в функции своей нативной. Короче, для встраивания скриптования штука предельно полезная.
@qwertymangames1800
@qwertymangames1800 Ай бұрын
Про Roblox и разработку команды Roblox - язык luau стоило бы тоже упомянуть. Люди сделали апгрейд lua 5.1, добавили аннотацию типов как в питоне. Всякие штуки к которым мы привыкли вроде += и даже режим песочницы. Чтобы никто не обращался к файловой системе. То есть Roblox довольно безопасен за счёт luau. Получается сейчас есть три ветки lua: 1. Обычная lua 5.4 2. luaJIT - форк lua5.1 просто с лучшей производительностью 3. luau - форк lua5.1 с крутыми апгрейдами языка luau встроили в игру в стиме Retro gadgets. Что как бы показатель, что язык не только в Roblox можно применить
@focc
@focc Ай бұрын
Lua действительно очень приятный язык. Было интересно послушать человека, который юзал это в продакшене. Спасибо за выпуск!
@SunakSunak-b9t
@SunakSunak-b9t Ай бұрын
Близзард
@evgen_sr
@evgen_sr Ай бұрын
ппец, вы слышали этот выпуск с эпл подкаст? там вообще не понятно что говорит гость, как такое вообще можно было выпустить?
@yarik83men51
@yarik83men51 Ай бұрын
Lua + Roblox studio очень удобно писать скрипты. Lua очень "домашний", приятный язык, мне очень понравился
@qwertymangames1800
@qwertymangames1800 Ай бұрын
Потому что команда Roblox сделала свой форк языка luau где есть аннотация типов. Из-за чего их редактор кода стал намного круче работать
@MrLotrus
@MrLotrus Ай бұрын
neovim + lua = 💕
@Safr93
@Safr93 Ай бұрын
Добрый день, когда планируется обновление выпуска по языку go?
@ВладиславГришин-ш7ш
@ВладиславГришин-ш7ш Ай бұрын
я правильно понял гостя, что lua корутины прям из Си кода норм создавать и дергать (передавать им управление)? где бы примерчик посмотреть
@andreyyarmolenko5080
@andreyyarmolenko5080 Ай бұрын
Почему же вы не прислали гостю микрофон? )
@DeadRabbitCanDance
@DeadRabbitCanDance Ай бұрын
Ему прислали манной каши и заставили её всю съесть за время эфира.
@Vol_
@Vol_ Ай бұрын
В тему про фреймворки - LuaRT. Позволяет писать консоль и десктоп приложения под windows. Имеется своя ide
@ВладиславГришин-ш7ш
@ВладиславГришин-ш7ш Ай бұрын
ZeroBrane Studio ?
@Vol_
@Vol_ Ай бұрын
@@ВладиславГришин-ш7ш Нет, LuaRT-Studio
@SunakSunak-b9t
@SunakSunak-b9t Ай бұрын
BASIC идеальный встраиваемый язык
@КузГА
@КузГА Ай бұрын
Так, стоять, мне показалось или тут правда не сказали ни слова об отечественном движке instead?
@otkwass
@otkwass Ай бұрын
мой первый коммерческий ЯП :)
@gavr_sas
@gavr_sas Ай бұрын
из фреймворков lua love
@qwertymangames1800
@qwertymangames1800 Ай бұрын
Lua мой любимый язык, особенно его улучшенная версия luau. Пишу много лет. И в Roblox тоже писал. Но есть люди которые такие: "фу тут нет ООП, тогда буду транслировать typescript в lua" Это может и удобнее, но зачем для маленьких скриптов качать ноду и писать на ts. Если можно простые скрипты писать на специально для этого сделанном lua. Это обидно что никто не хочет учить lua используя только ts. В lua только две проблемы: 1. Странное ООП через метатаблицы. Ими просто не удобно пользоваться. 2. Нет лямбда выражений, а создавать анонимные функции слишком громоздко. 3. Можно было бы добавить ещё отсутствие типизации, но в luau как раз была добавлена типизация и остальные полезные штуки вроде оператора +=
@daiske2867
@daiske2867 Ай бұрын
1 Можно по подробнее чем оно странное? Тоже самое, что и js, как в питоне не знаю, но в остальном. Ну методы пишутся в нотации Class.\:method, подумаешь беда. 2 Но, если говорить по сути, громоздкие не значит нет. Все же все пользуются чем-то с автодополнением и уж там-то этот вопрос решаем, а смотрим мы все равно на тело. А вообще я бы еще больше раскрыл, lua в целом громоздок. else if вместо хоть какого, но свитча или pattern matching, continue через goto + метки. ("string"):gsub, но ({}):insert не работает, может только в нвиме так. Недалеко от кассы куцие регулярки еще и через %, банально в стд либе нет стандартных методов, там поиск, split(лишь через for gmatch), про таблицы я вообще молчу, вот вы жалуетесь на анонимные функции, а я иду дальше, а куда вам их применять то? Map filter, reduce, то нет. Итерация по строке, как, правильно только предварительно преобразовав ее в таблицу или gmatch хак, или sub(i, i), ну что это такое. Кстати, вы в 3 добавили, но вот тоже, нет банальных инкрементов и +=. Я понимаю, что встраивание, все дела, допишите сами на си, но. 3. Если вам нужна типизация, то скриптовые языки, причем все мимо, что печально. Так как в лучшем случае это будет jit\умный интерпретатор. А указания типов это лишь капля в море, то что , что-то является числом, не говорит о том, какое это число.
@qwertymangames1800
@qwertymangames1800 Ай бұрын
@@daiske2867 lua сравнивают обычно с python, хоть языки совершенно разные. lua минималистичен, без ООП. В lua очень мало функционала. А python носит статус "простого" языка. Хотя это не совсем так. lua ещё проще так как в ней меньше правил. Так вот ближе всего к lua только js. Да в js больше возможностей, но в js как и в lua возможно реализовать ТОЛЬКО прототипное ООП. Минусы такого ООП: отсутствие и невозможность реализовать самому абстрактный класс, нормальную типизацию которая бы реально скрывала поля при апкасте. Нет интерфейсов. Так как нет типов нет и дженериков. Именно из-за кривого ООП в js придумали язык ts в котором всё это есть. Который бы транслировался в js. Позже появился проект "ts to lua" который может ts транслировать в lua код.
@qwertymangames1800
@qwertymangames1800 Ай бұрын
@@daiske2867 использовать методы с точкой и двоеточием это крутая фича языка. Это наоборот плюс lua ведь в метод с точкой можно первым аргументом передать контекст метода.
@qwertymangames1800
@qwertymangames1800 Ай бұрын
@@daiske2867 так js обмазан сахаром по этому применение точки к строке или числу автоматические оборачивает это значение в класс и вызывает у него метод. А lua минималистичен. lua можно сравнить с Си на котором он написан. Какой ещё язык будет весить меньше мегабайта? Из-за простоты его и проще выучить. continue как и другие дополнения языка вроде замороженных таблиц и += есть в luau. По сути как и на Си, на lua можно создать своё ООП и ФП. Я лично добавляю функцию filter. Она часто используется в проектах. Хорошая типизация в Julia. Там есть абстрактные типы Number, Int, Float и конкретные Int32, Int16, Float64. Можно перегружать функции для работы с Int и Float по разному если необходимо.
@daiske2867
@daiske2867 Ай бұрын
@@qwertymangames1800 начну с главного. Большая часть того, что вы описали не нужна или реализуема. С точки зрения встраиваемости, сильно с ООР разгуливаться, ну странно, вы же язык встраивание, так в той системе все и реализуйие, а на луа чисто по мелочи, но даже так. Интерфейсы + абстрактные классы, банально через метатаблицы решаются. Да громоздко, но язык такой. К если не нравится, существуют действительно трансляторы в него, аля moonscript и fennel. Дженерики в динамическом языке это оксюморон. Потому что он by design дженерик. Либо опять уточняйте, если вам не хватает с++ шаблоново, то отсылка к началу, вам не стоит использовать динамику. Ну и про js и ts. Классы в js с es6 как языковая конструкция есть, да даже с приватными полями. Но я тут уже играет лично мое мнение, что и от кого вам скрывать? Всегда можно договориться _поле -> не публичное. Если говорит о луа, то даже больше того, существует local функции и переменные, просто класс в отдельный модуль и не давайте доступа к этим локальным. Ну решается все это. Ну и раз уж АК по честному, то никто не запрещает пользовать lsp, который сам типы просчитает и которому ты их можешь подсказать, что вообще говоря вопрос не столько языка, сколько инфраструктуры.
@unjnown333
@unjnown333 Ай бұрын
lisp поинтереснее как встраиваемый
@daiske2867
@daiske2867 Ай бұрын
можете пожалуйста раскрыть чем? Я догадываюсь, что это упрется в макросы и репл, но все же, по подробнее если.
@unjnown333
@unjnown333 Ай бұрын
простой синтаксис, макросы, функциональное программирование
@daiske2867
@daiske2867 Ай бұрын
​@@unjnown333Лисп далеко не функциональный язык, особенно по сравнению с каким-то хаскелем, ну или вы свое значение имеете функциональности.
@TheRedbeardster
@TheRedbeardster Ай бұрын
OpenResty, Vector,Tarantool + Lua - норм
@oriontvv
@oriontvv Ай бұрын
какое ужасное качество звука у гостя..
@arkadiyviking3919
@arkadiyviking3919 Ай бұрын
Неужели нельзя при монтаже взять звук записанный напрямую, а не через стрим?! Надоедает вслушиваться , что там говорит гость...
@devoops7580
@devoops7580 Ай бұрын
Ужасное качество звука у гостя, приходится вслушиваться в каждое слово. Меня хватило на 15 минут. Так и не узнаю, почему нумерация массива с 1 - это технологический прорыв.
@ВладиславГришин-ш7ш
@ВладиславГришин-ш7ш Ай бұрын
есть еще neolua
@als-creator
@als-creator Ай бұрын
извините, но невозможно слушать, ничего не понятно что он рассказывает, микрофон ужасный, есть ли какой то интерактивный курс lua на русском где то?
@video_on_the_run
@video_on_the_run Ай бұрын
"Отписка" - это кринжовый комментарий, который нельзя было писать.
@PVBocs
@PVBocs Ай бұрын
Про Scheme было? В первую очередь Guile
@daiske2867
@daiske2867 Ай бұрын
Я, безусловно, глуп, но просветите, а зачем он, даже забывая о том, что он вскользь упоминается. Скорее всего как факт сравнения. Но, для меня лисп загадка, никогда не понимал всего флера вокруг него, а все что и слышал так 2 магических слова макросы и репл.
@mirvin11
@mirvin11 Ай бұрын
За редкими исключениями lua в minecarft никому не нужен
@Timba246
@Timba246 Ай бұрын
у луа есть несколько дебильных фишек которые помоему на порядок снижают удобство, а с ним и популярность языка это do end, отсутствие continue и x = x + 1 может еще чтото, давно не писал на нем
@charlsken6684
@charlsken6684 Ай бұрын
Почему ведущий лыбиться на каждом вопросе? Он вопрос даже задавать вопрос не закончил а тужиться что пиздец? Зачем это клоунада?
@DeadRabbitCanDance
@DeadRabbitCanDance Ай бұрын
Почему же Вы не умеете по-русски разговаривать? Понятно что Вы понимаете о чём говорите, но Вы так криво и косноязычно повествуете, что во первых ничего не понятно, а во вторых это невозможно слушать. Так и не понял нафига он нужён, кроме того что у него есть реализованный интерпретатор, который удобно встроить куда-то и пользоваться самим фактом того, что можно динамически интерпретируемые куски кода использовать - ну это видимо и привело к популярности в качестве языка для модов в играх. 33:52 Ну может хоть сейчас что то полезное расскажете? Я видимо тупой, я совсем ничего не понял из всего что вы бубнили и жевали.
@qwertymangames1800
@qwertymangames1800 Ай бұрын
8:00 говорит что "закопает язык одним фактом". Но как раз нумерация с единицы единственная адекватная вещь которую должны были использовать все высокоуровневые языки программирования по типу python, js. А не тащить низкоуровневый стиль из Си в высокоуровневые языки. То что python нумерует с нуля бред. Ещё больший бред что в python так же 1 - это true, 0 - false. Опять же стащили с Си. Но в контексте python/js эти штуки контринтуитивные. На js мы не пишем код близкий к машинному. Так почему нас обязывают думать как машина, возвращаться к Си??? Очень глупо было так строить высокоуровневые языки. И тут lua преуспел - в нём всё логично. Любые цифры - true. А false может быть только у самого false и у nil. И всё.
@oriontvv
@oriontvv Ай бұрын
>python так же 1 - это true, 0 - false. это уже очень давно не так. в python3 это исправили и еще очень много накопившихся проблем, хотя жаль что не все. для перечисления с 1 если так уж хочетя - используйте enumerate(my_list, start=1). абсолютное большинство использует индексацию с 0, так даже математики решили сделать в большинстве пакетов и довольны. python - это клей для сишных либ, поэтому он такой популярный и поэтому для него уже все понаписали. хотелось бы подмножество питона, которое было бы удобно встраивать, тогда бы луа просто вытеснили. посмотрите на всякие godot.
@qwertymangames1800
@qwertymangames1800 Ай бұрын
@@oriontvv однако python 2 всё ещё используется и обновляется. Так что не вижу смысла писать код на 3 версии. Ситуация аналогичная lua где версию 5.4 не используют только потому что luau и luajit базируются на lua 5.1
@qwertymangames1800
@qwertymangames1800 Ай бұрын
@@oriontvv python, js и прочие языки никогда не будут весить меньше мегабайта как lua. Не будут иметь такой простой и малый синтаксис чтобы его можно было изучить за 15 минут. Нет таких языков просто. Изучать python гораздо сложнее чем lua. Так что lua ещё долго никто не сможет вытеснить с рынка встраиваемых языков. lua это компактный и простой синтаксис с кучей логичных и удобных особенностей которых нет у сиподобных языков. Сиподобные языки просто наворовали своих фишек у Си. Даже если в языке им не место и они не логичные. Например оператор + который работает по разному со строками и числами.
@oriontvv
@oriontvv Ай бұрын
@@qwertymangames1800 у вас неверная информация. Второй питон не обновляется официально. поддерживают код на нем пара процентов бедолаг, которые не могут попросту смигрироваться. В 3й версии очень много удобных нововведений типа async/await, gradual typing и многого другого. Да и работает он быстрее.
@oriontvv
@oriontvv Ай бұрын
@@qwertymangames1800 поэтому я и отметил что "подмножество языка". На счёт кучи удобных особенностей - звучит довольно смешно для языка, в котором нет множеств, деревьев и вообще все надо реализовывать самому. Язык безусловно очень компактный, но от того заставляет писать велосипеды для всего(пример с парсингом JSON - отлично это подчеркивает), что плодит баги, удорожает разработку и поддержку. Оттого вообще странно что он находит применение в современном мире, где абсолютно все стремится к жесточайшей оптимизации.
@drollery6399
@drollery6399 Ай бұрын
Питон своей базовой простотой, снижает порог вхождения программиста в профессию. Луа УСЛОЖНЯЕТ старт. Питон позволяет сделать приложение целиком, Луа скриптовый язык. Питон позволяет своей мощью, разработчику быть в его окружении. Не подгружая знания из других языков. На этапе обучения программист получает от Питона, отклик, даёт на выходе даже работающие приложения 🙂Питон перерос уже язык для обучения, язык для скриптования. Став языком разработки. Причём признан в так называемых кругах, "профессиональных разрабов". А Луа так и остался скриптовым. Никуда не растёт. Не взлетел. Сравнивать туповато. Но в целом контент пилится, пипл хавает 🙂
When Cucumbers Meet PVC Pipe The Results Are Wild! 🤭
00:44
Crafty Buddy
Рет қаралды 49 МЛН
How Much Tape To Stop A Lamborghini?
00:15
MrBeast
Рет қаралды 200 МЛН
СКОЛЬКО ПАЛЬЦЕВ ТУТ?
00:16
Masomka
Рет қаралды 3 МЛН
Асинхронный python / Python FastAPI / Python uv / Юрий Селиванов / #16
2:02:23
Организованное программирование | Кирилл Мокевнин
Рет қаралды 12 М.
Черные дыры. Борис Штерн
1:01:06
Лекторий Живой город
Рет қаралды 105 М.
Архитектура ядра Linux / ЦОС и DSP-процессоры / Linux для RISC-V
1:30:15
When Cucumbers Meet PVC Pipe The Results Are Wild! 🤭
00:44
Crafty Buddy
Рет қаралды 49 МЛН