LINUX.ORG.RU

  1. Lua довольно шустрый и, в отличие от питона, легкий и не жрет ресурсы. А с LuaJIT вообще рвет многие языки.

  2. На Lua может писать почти любой ламер.

  3. Хороший синтаксис (если ты любишь Паскаль).

  4. Легко встраивается в C.

Rewand ()

Lua умерло, когда V8 JIT сравнялся с LuaJIT, поскольку JS — более богатый по сравнению с Lua язык. На этом можно закрывать тему.

В свое время я кодил карты к WC3, ковырял сталкера, дорабатывал моды к Don't Starve — это была сплошная боль с их «переменная пуста», «нельзя выполнить арифметическую операцию над строкой», и прочей гадостью, которую я уже не вспомню. WC3 из них был самым адекватным, поскольку расширен статической типизацией. По факту этого достаточно для простенькой логики, но недостаточно для написания искуственного интелекта — он в игорях традиционно тупой.

byko3y ★★ ()
Ответ на: комментарий от Rewand

этого достаточно для простенькой логики

Он для этого и существует. Скриптуха же

Как бы да, по этой причине он не подходит для написания игр. Потому что многие игры представляют собой сложную скриптуху, и Lua на две головы ниже этого уровня.

byko3y ★★ ()
Ответ на: комментарий от byko3y

Для WOW написаны миллиарды строк аддонов на луа и всем нормально, одному тебе что то танцевать мешает. Луа на голову выше ЖС. Хотя если ты любитель умножать строки, может тебе и не понять, почему.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 2)

не lua, а простой, привычный и православный python правда кое кто жалуется что он мол слишком легкий в изучении, но зачем искусственно делать его трудным.

Господь Бог сделал правильное простым а неправильное сложным. Не посчитайте мои рассуждения наивными.

XoFfiCEr ★★★ ()
Ответ на: комментарий от SR_team

Возьми любую статью про JS и его WTF-ы и сравни с Lua. В Lua практически нет неожиданных моментов. Там всё сделано по уму. При том, что сами модели языков очень похожи, но нет тех мелочей, которые бесят в JS из-за того, что 30 лет назад какой-то имбецил JS или его библиотеку криво спроектировал и до сих пор эту кривость тащат во имя никому не нужной обратной совместимости.

Насчёт конкретных реализаций не знаю. Учитывая, что в AAA-играх в производительность Lua не упираются, думаю, её хватает.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Для WOW написаны миллиарды строк аддонов на луа и всем нормально, одному тебе что то танцевать мешает

Понятия не имею, что там за аддоны и откуда в них миллиарды строк. Один лярд кода без учета сложностей поддержки и отладки — это где-то 5 тысяч человеколет. Может быть там просто сырые данные хранятся в виде кода?

byko3y ★★ ()
Ответ на: комментарий от peregrine

Бедный айсфрог доту изначально на той скриптухе сделал

Вот как раз сорцы доты я читал, отлаживал, и репортил баги. Там механизм агра крипов на атаку лютейше забагованный и работает через раз. И всем пофик.

byko3y ★★ ()
Ответ на: комментарий от byko3y

Понятия не имею, что там за аддоны и откуда в них миллиарды строк.

Люди пишут. https://www.curseforge.com/wow/addons

Один лярд кода без учета сложностей поддержки и отладки — это где-то 5 тысяч человеколет.

А в вов играют десятки миллионов игроков на протяжении десятков лет. И многие непрерывно пишут аддоны.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Насчёт конкретных реализаций не знаю. Учитывая, что в AAA-играх в производительность Lua не упираются, думаю, её хватает

Ты где-то в AAA играх у NPC видел не AI хлебушка? Маск для того, чтобы хоть что-то подобное адекватному AI для доты тратит десятки/сотни миллионов долларов в год на прожигание мегаватт. И все равно не получается лучших игроков одолеть.

byko3y ★★ ()
Ответ на: комментарий от byko3y

В Garry's mod практически все - это lua-код или им управляется. NPC, оружие, игровые режимы, даже небо skybox и даже Админка.

Leupold_cat ★★★★ ()
Последнее исправление: Leupold_cat (всего исправлений: 1)
Ответ на: комментарий от byko3y

При чём тут AI и Lua? Lua это скриптуха. Клей. А AI пишется на C++, это часть движка. Код игры разделяется на тот, который разрабатывается профессиональными программистами и на тот, который разрабатывается не-программистами или очень часто меняется. Вот для второй части и используется Lua, как более простой язык, позволяющий в том числе разработку с (относительно) моментальным просмотром результатов. Как-то так получается, что нормальные быстрые языки имеют проблемы с моментальной перезагрузкой и требуют долгих компиляций, а простые динамические язычки таких проблем не имеют. Вот и используют гибридные решения.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от Legioner

Люди пишут. https://www.curseforge.com/wow/addons

Откуда инфа про миллиарды? У самого официального WoW примерно 5 лямов серверных скриптов. Ты хочешь сказать, что там контента в 200 раз больше, чем сделал близард? Почему я думаю, что нет.

Если брать в каждом аддоне 500 кб кода, примерно 8000 всего аддонов, грубо считать 20 символов в строке, то получится 200 млн строк кода. Без учета дублей и копипаст. Есть куча аддонов, в которых оригинального кода килобайт эдак на 20, всё остальное — либы, картинки, тексты локализации.

byko3y ★★ ()
Ответ на: комментарий от byko3y

Lua умерло, когда V8 JIT сравнялся с LuaJIT, поскольку JS — более богатый по сравнению с Lua язык.

И конечно же все быстренько побежали и перевели весь Embedded с "умершего" Lua на V8, ага-ага. xD

