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

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

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

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

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

Пока Python мне нравится больше, но это только первый взгляд.  
  

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

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

2. **Какие есть подводные камни при работе с данными связками языков, которые вам встречались?**  

3. **Правда ли, что Lua значительно выигрывает Python по скорости? Справедливо ли это при встраивании этих языков в код C++?**  
  

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

Хотелось бы услышать, в первую очередь, мнение людей, уже работавших со связкой C++ & Lua или C++ & Python. 

 Lua очень любят разработчики игр и думаю это не просто так.  

Lua действительно очень быстрый (самый быстрый скриптовый язык)  

И существует много документации о использовании в этой связке.  
  

p.s. python тоже хорош, но в данном случае, уступает lua. 

 lua а именно ее разновидность luajit имеет особенность которая выделяет luajit из всех скриптовых языков, а именно "халявное" взаимодействие с C чз ffi, не надо конвертить Cшные структуры - можно читать напрямую без потерь на конверсию во внутренние типы скриптового языка.  

luajit - очень очень быстрый, у меня на части задач он выдает производительность равную C шному коду  
  

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

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

и невероятной скорости.   
  

Недостаток lua - меня коробят конструкции if then end do :-) - но только в эстетическом плане, сам по себе язык очень мощный и имеет все что надо - тупели, клозуры и тп :-) 

**Python** решает практически любые задачи, по отношению к луа там огромнейшее кол-во библиотек и разного рода реализаций, когда **Lua сама по себе чистая ВМ с минимальным функционалом** (lua pipe, io и тд). Для встраивания лучше использовать **Lua**, потому что в ней нет ничего лишнего. 

 У lua есть свои ограничения при работе с вставками в текстовые строки (по крайней мере у 5.1 точно), нет continue (это конечно решаемо но создает некие неудобства), но в общем и цело lua очень быстрый. Я его использую для работы со строками в основном, парсинга и тому подобного. Очень быстрая работа языка невероятно радует+ много хорошей документации. 

 Работал со связкой BD+ и CarlML лучшего просто не найти