Perché Python e non Lua? [chiuso]


45

Perché Python è stato supportato da Google e è diventato così rapidamente popolare e Lua no?

Sai perché Lua è rimasta in background?


3
A Lua piace far finta che matrici e dizionari siano la stessa cosa, e ha una lunghezza maggiore che può non solo restituire risultati errati, ma risultati non deterministici. Non so quali siano le ragioni di Google, ma questa è una ragione sufficiente per cui non mi piace.
Steve314

4
Per me, Python è più facile da programmare, più divertente e ha più funzionalità. Alcuni esempi dalla cima della mia testa: i generatori arrivano come cittadini di prima classe in Python ( yield) e Lua richiede una configurazione più ingombrante. L'indicizzazione dell'elenco di Python [::]è un grande vantaggio. Python ha classi ed eredità legittime. Lua è più veloce, sì, ma in realtà mi piace scrivere il codice Go per l'uso in Python quando la velocità è importante.
Frank Bryce,

Adoro LuaJIT, ma una grande parte del mio amore per questo è la sua facilità di incorporamento, velocità e impronta da adolescente. Se dovessi programmare qualcosa per tutto il giorno, potrei inclinarmi di più verso Python.

@FrankBryce hai capito al contrario. I generatori di Python sono un sottoinsieme delle coroutine di Lua. Vedi inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
capr

Risposte:


37

Adoro davvero Lua, ma ha alcuni limiti reali e, come altri hanno già detto, derivano principalmente dalle origini di Lua come linguaggio di configurazione e poi come linguaggio di scripting incorporato.

A causa dell'obiettivo di mantenere piccola Lua, esiste solo una libreria standard molto piccola , che ha solo funzionalità di ossa nude.

Ciò ha portato a una sfortunata cultura nei circoli di Lua in cui gli sviluppatori di Lua amano implementare nuovamente le funzionalità offerte dalle stesse librerie standard di molte altre lingue piuttosto che lavorare collettivamente su un insieme universalmente accettato di librerie di base.

Cose come multi-threading, espressioni regolari, metodi di accesso ai file indipendenti dalla piattaforma e persino operazioni a bit (fino alla 5.2) sono tutte "non incluse" poiché renderebbero Lua molto più grande e più lenta. Sicuramente puoi far sì che le biblioteche facciano queste cose, ma quelle hanno manutentori indipendenti e livelli di qualità.

Non fraintendetemi. Adoro Lua per gli stessi motivi che ho appena elencato.


54

Semplice: Lua ha più obiettivi di "nicchia" rispetto a Python .

Python è ritenuto utile come linguaggio di programmazione generale. Quindi è utile in molti casi. Copre molti tipi ben noti di applicazioni ma non entra direttamente in competizione con altre lingue che potrebbero essere mirate a vincoli specifici, ma la semplicità della sua sintassi.

Lua è totalmente mirato ad essere un linguaggio di scripting incorporato. È lo scopo iniziale, anche se attualmente è utilizzato in altri contesti, come i sistemi di compilazione; deve essere incorporato nel software e consentire una facile implementazione di funzioni e strutture di script specifiche del dominio. È così minimalista che può anche essere usato su hardware veramente limitato (ho usato Lua su NintendoDS), è leggero, facile da usare, VELOCE ed è un linguaggio così minimalista ma si pensa che sia esteso tanto che un sacco di dialetto (importando paradigmi come orientamento dell'oggetto). È così portatile (ANSI C) che puoi usarlo su qualsiasi hardware incorporato con una discreta quantità di memoria per i moderni software embedded (se ricordo bene il lua vm predefinito è di circa 400ko e non crescerà quasi mai se non crei in loop la creazione di oggetti ...).

Quindi, Lua viene inizialmente utilizzato nel contesto in cui è necessario incorporare un linguaggio di scripting per l'applicazione .

Python è usato per ... quasi tutto ciò che non richiede un linguaggio più di nicchia (puoi creare giochi abbastanza performanti usando Python, ma alcuni tipi di giochi ad alte prestazioni richiedono davvero di evitare tale sistema).

È semplicemente che Python è usato in più contesti di Lua. Per quanto ne so, oltre ad Android (che fornisce supporto per Java e madrelingua), Google non è una società di software incorporata, quindi non ha davvero bisogno di Lua ovunque, mentre Python è utile per tutto ciò che fanno (web, sistema di compilazione , comunicazione, web e web).

Python è utilizzato in molti giochi anche per lo scripting incorporato, ma è pesante e più lento di Lua. La sintassi di Python lo rende più appropriato per i grandi giochi che fanno molto affidamento sulle informazioni scritte nella loro struttura di gioco (non sono sicuro che ci sia chiaro, ma pensa solo che se hai bisogno di un "vero linguaggio completo" per lo scripting, incorporare Python potrebbe essere una buona idea, se la performance è adatta a te). Python non è stato creato per essere incorporato, quindi va bene. Un equivalente di Python destinato a essere incorporato in C ++ è Falcon.

Per un confronto estremo, alcuni linguaggi che mirano all'incorporamento e cercano di avere una sintassi più completa rispetto al minimalista Lua e competono sulle prestazioni: ChaiScript, AngelScript, Io ...

A proposito, ho visto nuovi sistemi di compilazione come PreMake o Bam che usano Lua come linguaggio per i file di compilazione. L'idea è che sia leggera e ben nota dagli sviluppatori di giochi (costruire sistemi nello sviluppo di giochi è un grosso problema). Quindi forse è un altro dominio in cui Lua potrebbe essere più apprezzato. È sicuramente più intuitivo della sintassi di CMake ....


4
Penso che l'obiettivo di Lua come linguaggio incorporato sia probabilmente un grande contributo. Ma ancora, credo che la "popolarità" di una lingua abbia meno a che fare con il design o le capacità del linguaggio stesso e più una questione di "momento giusto, posto giusto" (vedi PHP, per esempio).
Dean Harding,

Beh, penso che una lingua mirata a uno scopo specifico sia naturalmente interessante per utenti specifici, rendendo il suo pubblico più moderato di qualsiasi linguaggio generico. Avere meno audacia rispetto alle lingue di uso generale ha un impatto diretto sul numero di persone che ne parleranno mai. Oltre a ciò, obiettivi specifici significano caratteristiche specifiche. Pertanto, non è buono per ogni situazione. Qui ad esempio lua da solo non è un ottimo linguaggio di programmazione della gui. Richiede alcune aggiunte per essere davvero utile.
Klaim

Detto questo, sono pienamente d'accordo: se php non fosse usato per un campo così ampiamente usato come lo sviluppo di siti Web, non sarebbe dappertutto ora.
Klaim

Lua viene utilizzato principalmente come linguaggio incorporato ma è un linguaggio di programmazione generico, ad esempio è possibile creare script CGI con mod_lua. Potrei cambiare la mia domanda sul perché lua è rimasto come linguaggio incorporato?
BenjaminB,

Perché è l'origine. Puoi usarlo come linguaggio per scopi generici sì, in quanto puoi usare php anche per scopi generali. Puoi anche usare Perl per fare lo stesso. Ma le loro origini fanno i loro orientamenti. Ancora una volta, il loro scopo iniziale li rende meno utili di altre lingue per le lingue di uso generale. A Lua manca un po 'di linguaggio di funzionalità per essere facile da usare con il sistema GUI per esempi, come l'orientamento agli oggetti (che puoi aggiungere facilmente, ma non è nativo). Assicurati di vedere la differenza tra una lingua originariamente creata per uno scopo specifico e una lingua generale. Tutti hanno comunque dei vincoli.
Klaim,

4

Puoi fare tutto con Lua, è stato creato come linguaggio di scripting per estendere i programmi? Sì, ma è tutt'altro che limitato, ci sono molte librerie per Lua e con gli strumenti giusti (FFI o tolua di LuaJIT) puoi persino usare una libreria C / C ++ su di essa. Il motivo che rende Python più usato dal mio punto di vista è solo l'età, Python è usato come prime lingue in molti college e scuole, ci sono più persone che conoscono Python di Lua ed è molto più facile trovare una buona libreria per Python che per Lua, perché la lingua è più matura. Inoltre, non so molto su Python, ma per quanto ne so, è facile nascondere il codice all'utente finale, cosa in Lua, non è così facile, ho ragione?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.