Domanda

Quando vedo Lua, l'unica cosa che abbia mai letto è "ottimo per incorporare", "veloce", "leggero". e più spesso di ogni altra cosa: " World of Warcraft " o in breve "WoW".

Perché si limita a incorporare il tutto in un'altra applicazione? Perché non scrivere script generici come fai tu con Python o Perl?

Lua sembra fare molto bene in aspetti come la velocità e l'uso della memoria (il linguaggio di scripting più veloce afaik), quindi perché non vedo mai Lua essere usato come un "linguaggio di scripting desktop"? automatizzare le attività? Ad esempio:

  • Rinominare un mucchio di file
  • Scarica alcuni file dal Web
  • web scraping

È la mancanza della libreria standard?

È stato utile?

Soluzione

Solo perché è " commercializzato " (in un certo senso generale) come linguaggio per scopi speciali per i motori di script incorporati, non significa che sia limitato a questo. In effetti, WoW avrebbe probabilmente scelto Python come linguaggio di scripting incorporato.

Altri suggerimenti

Lua è un linguaggio accattivante, leggero ed estremamente veloce!

Ma il punto è: Le prestazioni sono così importanti per quelli compiti che hai citato?

  • Rinominare un mucchio di file
  • Scarica alcuni file dal Web
  • web scraping

Scrivi quei programmi una volta e li esegui una volta, forse anche. Perché ti preoccupi così tanto delle prestazioni per un programma run-once?

Ad esempio:

  1. Costo 3 ore per scrivere un programma C / C ++, per gestire i dati una volta, l'esecuzione del programma richiederà 1 ora.
  2. Costo di 30 minuti per scrivere un programma Python per gestire i dati una volta, il programma impiegherà 10 ore per l'esecuzione.

Se scegli il primo, risparmierai tempo per eseguire il programma, ma ti è costato il tuo tempo per sviluppare il programma.

D'altra parte, se scegli la seconda, perdi tempo a correre il programma, ma puoi fare altre cose quando il programma lo è in esecuzione. Che ne dici di giocare a World of Warcraft, uccidere i mostri con il tuo stregone? Mangia il mio D.O.T ! : P

Questo è tutto! Sebbene Lua non sia così difficile da scrivere, tutto su Lua è progettato per essere efficiente. Inoltre, ci sono piccoli moduli per Lua, ma ci sono così tanti moduli per Python. Non vuoi portare una libreria C per Lua solo per un programma run-once, vero? Invece, scegli Python e usa quei moduli per raggiungere facilmente il tuo compito potrebbe essere un'idea migliore.

FYI: In realtà, ho provato a usare Lua per fare il webscraping, ma alla fine mi sono reso conto che non mi devo preoccupare così tanto delle prestazioni linguistiche. Il collo di bottiglia del webscraping è non sul rendimento della lingua . Il collo di bottiglia è attivo I / O di rete, analisi HTML e multitasking. Tutto quello che devo fare assicurarsi che il programma funzioni e trovare il collo di bottiglia. Alla fine, ho scelto Python piuttosto che Lua. C'è così molti eccellenti moduli Python; Non ho motivo di costruire il mio proprio.

In base alla mia esperienza sul Web, ho scelto Contorto per I / O di rete e lxml per l'analisi html come backend del mio programma di webscraping. Ho scritto un articolo per un'introduzione a questa tecnologia.

La scelta migliore per acquisire dati da siti Web: Python + Twisted + lxml

Spero che sia utile.

Lua ha meno librerie di Python. Ma assicurati di dare un'occhiata a LuaForge . Ha molte librerie interessanti, come LuaCURL , wxLua o getopt .

Quindi, visita LuaRocks , il sistema di gestione dei pacchetti per Lua. Con esso, puoi cercare e installare i moduli Lua più maturi con dipendenze. Sembra RubyGems o aptitude .

Il sito lua-users.org ha anche molte risorse interessanti, come tutorial o Lua Wiki .

Quello che mi piace di Lua non è la sua velocità, è il suo linguaggio di base minimo, flessibilità ed estensibilità.

Detto questo, probabilmente userei Python per i compiti che hai citato a causa della più ampia comunità che fa cose del genere in Python.

Probabilmente è perché Lua è stato progettato come linguaggio di scripting ed estensione. Sul sito ufficiale è descritto come un linguaggio di scripting potente, veloce, leggero e integrabile. Non c'è nulla che ti impedisca di scrivere programmi per scopi generali (se ricordo bene che viene fornito con un interprete e un compilatore), ma i progettisti linguistici intendevano che fosse usato principalmente come linguaggio incorporato (quindi leggero e tutto)

