Все просто: у Lua больше «нишевых» целей, чем у Python .
Считается, что Python полезен в качестве общего языка программирования. Так что это полезно во многих случаях. Он охватывает многие хорошо известные типы приложений, но не вступает в прямую конкуренцию с другими языками, которые могут быть нацелены на конкретные ограничения, но простотой его синтаксиса.
Lua нацелена на то, чтобы быть встроенным языком сценариев. Это первоначальная цель, даже если в настоящее время она используется в других контекстах, таких как системы сборки; должен быть встроен в программное обеспечение и обеспечивать простую реализацию функций и структур сценариев, специфичных для предметной области. Он настолько минималистичен, что его даже можно использовать на действительно ограниченном оборудовании (я использовал Lua на NintendoDS), он легкий, простой в использовании, FAST, и это такой минималистский язык, но считается расширенным, что в нем много диалектов (импортирующих такие парадигмы, как объект-ориентация) доступны. Он настолько переносим (ANSI C), что вы можете использовать его на любом встроенном оборудовании с достаточным объемом памяти для современного встроенного программного обеспечения (если я хорошо помню, по умолчанию lua vm составляет около 400ko и почти никогда не будет расти, если вы не будете создавать циклы при создании объектов). ...).
Итак, Lua изначально используется в контексте, где вам нужно встроить язык сценариев для вашего приложения .
Python используется для ... почти всего, что не требует более нишевого языка (вы можете создавать довольно производительные игры, используя Python, но некоторые игры с высокой производительностью действительно требуют избегать такой системы).
Просто Python используется в большем количестве контекстов, чем Lua. Насколько я знаю, кроме Android (который обеспечивает поддержку Java и родного языка), Google не является компанией-разработчиком встроенного программного обеспечения, поэтому им не нужен Lua везде, в то время как Python полезен для всего, что они делают (веб, система сборки , связь, сеть и сеть).
Python используется во многих играх и для встроенных скриптов, но он тяжелый и медленнее, чем Lua. Синтаксис Python делает его более подходящим для больших игр, которые в своей игровой структуре во многом полагаются на скриптовую информацию (не уверен, что я в этом разбираюсь, но просто думаю, что если вам нужен «действительно полный язык» для скриптинга, встраивание Python может быть хорошая идея, если производительность вам подходит). Python не был создан для встраивания, так что это нормально. Эквивалентом Python, предназначенным для встраивания в C ++, является Falcon.
Для экстремального сравнения некоторые языки, предназначенные для встраивания и имеющие более полный синтаксис, чем минималистский Lua, и конкурирующие по производительности: ChaiScript, AngelScript, Io ...
Кстати, я видел, как новые системы сборки, такие как PreMake или Bam, используют Lua в качестве языка файлов сборки. Идея заключается в том, что он легкий и хорошо известен разработчикам игр (сборка систем при разработке игр является серьезной проблемой). Так что, может быть, это еще одна область, где Lua может быть оценена более высоко. Это, конечно, более удобный, чем синтаксис CMake ....