it-swarm.asia

Neden Python ve Lua değil?

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?

47
BenjaminB

Lua'yı gerçekten çok seviyorum, ancak bazı gerçek sınırlamaları var ve diğerlerinin de belirttiği gibi çoğunlukla Lua'nın kökenlerinden bir yapılandırma dosyası dili ve daha sonra gömülü bir komut dosyası dili olarak türetiliyorlar.

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 çevrelerinde, evrensel olarak kabul edilen 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 uygulamayı sevdikleri Lua çevrelerinde talihsiz bir kültüre yol açmıştır.

Çoklu iş parçacığı, 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ı çok daha büyük ve yavaş hale getirecekleri için "dahil değildir". Elbette kütüphaneleri bu şekilde yapabilirsiniz - ama o zaman bağımsız bakımcılar ve kalite seviyeleri vardır.

Beni yanlış anlamayın. Listelediğim aynı nedenlerden dolayı Lua'yı seviyorum.

40
sylvanaar

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

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

Lua, tamamen gömülü bir betik dili olmayı hedeflemektedir. Başlangıç ​​amacı, şu anda yapı sistemleri gibi diğer bağlamlarda kullanılsa bile; yazılıma gömülü olmalı ve etki alanına özgü komut dosyası işlevlerinin ve yapılarının kolay uygulanmasına izin vermelidir. O kadar minimalist ki, gerçekten kısıtlı bir donanımda bile kullanılabilir (NintendoDS'de Lua kullandım), hafif, kullanımı kolay, HIZLI ve çok minimalist bir dildir, ancak bir çok lehçe (ithalat paradigmaları gibi) nesne yönelimi) kullanılabilir. O kadar taşınabilir (ANSI C), modern gömülü yazılım için iyi miktarda belleğe sahip herhangi bir gömülü donanımda kullanabilirsiniz (varsayılan lua vm 400ko civarındaysa ve nesne oluşturma döngüsünde neredeyse hiç büyümeyecek) ...).

Yani, Lua başlangıçta uygulamanız için bir komut dosyası dili yerleştirmeniz gereken bağlamda kullanılır.

Python, daha niş bir dil gerektirmeyen neredeyse her şey için kullanılır (Python kullanarak oldukça performanslı oyunlar yapabilirsiniz, ancak bir tür performans ağır oyunlar gerçekten böyle bir sistemden kaçınmayı gerektirir).

Basitçe Python Lua'dan daha fazla bağlamda kullanılır. Bildiğim kadarıyla Android (sağlayan = Java ve ana dil desteği), Google gömülü bir yazılım şirketi değildir, bu yüzden her yerde Lua'ya gerçekten ihtiyaç duymazlar, Python yaptıkları her şey için yararlıdır (web, yapı sistemi, iletişim, web ve web).

Python, gömülü kodlama için de birçok oyunda kullanılır, ancak Lua'dan daha ağır ve daha yavaştır. Python sözdizimi, oyun yapılarındaki komut dosyası bilgilerine çok fazla dayanan büyük oyunlar için daha uygun hale getirir (orada net olmadığımdan emin değilim ama sadece "gerçek bir tam ihtiyacınız varsa komut dosyası için "Python iyi bir fikir olabilir). Python gömülmek için yapılmadı Python C++ 'da gömülmeyi hedefleyen eşdeğeri Falcon'dur.

Aşırı karşılaştırma için, gömmeyi hedefleyen ve minimalist Lua'dan daha eksiksiz bir sözdizimine sahip olmaya çalışan 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. Fikir, hafif ve oyun geliştiriciler tarafından iyi biliniyor olması (oyun geliştirmede sistemler oluşturmak önemli bir sorundur). Belki de bu, Lua'nın daha fazla takdir edilebileceği başka bir alan. Kesinlikle CMake sözdiziminden daha kullanıcı dostu ....

56
Klaim

Lua ile her şeyi yapabilirsiniz, programları genişletmek için bir komut dosyası dili olarak oluşturuldu? Evet, ancak bununla sınırlı değil, Lua için çok sayıda kütüphane var ve doğru araçlarla (LuaJIT'in FFI veya tolua) üzerinde bir C/C++ Kütüphanesi bile kullanabilirsiniz. Benim görüşüme göre Python benim görüşüme göre daha fazla kullanılmasının nedeni sadece yaş, Python birçok kolej ve okulda ilk dil olarak kullanılıyor, daha fazla insan var Python Lua'dan daha iyi ve Python Lua'dan daha iyi bir kütüphane bulmak çok daha kolay, çünkü dil daha olgun.) Python hakkında çok şey bilmiyorum, ama bildiğim kadarıyla, kodunuzu son kullanıcıdan gizlemek kolaydır, Lua'da ne var, o kadar kolay değil, doğru mu?

4
Gustavo