А почему нет?? Есть божественный quickJS, конечно, для любителей JavaScript, но он без JIT, а на луа шликают из-за наличия феноминального jit компилятора, но он заброшен, и с приходом aarch64 всё грустно
Lua умерло, когда V8 JIT сравнялся с LuaJIT, поскольку JS — более богатый по сравнению с Lua язык. На этом можно закрывать тему.
В свое время я кодил карты к WC3, ковырял сталкера, дорабатывал моды к Don't Starve — это была сплошная боль с их «переменная пуста», «нельзя выполнить арифметическую операцию над строкой», и прочей гадостью, которую я уже не вспомню. WC3 из них был самым адекватным, поскольку расширен статической типизацией. По факту этого достаточно для простенькой логики, но недостаточно для написания искуственного интелекта — он в игорях традиционно тупой.
Как бы да, по этой причине он не подходит для написания игр. Потому что многие игры представляют собой сложную скриптуху, и Lua на две головы ниже этого уровня.
Для WOW написаны миллиарды строк аддонов на луа и всем нормально, одному тебе что то танцевать мешает. Луа на голову выше ЖС. Хотя если ты любитель умножать строки, может тебе и не понять, почему.
не lua, а простой, привычный и православный python правда кое кто жалуется что он мол слишком легкий в изучении, но зачем искусственно делать его трудным.
Господь Бог сделал правильное простым а неправильное сложным. Не посчитайте мои рассуждения наивными.
Возьми любую статью про JS и его WTF-ы и сравни с Lua. В Lua практически нет неожиданных моментов. Там всё сделано по уму. При том, что сами модели языков очень похожи, но нет тех мелочей, которые бесят в JS из-за того, что 30 лет назад какой-то имбецил JS или его библиотеку криво спроектировал и до сих пор эту кривость тащат во имя никому не нужной обратной совместимости.
Насчёт конкретных реализаций не знаю. Учитывая, что в AAA-играх в производительность Lua не упираются, думаю, её хватает.
Для WOW написаны миллиарды строк аддонов на луа и всем нормально, одному тебе что то танцевать мешает
Понятия не имею, что там за аддоны и откуда в них миллиарды строк. Один лярд кода без учета сложностей поддержки и отладки — это где-то 5 тысяч человеколет. Может быть там просто сырые данные хранятся в виде кода?
Насчёт конкретных реализаций не знаю. Учитывая, что в AAA-играх в производительность Lua не упираются, думаю, её хватает
Ты где-то в AAA играх у NPC видел не AI хлебушка? Маск для того, чтобы хоть что-то подобное адекватному AI для доты тратит десятки/сотни миллионов долларов в год на прожигание мегаватт. И все равно не получается лучших игроков одолеть.
При чём тут AI и Lua? Lua это скриптуха. Клей. А AI пишется на C++, это часть движка. Код игры разделяется на тот, который разрабатывается профессиональными программистами и на тот, который разрабатывается не-программистами или очень часто меняется. Вот для второй части и используется Lua, как более простой язык, позволяющий в том числе разработку с (относительно) моментальным просмотром результатов. Как-то так получается, что нормальные быстрые языки имеют проблемы с моментальной перезагрузкой и требуют долгих компиляций, а простые динамические язычки таких проблем не имеют. Вот и используют гибридные решения.
Откуда инфа про миллиарды? У самого официального WoW примерно 5 лямов серверных скриптов. Ты хочешь сказать, что там контента в 200 раз больше, чем сделал близард? Почему я думаю, что нет.
Если брать в каждом аддоне 500 кб кода, примерно 8000 всего аддонов, грубо считать 20 символов в строке, то получится 200 млн строк кода. Без учета дублей и копипаст. Есть куча аддонов, в которых оригинального кода килобайт эдак на 20, всё остальное — либы, картинки, тексты локализации.
При чём тут AI и Lua? Lua это скриптуха. Клей. А AI пишется на C++, это часть движка. Код игры разделяется на тот, который разрабатывается профессиональными программистами и на тот, который разрабатывается не-программистами или очень часто меняется
Вот отсюда и берутся массовые хлебушки в геймплее. Потому что скриптомакака предусмотрела только один вариант прохождения квеста. И тогда у менеджеров есть два пути: сказать «это не баг, это фича», или же заставить игрока бежать по узенькому коридору без малейшей возможности свернуть, как это делают, например, в Call of Duty. Даже в компаниях WC3 разрабы под отдельные миссии писали свои модификации ИИ. Но делали они это на Lua со статической типизацией, потому ИИ получился тупой. Хоть и выглядит он лучше, чем большинство аналогичных ИИ в играх-стратегия проектов с меньшим бюджетом, где зачастую ИИ просто заваливает игрока мясом.
На Embedded он не влезет, а если влезет то упрётся в память.
Ну и встраиваемость у Python никакая. То есть, конечно, можно попытаться натянуть сову на глобус, но когда у тебя плагины тормозят основной процесс — это плохо. У Lua такой проблемы нет: оно быстрее поноса, а распараллелить воркеры на Lua из C — как два пальца.
Я ничего против Python не имею, но всему своё место.
И конечно же все быстренько побежали и перевели весь Embedded с «умершего» Lua на V8, ага-ага. xD А ещё все вдруг переписали свои плагины с Lua на JavaScript, как в игрострое, так и в остальном мире
Я тоже тебе пример могу привести: системы на Cobol и MUMPS никто не переписывает, а так и продолжают поддерживать. Хотя однократное переписывание обойдется дешевле, чем поддержка старой системы в течении следующих 20 лет. Но западная экономика устроена так, что управляющим невыгодно строить планы дальше одного года.
На Embedded он не влезет, а если влезет то упрётся в память. Ну и встраиваемость у Python никакая. То есть, конечно, можно попытаться натянуть сову на глобус, но когда у тебя плагины тормозят основной процесс — это плохо
Давайте разберемся с определениями. Во-первых, есть CPython — конкретный интерпретатор для конкретного системног оскриптинга в никсах, который толком более ни для чего не годится. Есть некий воображаемый язык Python, который представляет собой лишь небольшое число синтаксических конструкций — вся семантика же определяется реализацией и может быть любой. То есть, языка как такового нет, есть лишь некая питоничность, которая так же эфемерна, как рай, любовь, и сострадание.
Ты точно так же, скорее всего, под Lua имеешь в виду LuaJIT, который в том числе умеет работать в режиме чистого интерпретатора, и делает это намного лучше эталонной реализации Lua. Но в данном случае язык Lua спроектирован и таки имеет конкретную семантику — в чем он превзошел как Python, так и JavaScript.
управляющим невыгодно строить планы дальше одного года
В IT это просто не имеет смысла
Программы и компьютеры, как правило, являются инструментом для выполнения какой-то работы. Некий банк, заказывая себе разработку системы, не расчитывает «через год — хоть потоп», он расчитывает минимум на 10 лет вперед.
Сравни JavaScript и Lua по потреблению памяти, и удивись, как JS отсасывает стоя
Ну не кошмарно. Таки зависит от задачи, жевать тонны данных из Lua — это надо быть отбитым на всю голову. Памяти оно жрёт потому что кто-то забыл разбудить GC. Ну и по твоей же ссылке почти во всех тестах Node.js жрёт больше RAM и CPU чем Lua.
Если бы ты потестил на реальных задачах, то увидел бы, что lua и без jit быстрая, и жрёт не намного больше luajit, там жрать просто нечему, язык туп как дуб