Какой встраиваемый язык выбрать: Lua или Python?

Задача: я разрабатываю на C++ небольшую компьютерную игрушку, и к ней нужно прикрутить скриптовый язык.

Зачем мне это: упростить написание логики ботов (основная особенность игры - интеллект врагов), дать возможность игрокам модифицировать эту логику.

Среди всех языков большей популярностью пользуются Lua и Python.

Я немного разобрался с Lua (прочитал приличное количество мануалов и написал небольшую игрушку) и сейчас таким же образом разбираюсь с Python.
Пока Python мне нравится больше, но это только первый взгляд.

Меня интересуют, в основном, следующие вопросы:

1. Какого уровня задачи способен решить каждый из этих языков совместно с C++ без использования множества костылей? Сложно ли, например, в Lua или Python использовать объекты созданные в C++?
2. Какие есть подводные камни при работе с данными связками языков, которые вам встречались?
3. Правда ли, что Lua значительно выигрывает Python по скорости? Справедливо ли это при встраивании этих языков в код C++?

Ответы на эти вопросы сложно получить при первом знакомстве с языком, но я считаю, что они достаточно важны.

Хотелось бы услышать, в первую очередь, мнение людей, уже работавших со связкой C++ & Lua или C++ & Python.
  • Вопрос задан
  • 19779 просмотров
Решения вопроса 2
@v_prom
Lua очень любят разработчики игр и думаю это не просто так.
Lua действительно очень быстрый (самый быстрый скриптовый язык)
И существует много документации о использовании в этой связке.

p.s. python тоже хорош, но в данном случае, уступает lua.
Ответ написан
Комментировать
icelaba
@icelaba
Знаю и умею всё
lua а именно ее разновидность luajit имеет особенность которая выделяет luajit из всех скриптовых языков, а именно "халявное" взаимодействие с C чз ffi, не надо конвертить Cшные структуры - можно читать напрямую без потерь на конверсию во внутренние типы скриптового языка.
luajit - очень очень быстрый, у меня на части задач он выдает производительность равную C шному коду

Сама по себе lua если выкинуть парсер и как следствие использовать прекомпилированный lua код, очень мало увеличит размер вашего приложения - в случае android не больше чем на 50кб (там правда apk это zip)

Собственно я использую luajit именно по причине ffi
и невероятной скорости.

Недостаток lua - меня коробят конструкции if then end do :-) - но только в эстетическом плане, сам по себе язык очень мощный и имеет все что надо - тупели, клозуры и тп :-)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Python решает практически любые задачи, по отношению к луа там огромнейшее кол-во библиотек и разного рода реализаций, когда Lua сама по себе чистая ВМ с минимальным функционалом (lua pipe, io и тд). Для встраивания лучше использовать Lua, потому что в ней нет ничего лишнего.
Ответ написан
Ovoshlook
@Ovoshlook
У lua есть свои ограничения при работе с вставками в текстовые строки (по крайней мере у 5.1 точно), нет continue (это конечно решаемо но создает некие неудобства), но в общем и цело lua очень быстрый. Я его использую для работы со строками в основном, парсинга и тому подобного. Очень быстрая работа языка невероятно радует+ много хорошей документации.
Ответ написан
Комментировать
@HasBenBlahBlag
Работал со связкой BD+ и CarlML лучшего просто не найти
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы