Neden Piton ve Lua değil? [kapalı]


45

Python neden google tarafından desteklendi ve bu kadar hızlı popüler oldu ve Lua olmadı?

Lua'nın neden arka planda kaldığını biliyor musunuz?


3
Lua dizileri taklit etmekten hoşlanır ve sözlükler aynı şeydir ve sadece yanlış sonuç vermeyecek, aynı zamanda klasik olmayan sonuçlara yol açabilecek uzunluğa sahiptir. Googles'ın sebeplerinin ne olduğunu bilmiyorum, ama bu onu sevmemek için yeterli bir neden.
Steve314

4
Bana göre Python kodlaması daha kolay, daha eğlenceli ve daha fazla özelliğe sahip. Başımın üstünden bazı örnekler: jeneratörler Python ( yield) ' da birinci sınıf bir vatandaş olarak geliyor ve Lua daha hantal bir kurulum gerektiriyor. Python'un liste endekslemesi [::]çok büyük bir artı. Python'un meşru sınıfları ve mirası vardır. Lua daha hızlı, evet, ama aslında hız önemliyken Python'da kullanım için Go kodu yazmayı seviyorum .
Frank Bryce

LuaJIT'i seviyorum ama aşkımın büyük bir kısmı gömme, hız ve ufacık ayak izinin kolaylığı. Tüm gün boyunca bir program yapmak zorunda kalırsam, Python'a daha fazla dayanabilirim.

@ FrankBryce geri aldın. Python'un jeneratörleri, Lua'nın coroutinlerinin bir alt kümesidir. Bakınız inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
capr

Yanıtlar:


37

Lua'yı gerçekten seviyorum, ancak bazı gerçek sınırlamaları var ve diğerleri de belirttikleri gibi, çoğunlukla Lua'nın kökenlerinden bir yapılandırma dosyası dili ve daha sonra da gömülü bir betik dili olarak türetilmişlerdir.

Lua'yı küçük tutma hedefi nedeniyle , sadece çıplak kemik işlevselliğine sahip çok küçük bir standart kütüphane var.

Bu, Lua geliştiricilerinin, evrensel olarak kabul görmüş bir çekirdek kütüphaneler kümesi üzerinde toplu olarak çalışmak yerine, diğer birçok dilin standart kütüphanelerinin sunduğu işlevselliği yeniden uygulamak istedikleri Lua çevrelerinde talihsiz bir kültüre yol açtı.