А ещё все вдруг переписали свои плагины с Lua на JavaScript, как в игрострое, так и в остальном мире.

Чушь пороть не надо, это даже не смешно, это глупо.

mord0d ★★★★ ()
Ответ на: комментарий от Legioner

При чём тут AI и Lua? Lua это скриптуха. Клей. А AI пишется на C++, это часть движка. Код игры разделяется на тот, который разрабатывается профессиональными программистами и на тот, который разрабатывается не-программистами или очень часто меняется

Вот отсюда и берутся массовые хлебушки в геймплее. Потому что скриптомакака предусмотрела только один вариант прохождения квеста. И тогда у менеджеров есть два пути: сказать «это не баг, это фича», или же заставить игрока бежать по узенькому коридору без малейшей возможности свернуть, как это делают, например, в Call of Duty. Даже в компаниях WC3 разрабы под отдельные миссии писали свои модификации ИИ. Но делали они это на Lua со статической типизацией, потому ИИ получился тупой. Хоть и выглядит он лучше, чем большинство аналогичных ИИ в играх-стратегия проектов с меньшим бюджетом, где зачастую ИИ просто заваливает игрока мясом.

byko3y ★★ ()
Ответ на: комментарий от XoFfiCEr

простой, привычный и православный python

На Embedded он не влезет, а если влезет то упрётся в память.

Ну и встраиваемость у Python никакая. То есть, конечно, можно попытаться натянуть сову на глобус, но когда у тебя плагины тормозят основной процесс — это плохо. У Lua такой проблемы нет: оно быстрее поноса, а распараллелить воркеры на Lua из C — как два пальца.

Я ничего против Python не имею, но всему своё место.

mord0d ★★★★ ()
Ответ на: комментарий от mord0d

И конечно же все быстренько побежали и перевели весь Embedded с «умершего» Lua на V8, ага-ага. xD
А ещё все вдруг переписали свои плагины с Lua на JavaScript, как в игрострое, так и в остальном мире

Я тоже тебе пример могу привести: системы на Cobol и MUMPS никто не переписывает, а так и продолжают поддерживать. Хотя однократное переписывание обойдется дешевле, чем поддержка старой системы в течении следующих 20 лет. Но западная экономика устроена так, что управляющим невыгодно строить планы дальше одного года.

byko3y ★★ ()
Ответ на: комментарий от rupert

Индексы массивов начинаются не с нуля а с единицы.

Котолики, как римляне, не умеют считать от нуля. Вот если бы его писали арабы, тогда может быть. ☺

mord0d ★★★★ ()
Ответ на: комментарий от byko3y

управляющим невыгодно строить планы дальше одного года

В IT это просто не имеет смысла.

однократное переписывание обойдется дешевле

В итоге выльется в многократное.

Но речь не об этом.

Сравни JavaScript и Lua по потреблению памяти, и удивись, как JS отсасывает стоя. (%

На JS можно писать почти полноценный софт, а из буханки хлеба можно сделать троллейбус.

mord0d ★★★★ ()
Ответ на: комментарий от mord0d

На Embedded он не влезет, а если влезет то упрётся в память.
Ну и встраиваемость у Python никакая. То есть, конечно, можно попытаться натянуть сову на глобус, но когда у тебя плагины тормозят основной процесс — это плохо

Давайте разберемся с определениями. Во-первых, есть CPython — конкретный интерпретатор для конкретного системног оскриптинга в никсах, который толком более ни для чего не годится. Есть некий воображаемый язык Python, который представляет собой лишь небольшое число синтаксических конструкций — вся семантика же определяется реализацией и может быть любой. То есть, языка как такового нет, есть лишь некая питоничность, которая так же эфемерна, как рай, любовь, и сострадание.

Ты точно так же, скорее всего, под Lua имеешь в виду LuaJIT, который в том числе умеет работать в режиме чистого интерпретатора, и делает это намного лучше эталонной реализации Lua. Но в данном случае язык Lua спроектирован и таки имеет конкретную семантику — в чем он превзошел как Python, так и JavaScript.

byko3y ★★ ()
Ответ на: комментарий от mord0d

управляющим невыгодно строить планы дальше одного года

В IT это просто не имеет смысла

Программы и компьютеры, как правило, являются инструментом для выполнения какой-то работы. Некий банк, заказывая себе разработку системы, не расчитывает «через год — хоть потоп», он расчитывает минимум на 10 лет вперед.

Сравни JavaScript и Lua по потреблению памяти, и удивись, как JS отсасывает стоя

Сравнил:

https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/lua.html

Далеко не всё однозначно, и далеко не все бенчи Lua вообще может выполнить.

byko3y ★★ ()
Ответ на: комментарий от menangen

Я про то, что игровой движок не взял вкорячивать питон, а написали свой типа питон, но без критических недостатков

Еще раз: есть Jython, Cython, PyPy, IronPython, и прочие, у которых нет недостатков CPython. Вы же говорите именно про CPython.

byko3y ★★ ()
Ответ на: комментарий от byko3y

Она кошмарно медленная и жрет память.

Ну не кошмарно. Таки зависит от задачи, жевать тонны данных из Lua — это надо быть отбитым на всю голову. Памяти оно жрёт потому что кто-то забыл разбудить GC. Ну и по твоей же ссылке почти во всех тестах Node.js жрёт больше RAM и CPU чем Lua.

mord0d ★★★★ ()
Ответ на: комментарий от menangen

Если бы ты потестил на реальных задачах, то увидел бы, что lua и без jit быстрая

Не, оно из-за однопоточности действительно на тяжёлых операциях ощутимо тормозит. Но надо быть отбитым чтобы жевать из Lua тонны данных.

mord0d ★★★★ ()