Котаны, стоит ли изучать этот язык? Где он вообще применим и применим ли? Есть ли тут усрешные лунатики, делающие по 300кк в секунду? Не тролль, лжец, девственник.
>>1583108 Представь, что написал ты свою игру, как полагается, на сях. Потом захотел, естественно, вынести в текстовый файлик некоторые параметры и подгружать их при запуске (ну не будешь ведь перекомпилировать программу, чтобы изменить разрешение окна). Ну и вынес ты эти опции в отдельный файлик. Вынес - и тебе понравилось. Дальше ты придумал, как в таких же файликах описывать набор параметров персонажа, которые тоже хотелось бы тюнить на лету. Затем тебе захотелось вынести такой файлик чуточку логики, и ты начал изобретать набор простейших команд. Число команд росло, ты их структурировал, и на каком-то этапе просто понял, что занимаешься разработкой собственного мини-языка. Ты, естественно, с гордостью сообщаешь об этом на каком-нибудь форуме - а вместо восхищений твоим велосипедом получаешь ответ: для твоих целей уже существует специальный язык, называется Lua.
Lua - это по своей задумке именно встраиваемый язык в дополнение к сишным программам, ничего больше. По этой самой причине он очень мал и очень прост, и тридцать лет сидит в своей маленькой, но крепкой нише.
Возвращаясь к теме твоего поста: луа никем не учится как основной язык. Ее полезно знать и указывать в резюме, она часто является плюсом. При этом работы на чистой луа очень мало, и она сосредоточена в геймдеве.
Ну, в общем, понятно. Тут есть одна большая софтина для промышленной отчетности, и вот в ней можно что-то допиливать на луа. Мне предложили разовые задания выполнять, но для этого нужно этот язык поковырять. Вот и думаю, стоит ли оно того.
>>1583103 (OP) Что с многопоточностью у Lua? Корутины запускаются только на одном ядре? Без сторонних библиотек выжать всю мощь всех ядер процессора не выйдет?
>>1587485 Питон хоть и простой, но всё же не стремится быть минималистичным и встраиваемым. Наоборот, это независимый язык с развитой стандартнрой библиотекой и кучей всевозможных фич. Рантайм, как следствие, больший и сложный, и встроить его поэтому можно далеко не везде.
>>1583103 (OP) Язык, на котором я вкатился в ИТТ. Несколько лет писал только на Lua. До сих пор переодически пишу небольшие программки. Вкатываюсь в тред.
>Котаны, стоит ли изучать этот язык? Смотря, с какой целью. Язык крайне простой, можно вникнуть в основные моменты за исключением метатаблиц, без которых можно обойтись, если не пишешь сильно сложную логику за пару-тройку дней, так что можно и по-приколу изучить. Для понимания узких мест при оптимизации и тех же метатаблиц уже придётся вдумчиво покурить мануалы, но и без них можно быстро писать быстрые ништяки. Кто-что не говорил бы, язык куда проще того же Python'а, так как ультраминималистичная стандартная библиотека и ООП в духе JavaScript'а.
>Где он вообще применим и применим ли? Раньше встраивался в программы в качестве скриптового, сейчас как-то забросили эту идею и не вижу особо примеров. Если пишешь какие-то программы, которые можно расширять модами, то язык - самое оно: простой, быстрый, минималистичный, легко расширяется через C. Можно писать небольшие программы-утилиты, можно большие. Есть обвязки к ncurses/POSIX функциям. Есть обвязки к SDL. Есть целый LOVE2D - фреймворк с кучей встроенных фич, на котором можно довольно легко и быстро писать в том числе игры. Есть великий и ужасный LuaJIT, который уже кучу раз похоронили и откопали обратно и который ускоряет и без того бодрый Lua до уровня чуть ли не нативного кода. Есть Lapis, так что можно пилить веб-приложения в духе JS/Node. Есть luarocks - собственный pip с пакетами и библиотеками. Есть MoonScript - язык в духе CoffeeScript, если синтаксис Lua чем-то не устраивает. Нет поддержки многопоточности (которая есть в LOVE2D), т.к. язык изначально был заточен под встраивание. Нет каких-то мощных библиотек, т.к., опять же, расчёт был на встраивание, да и сообщество довольно маленькое, чтобы написать код на все случаи жизни. На мой взгляд, язык не умер только для тех, кто использует его для расширений в своих проектах или пишет для себя.
>Есть ли тут усрешные лунатики, делающие по 300кк в секунду? Lua вообще нигде не востребован, особенно в качестве основного. В довесок к C/C++ может стать плюсом при устройстве на работу, поэтому ты их здесь точно не найдёшь.
>>1583103 (OP) Lua + С++ непоколебимые стандарты геймдева если планируешь вкатываться туда, то точно стоит ну а так где луашечки только нет, тот же тарантул
Отвратительный язык, помню сколько крови попил когда пытался отладить примитивнейшую вещь, ебанутый синтаксис, писать not smthing вместо !smthing, ~= это не равно, ^ возведение в степень, а где же битовые операции, а их нет, ага, скриптовый язык "для игр" где все делалось через битовые флаги, добавление строк чере .., ебанистическое создание вложенных массивов синтаксисом типа arr[0]=[[]] массивов то нету, только мапы, какие то недофункции и недообъекты, с которых даже js-овский .prototype плачет горючими слезами, отдельный массив в котором хранятся все глобальные переменные, неадекватные либы, например рандом возвращает числа с нуля, а рандом(макс) возвращает с 1, в строках символы считаются с 1, а не с нуля, можно еще долго продолжать. Да Луа весит мало, рантайм 1Мб, но впечатления от него уровня плюшкинизма - ээ начальника, ну подумаешь говно, зато весит мало, давай добавим в проект ну
>>1607963 Вес роли не играет особо в проектах, а вот скорость работы - быстрее luajit пока что человечество ничего не придумало. Плюс легко осваивается не программистами. А то, что ты пишешь - это ты осилил какой-то синтаксис одного языка, а теперь говоришь, что языки с другим синтаксисом - сложнаа.
>>1608933 >Вес роли не играет особо в проектах В каких то значит играет, типа роутеров или контроллеров умного дома. И я кстати напутал, там рантайм не 1мб, а 1/10мб. > скорость работы - быстрее luajit пока что человечество ничего не придумало. Нуу как то спорно, чекнул пару бенчмарков - там в 50% случаев и Java/C#/JS его обгоняют. Плюс понятно что он быстрый потому что в нем мало чего реализовано. >Плюс легко осваивается не программистами. Вообще не аргумент, в нем есть переменные, замыкания, а значит человек освоивший Lua также освоит и питон и JS >А то, что ты пишешь - это ты осилил какой-то синтаксис одного языка, а теперь говоришь, что языки с другим синтаксисом - сложнаа. Ну это ты уже совсем мимо, с переводом стрелок с недостатков луа на мою личность, я знаком с 20 языками, из них половина C-подобных, 3 ассемблера, а с косяками дизайна языка сталкивались и другие и писали об этом. Вот сейчас перечитал, навскидку: индексы не с 0, массивов нет (присвоение элементу Nil удаляет его из списка, а значит индексы меняются), поэтому те кто писали что "это язык для простого взаимодействия с C в геймдеве" сразу мимо, поскольку придется очень много плясать с бубном чтобы использовать те же данные, полученные из сишного массива. Более того оператор длины списка врет, #{1,2,3,nil} возвращает длину 4, а #{1,2,nil,3,nil} - 2. Прочие странности, которые принуждают писать в другом стиле - 0==true, про not/or/and уже писал, отсутствие битовых операций тоже, присвоение это не выражение, так что прощайте геттеры в if-ах, нет сокращений для инкремента, нет +=, нет switch. Цикл for i=from, to() вызовет функцию to() только один раз до цикла, лол. И i нельзя менять внутри цикла самому, это UB. Если функция возвращает список, то она может вернуть только первый элемент, если после этой функции вызывается другая, например, print(f123(), f456()) возвращаюших [1,2,3] и [4,5,6], напечатает 1,4,5,6. Удобно же. В lua нет continue, поэтому вместо for(...) { if(cond) continue; } пишут что-то вроде for(...) do { ... if(!cond) break; }while(true)
>>1615998 Потому что > захотелось вынести такой файлик чуточку логики Например, сначала у тебя icon.x = 50 Потом ты захочешь icon.x = 50 + 5 Потом offset = 5 icon.x = 50 + offset Потом offset = 5 for i = 0 to 10 icon.x = 50 + offset * i
>>1615998 Потому что это не просто параметры, а логика. Записать её в виде данных не выйдет, она структурированная и сложная. Можно выносить алгоритмы в скриптовые файлы. На данных ты не напишешь алгоритм. На Lua (или подобном) напишешь.
>>1616222 Вообще, строго говоря, всё, хранимое на неком хранилище данных - данные. Но с точки зрения процессора/исполнителя есть разница между сегментом кода (исполняется и как правило read-only) и сегментом данных (не исполняется).
У меня такой вот вопрос, реально ли зная только луа начать зарабатывать? Да я еблан который начал изучать программирование с луа
Второй вопрос, немного не в тему, вот допустим есть у меня таблица, там есть функция которая возвращает рандомное значение, как мне блять сделать так что бы у меня в другой функции значение не было всё время одним и тем же в этой таблице. Хочу ссылаться на таблицу в функции, но происходит пиздец.
>>1620475 Год назад покупал бота на луа для !САМПА каждый месяц за 1000 рублей, у разраба скрипта было около 100 таких пользующихся скриптом людей делал 100к зелени
>>1615505 >Ну это ты уже совсем мимо, с переводом стрелок с недостатков луа на мою личность Нет, он как раз правильно подметил - то, что ты перечислил, является именно вкусовщиной, а не недостатками языка. Мне кстати тоже не нравится всё это. >оператор длины списка врет, #{1,2,3,nil} возвращает длину 4, а #{1,2,nil,3,nil} - 2 Вот по делу укол, остальное - вкусовщина.
>>1620598 >каждый месяц за 1000 рублей, у разраба скрипта было около 100 таких пользующихся скриптом людей >делал 100к зелени Игровой зелени, что-ли? Потому что 1000 рублей умножить на 100 равно 100к рублей, а не 100к зелени.
>>1615505 > Нуу как то спорно, чекнул пару бенчмарков - там в 50% случаев ..
Вася, ты среди интерпретируемых языков сравнивай, задачи-то разные. Еще бы с плюсами сравнивал.
> Плюс понятно что он быстрый потому что в нем мало чего реализовано.
Не мало, а достаточный функционал, который не вводит практически ничего лишнего и не портит скорость работы. Именно поэтому Lua в таких областях, где критична скорость, например gamedev уже кучу лет является практически стандартом для скриптования.
В хидере библиотеки есть подобные участки как на пике, ffi.cdef не умеет работать с дефайнами, объявлять их как на втором пике тоже не дает. Как это обходится, или потом при формировании уже итоговой таблицы для биндинга этой библиотеки T надо будет ручками задавать через ffi.new такие конструкции?
>>1583554 Луашные корутины имеют к многопоточности такое же отношение, как пистоньи треды. Есть какие-то полурабочие библиотеки если ты хочешь сам запилить в свой код race condition-ы. Для серьезных но четко обозначенных целей серьезных дядек есть крестовые библиотеки, к которым прилепили интерфейс. Если сам крестоеб, можешь запустить несколько луа-машин, и раскидывать в них данные из основного процесса.
>>1583103 (OP) Маленький няшный язычок с коротеньким руководством и нескучными паттернами программирования. Можешь на нем пройти SICP или Стенфордские курсы по программированию с курсеры, а потом переходить к ебле в компилятор с каким-нибудь из языков галер.
Успешных лунатиков можешь посмотреть тут https://lua.moscow/conf/2019/ Только скорее всего эти люди успешны не благодаря знанию конкретного языка.
>Котаны, стоит ли изучать этот язык? Где он вообще применим и применим ли? Есть ли тут усрешные лунатики, делающие по 300кк в секунду?
Если хочешь быть модером игр - изучай, делай моды.
Если хочешь быть программистом - не изучай. Тебе не язык надо учить, а программирование. А учить программирование на луа просто жопа говна. Изучи норм язык лучше, если можешь писать на норм языке, то луа код тебе автоматически понятен станет
Не тролль, лжец, девственник.