Questa è una domanda sociologica, non una domanda di programmazione.

Uso Lua per gli script generici quasi esclusivamente. Ma ho dovuto scrivere alcune centinaia di righe di codice in modo che Lua potesse giocare meglio con la shell. Ciò includeva trucchi come

  • Citando una stringa in modo che sia vista come una parola dalla shell
  • Scrivere una funzione per catturare l'output di un comando come nella shell $ (comando)
  • Scrivere una funzione per eseguire la scansione del filesystem usando la libreria Lua posix ed espandere i modelli di globbing della shell

(Per coloro che potrebbero essere interessati, ho lasciato il codice nel mio Casella di selezione Lua , che contiene anche altre cose. Le cose interessanti sono probabilmente in osutil in os.quote , os.runf , os.capture e forse os.execve . Il globbing è in posixutil.lua . Entrambi usano libreria Lua Posix .)

Per me lo sforzo in più vale la pena perché sono in grado di gestire una sintassi semplice e ottime strutture di dati. Per altri, potrebbe essere preferita una connessione più diretta con la shell.

Sicuramente una mancanza di librerie standard. È anche meno conosciuto di Python, Perl o Ruby.

C'è stata una recente spinta per creare un'installazione inclusa di batterie per Lua su Windows. Il risultato è disponibile nel progetto Lua per Windows a LuaForge. Include l'interprete e una vasta raccolta di moduli extra che consentono di scrivere e utilizzare utili script e applicazioni utili.

So che varie distribuzioni Linux includono Lua e alcuni moduli adesso, e altri ancora a venire.

Ci sono anche un paio di librerie di moduli proposte in discussione nella mailing list, ma la comunità non si è ancora stabilita su una come "ufficiale" meccanismo.

Uso Lua sia come linguaggio di scripting sia come " main " ciclo della mia tipica applicazione, supportato da una o più DLL contenenti codice che è stato meglio implementato in C, oppure racchiude le librerie o le funzioni API esistenti necessarie per un determinato progetto. Utilizzato con un toolkit GUI come IUP o wxLua (un'associazione Lua per wxWindows), Lua rende abbastanza piacevole la scrittura di applicazioni GUI di piccole e medie dimensioni.

Penso che la risposta sia un " marketing " cosa probabilmente è corretta, insieme alla mancanza di un ampio set di librerie tra cui scegliere. Vorrei sottolineare un altro caso di questo: Ruby. Ruby è pensato per essere un linguaggio di scripting generico. Il problema è che da quando Ruby on Rails è diventato così popolare, sta diventando difficile trovare qualcosa che non è correlato a Rails. Temo che anche Lua soffrirà di questo, essendo popolare a causa di alcune cose importanti che lo usano, ma mai in grado di liberarsi da quello stigma.

Mancanza di libreria standard. Periodo. Anche elencare tutti i file in una directory richiede un modulo non standard .

Ci sono buone ragioni per questo (mantenere una portabilità ANSI rigorosa, senza richiedere POSIX) ma il risultato è che, per la programmazione generale, preferisco Python.

Lua è utilizzato in LuaTeX , un'estensione TeX, come linguaggio incorporato, e ha guadagnato rapidamente popolarità tra gli sviluppatori TeX per questo. È usato come linguaggio di scripting per alcune utility nella distribuzione di TeX Live, sia perché solo ora esiste un binario luatex , disponibile su tutte le piattaforme, che può anche essere usato come interprete Lua (con alcuni moduli vitali aggiunti - slnunicode, luafilesystem, ecc.) Questo è molto importante per le installazioni di Windows, che in precedenza si basavano su ulteriori strumenti di scripting Unix (ActivePerl, ecc.) Il linguaggio macro ConTeXt utilizza ampiamente gli script Lua al giorno d'oggi.

Questo è certamente un campo molto speciale :-) Ma completamente estraneo ai giochi!

Affinché Lua sia facile da integrare, deve avere poche dipendenze ed essere piccola. Ciò lo rende scarsamente adatto come linguaggio di scripting generico. Perché usarlo come linguaggio di script per scopi generici richiederebbe molte librerie standard. Ma se Lua avesse molte librerie standard sarebbe più difficile da integrare (a causa delle dipendenze e del footprint di memoria)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top