Lua lubi udawać, że tablice i słowniki są tym samym, i ma narzędzie do pobierania długości, które może nie tylko zwracać błędne wyniki, ale wyniki niedeterministyczne. Nie wiem, jakie są przyczyny Google, ale to wystarczający powód, aby mi się nie podobać.
Steve314,
4
Dla mnie Python jest łatwiejszy do kodowania, przyjemniejszy i ma więcej funkcji. Kilka przykładów z góry mojej głowy: generatory są pierwszorzędnym obywatelem w Pythonie ( yield), a Lua wymaga bardziej kłopotliwej konfiguracji. Indeksowanie list Pythona [::]to ogromny plus. Python ma uzasadnione klasy i dziedziczenie. Lua jest szybszy, tak, ale tak naprawdę lubię pisać kod Go do użycia w Pythonie, gdy prędkość jest ważna.
Frank Bryce
Uwielbiam LuaJIT, ale dużą część mojej miłości do niego stanowi łatwość osadzania, szybkość i mały ślad. Gdybym musiał coś programować przez cały dzień, mógłbym bardziej pochylić się w kierunku Pythona.
Naprawdę kocham Luę, ale ma ona pewne realne ograniczenia, a jak wspomnieli inni, wywodzą się głównie z początków Lua jako języka plików konfiguracyjnych, a później jako osadzonego języka skryptowego.
Ze względu na cel, aby Lua była niewielka, istnieje tylko bardzo mała standardowa biblioteka, która ma tylko funkcjonalność gołych kości.
Doprowadziło to do niefortunnej kultury w kręgach Lua, w której programiści Lua lubią ponownie wdrażać funkcje oferowane przez same standardowe biblioteki wielu innych języków, zamiast pracować wspólnie nad ogólnie przyjętym zestawem bibliotek podstawowych.
Rzeczy takie jak wielowątkowość, wyrażenia regularne, niezależne od platformy metody dostępu do plików, a nawet operacje bitowe (do 5.2) są „nieuwzględnione”, ponieważ spowodowałyby, że Lua byłaby znacznie większa i wolniejsza. Pewnie, że możesz zmusić biblioteki do robienia takich rzeczy - ale te mają niezależnych opiekunów i poziomy jakości.
Nie zrozum mnie źle. Uwielbiam Luę z tych samych powodów, które właśnie wymieniłem.
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 ....
Myślę, że cel Lua jako języka osadzonego jest prawdopodobnie głównym czynnikiem. Ale i tak uważam, że „popularność” języka ma mniej wspólnego z faktycznym projektem lub możliwościami samego języka, a bardziej z kwestią „właściwego czasu, właściwego miejsca” (patrz na przykład PHP).
Dean Harding
Cóż, myślę, że język ukierunkowany na konkretny cel w naturalny sposób przemawia do określonych użytkowników, dzięki czemu jego odbiorcy są bardziej powściągliwi niż jakikolwiek język ogólnego przeznaczenia. Słabsza słyszalność niż języki ogólnego przeznaczenia mają bezpośredni wpływ na liczbę osób, które kiedykolwiek o tym mówią. Poza tym określone cele oznaczają określone funkcje. Dlatego nie jest dobry na każdą sytuację. Na przykład sam lua nie jest zbyt dobrym językiem programowania GUI. To wymaga pewnych dodatków, aby być naprawdę przydatnym.
Klaim,
To powiedziawszy, w pełni się zgadzam: jeśli php nie byłby używany w tak szeroko stosowanej dziedzinie jak tworzenie stron internetowych, nie byłoby go teraz wszędzie.
Klaim
Lua jest używany głównie jako język osadzony, ale jest to język programowania ogólnego przeznaczenia, na przykład możesz tworzyć skrypty CGI za pomocą mod_lua. Mógłbym zmienić moje pytanie, dlaczego lua pozostał językiem osadzonym?
BenjaminB,
Ponieważ to jest pochodzenie. Możesz używać go jako języka ogólnego przeznaczenia tak, ponieważ możesz także używać php do celów ogólnych. Możesz także użyć Perla, aby zrobić to samo. Ale ich pochodzenie określa ich orientację. Ponownie, ich pierwotny cel czyni je mniej przydatnymi niż inne języki dla języków ogólnego przeznaczenia. Lua brakuje jakiegoś języka funkcji, który byłby łatwy w użyciu w systemie GUI, na przykład orientacji obiektowej (którą można łatwo dodać, ale nie jest ona natywna). Upewnij się, że widzisz różnicę między językiem pierwotnie stworzonym do określonego celu a językiem ogólnym. I tak wszystkie mają ograniczenia.
Klaim,
4
Możesz zrobić wszystko z Luą, jest ona stworzona jako język skryptowy do rozszerzania programów? Tak, ale nie jest to ograniczone, istnieje wiele bibliotek dla Lua, a dzięki odpowiednim narzędziom (FFI lub tolua LuaJIT) możesz nawet użyć na nim biblioteki C / C ++. Powodem, dla którego Python jest częściej używany, jest tylko wiek, Python jest używany jako pierwsze języki w wielu szkołach wyższych i szkołach, jest więcej ludzi, którzy znają Python niż Lua, i znacznie łatwiej jest znaleźć dobrą bibliotekę dla Pythona niż dla Lua, ponieważ język jest bardziej dojrzały. Poza tym niewiele wiem o Pythonie, ale o ile wiem, łatwo jest ukryć swój kod przed użytkownikiem końcowym, co w Lua nie jest takie proste, mam rację?
yield
), a Lua wymaga bardziej kłopotliwej konfiguracji. Indeksowanie list Pythona[::]
to ogromny plus. Python ma uzasadnione klasy i dziedziczenie. Lua jest szybszy, tak, ale tak naprawdę lubię pisać kod Go do użycia w Pythonie, gdy prędkość jest ważna.Odpowiedzi:
Naprawdę kocham Luę, ale ma ona pewne realne ograniczenia, a jak wspomnieli inni, wywodzą się głównie z początków Lua jako języka plików konfiguracyjnych, a później jako osadzonego języka skryptowego.
Ze względu na cel, aby Lua była niewielka, istnieje tylko bardzo mała standardowa biblioteka, która ma tylko funkcjonalność gołych kości.
Doprowadziło to do niefortunnej kultury w kręgach Lua, w której programiści Lua lubią ponownie wdrażać funkcje oferowane przez same standardowe biblioteki wielu innych języków, zamiast pracować wspólnie nad ogólnie przyjętym zestawem bibliotek podstawowych.
Rzeczy takie jak wielowątkowość, wyrażenia regularne, niezależne od platformy metody dostępu do plików, a nawet operacje bitowe (do 5.2) są „nieuwzględnione”, ponieważ spowodowałyby, że Lua byłaby znacznie większa i wolniejsza. Pewnie, że możesz zmusić biblioteki do robienia takich rzeczy - ale te mają niezależnych opiekunów i poziomy jakości.
Nie zrozum mnie źle. Uwielbiam Luę z tych samych powodów, które właśnie wymieniłem.
źródło
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 ....
źródło
Możesz zrobić wszystko z Luą, jest ona stworzona jako język skryptowy do rozszerzania programów? Tak, ale nie jest to ograniczone, istnieje wiele bibliotek dla Lua, a dzięki odpowiednim narzędziom (FFI lub tolua LuaJIT) możesz nawet użyć na nim biblioteki C / C ++. Powodem, dla którego Python jest częściej używany, jest tylko wiek, Python jest używany jako pierwsze języki w wielu szkołach wyższych i szkołach, jest więcej ludzi, którzy znają Python niż Lua, i znacznie łatwiej jest znaleźć dobrą bibliotekę dla Pythona niż dla Lua, ponieważ język jest bardziej dojrzały. Poza tym niewiele wiem o Pythonie, ale o ile wiem, łatwo jest ukryć swój kod przed użytkownikiem końcowym, co w Lua nie jest takie proste, mam rację?
źródło