Proste: Lua ma więcej „niszowych” celów niż Python .
Uważa się, że Python jest przydatny jako ogólny język programowania. Jest to przydatne w wielu przypadkach. Obejmuje wiele dobrze znanych rodzajów aplikacji, ale nie wchodzi w bezpośrednią konkurencję z innymi językami, które mogą być ukierunkowane na określone ograniczenia, ale prostotę jego składni.
Lua jest całkowicie nastawiona na wbudowany język skryptowy. Jest to pierwotny cel, nawet jeśli jest obecnie używany w innych kontekstach, takich jak systemy kompilacji; ma być wbudowany w oprogramowanie i umożliwiać łatwą implementację funkcji i struktur skryptów specyficznych dla domeny. Jest tak minimalistyczny, że można go używać nawet na naprawdę ograniczonym sprzęcie (użyłem Lua na NintendoDS), jest lekki, łatwy w użyciu, SZYBKI, i jest tak minimalistycznym językiem, ale wydaje się być rozszerzony, że wiele dialektów (importowanie paradygmatów takich jak orientacja obiektowa) są dostępne. Jest tak przenośny (ANSI C), że można go używać na dowolnym osadzonym sprzęcie z przyzwoitą ilością pamięci dla nowoczesnego wbudowanego oprogramowania (jeśli dobrze pamiętam, domyślna lua vm wynosi około 400ko i prawie nigdy nie wzrośnie, jeśli nie zapętlisz tworzenia obiektów ...)
Tak więc Lua jest początkowo używany w kontekście, w którym musisz osadzić język skryptowy dla swojej aplikacji .
Python jest używany do ... prawie wszystkiego, co nie wymaga bardziej niszowego języka (możesz tworzyć dość wydajne gry za pomocą Pythona, ale niektóre gry wymagające dużej wydajności naprawdę wymagają uniknięcia takiego systemu).
Po prostu Python jest używany w większej liczbie kontekstów niż Lua. O ile mi wiadomo, poza Androidem (który zapewnia obsługę języka Java i języka ojczystego) Google nie jest firmą zajmującą się oprogramowaniem wbudowanym, więc tak naprawdę nie potrzebują Lua wszędzie, a Python jest przydatny do wszystkiego, co robią (sieć, system budowania , komunikacja, sieć i sieć).
Python jest również używany w wielu grach do osadzania skryptów, ale jest cięższy i wolniejszy niż Lua. Składnia Pythona sprawia, że jest bardziej odpowiedni dla dużych gier, które w swojej strukturze gry w dużej mierze opierają się na skryptowych informacjach (nie jestem pewien, czy to jasne, ale po prostu pomyśl, że jeśli potrzebujesz „prawdziwego pełnego języka” do pisania skryptów, osadzenie Pythona może być dobry pomysł, jeśli wydajność jest dla Ciebie odpowiednia). Python nie został stworzony do osadzania, więc nic nie szkodzi. Odpowiednikiem Pythona, który ma być osadzony w C ++, jest Falcon.
Dla ekstremalnego porównania, niektóre języki, które celują w osadzanie i starają się mieć pełniejszą składnię niż minimalistyczna Lua i konkurują pod względem wydajności: ChaiScript, AngelScript, Io ...
Nawiasem mówiąc, widziałem, jak nowe systemy kompilacji, takie jak PreMake lub Bam, używają Lua jako języka plików kompilacji. Chodzi o to, że jest lekki i dobrze znany twórcom gier (poważnym problemem jest budowanie systemów podczas tworzenia gier). Więc może to kolejna domena, w której Lua mogłaby być bardziej doceniana. Jest to z pewnością bardziej przyjazny dla użytkownika niż składnia CMake ....