Çok iş parçacıklı kullanım, düzenli ifadeler, platformdan bağımsız dosya erişim yöntemleri ve hatta bit işlemleri (5.2'ye kadar) gibi şeyler Lua'yı daha büyük ve daha yavaş yapacağı için hepsi "dahil edilmedi". Tabii ki, kütüphaneleri böyle şeyler yapabilmenizi sağlayabilirsiniz - fakat o zaman o kişilerin bağımsız bakıcıları ve kalite seviyeleri vardır.

Beni yanlış anlama. Lua'yı az önce listelediğim nedenlerle seviyorum.


54

Basit: Lua'nın Python'dan daha fazla "niş" amacı var .

Python'un genel bir programlama dili olarak faydalı olduğu düşünülmektedir. Yani, birçok durumda yararlıdır. Bilinen birçok uygulama türünü kapsar, ancak belirli kısıtlamaları hedef alabilecek diğer dillerle doğrudan rekabete girmez, ancak sözdiziminin basitliği.

Lua tamamen gömülü bir betik dili olmayı hedefliyor. Yapı sistemleri gibi şu anda başka bağlamlarda da kullanılsa bile, başlangıç ​​amacı budur; yazılıma gömülmek ve alana özgü komut dosyası işlevlerinin ve yapılarının kolay uygulanmasını sağlamaktır. O kadar minimalist ki, gerçekten kısıtlanmış donanımlarda bile kullanılabiliyor (NintendoDS'de Lua kullandım), hafif, kullanımı kolay, HIZLI ve böyle bir minimalist dildir, ancak çok sayıda lehçenin (paradigmaları ithal etmek gibi) genişletileceği düşünülmektedir. nesne yönelimi) mevcuttur. O kadar taşınabilir ki (ANSI C) modern gömülü yazılım için yeterli miktarda belleğe sahip herhangi bir gömülü donanımda kullanabilirsiniz (eğer hatırlarsam varsayılan lua vm 400ko civarındadır ve nesne oluşturmazsanız neredeyse hiç büyümez) ...).

Bu nedenle, Lua başlangıçta uygulamanız için bir betik dili yerleştirmeniz gereken bağlamda kullanılır .

Python ... daha niş bir dil gerektirmeyen hemen hemen her şey için kullanılır (Python kullanarak oldukça iyi performans gösteren oyunlar yapabilirsiniz, ancak bir tür performans ağırlıklı oyunlar gerçekten bu tür bir sistemden kaçınmayı gerektirir).

Basitçe Python Lua'dan daha fazla bağlamda kullanılıyor. Bildiğim kadarıyla, Android dışında (Java ve anadili desteği sağlayan), Google yerleşik bir yazılım şirketi değil, dolayısıyla her yerde gerçekten Lua'ya ihtiyaç duymazlar, Python ise yaptıkları her şey için faydalıdır (web, sistem oluşturma) , iletişim, web ve web).

Python, gömülü komut dosyaları için de birçok oyunda kullanılır, ancak Lua'dan daha ağır ve yavaştır. Python'un sözdizimi, oyun yapılarında kodlanmış bilgilere çok güvenen büyük oyunlar için daha uygun kılar (orada açık olduğumdan emin değilim ama sadece komut dosyası yazmak için "tam bir dile" ihtiyacınız varsa, Python'u gömmek olabilir. iyi bir fikir, eğer performans sizin için uygunsa). Python gömülmek için yapılmamıştı, bu yüzden sorun değil. C ++ 'a gömülmeyi hedefleyen Python eşdeğeri Falcon'dur.

Aşırı karşılaştırma için, katıştırmayı hedefleyen ve minimalist Lua'dan daha tam sözdizimine sahip olan ve performansta rekabet eden bazı diller: ChaiScript, AngelScript, Io ...

Bu arada, PreMake veya Bam gibi yeni derleme sistemlerinin derleme dosyası dili olarak Lua kullandığını gördüm. Buradaki fikir, hafif olması ve oyun geliştiriciler tarafından iyi bilinmesidir (oyun geliştirmede sistemleri kurmak büyük bir sorundur). Belki de, Lua'nın daha fazla takdir edilebileceği başka bir alan. Kesinlikle CMake sözdiziminden daha kullanıcı dostu.


4
Sanırım Lua'nın gömülü bir dil olarak hedefi muhtemelen büyük bir katkıda bulunuyor. Ama yine de, bir dilin "popülerliğinin" dilin gerçek tasarımı veya kabiliyetiyle daha az ve daha fazla "doğru zaman, doğru yer" meselesi olduğuna inanıyorum (örneğin PHP'ye bakınız).
Dean Harding,

Belli bir amacı hedefleyen bir dilin, belirli kullanıcılara doğal olarak hitap ettiğini ve dinleyicilerin herhangi bir genel amaçlı dilden daha kısıtlayıcı olduğunu düşünüyorum. Genel amaçlı dillerden daha az izleyici kitlesi olması, hakkında konuşacak kişilerin sayısını doğrudan etkiler. Bunun dışında, belirli hedefler belirli özellikler anlamına gelir. Bu nedenle, her durum için iyi değil. Burada örneğin tek başına lua çok iyi bir GUI programlama dili değil. Bazı ilavelerin gerçekten yararlı olmasını gerektirir.
Klaim

Bununla birlikte, tamamen katılıyorum: php web sitesi geliştirme gibi yaygın olarak kullanılan bir alan için kullanılmazsa, şimdi her yerde olmazdı.
Klaim

Lua, genellikle gömülü dil olarak kullanılır, ancak genel amaçlı bir programlama dilidir, örneğin mod_lua ile CGI betiği yapabilirsiniz. Lua'yı neden gömülü bir dil olarak kaldı?
BenjaminB

Çünkü o kökeni. Genel amaçlı bir dil olarak kullanabilirsiniz, evet, genel amaçlı olarak da php kullanabilirsiniz. Aynısını yapmak için Perl'i de kullanabilirsiniz. Ancak kökenleri yönelimlerini yapar. Yine, başlangıçtaki amaçları onları genel amaçlı diller için diğer dillerden daha az kullanışlı kılar. Lua, nesne yönelimi (kolayca ekleyebileceğiniz, ancak yerel değil) gibi örnekler için GUI sistemiyle kullanımı kolay bazı özellik dillerinden yoksundur. Başlangıçta belirli bir amaç için yapılmış bir dil ile genel bir dil arasındaki farkı gördüğünüzden emin olun. Zaten hepsinde kısıtlamalar var.
Klaim

4

Programları genişletmek için bir betik dili olarak oluşturulmuş Lua ile her şeyi yapabilirsiniz? Evet, ama bununla sınırlı değil, Lua için çok sayıda kütüphane var ve doğru araçlarla (LuaJIT'in FFI'si veya tolua'sı) üzerinde bir C / C ++ Kütüphanesi bile kullanabilirsiniz. Python'u benim açımdan daha fazla kullanmasına neden olan sebep sadece yaş, Python birçok kolej ve okulda ilk dil olarak kullanılıyor, Python'u Lua'dan daha fazla tanıyan insanlar var ve Python için iyi bir kütüphane bulmak çok daha kolay Lua'dan daha çok, çünkü dil daha olgun. Ayrıca, Python hakkında pek bir şey bilmiyorum, ama bildiğim kadarıyla, kodunuzu son kullanıcıdan gizlemek kolaydır, Lua'da, bu kolay değil, doğru mu?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.