2013-03-08 16 views
6

Per quanto posso vedere, Lua è fondamentalmente un normale linguaggio di script, non molto diverso da PHP, Python o Ruby, che sono much more famous.Perché Lua per configurazione/plug-in?

Ma d'altra parte ci sono molti progetti (ad esempio the awesome window manager) che richiedono configurazione e/o plugin in Lua. Quindi penso che dovrebbero esserci ragioni che rendono una lingua generalmente sconosciuta la scelta preferita per tanti sviluppatori di talento. Puoi nominarne qualcuno?

Cosa guadagni dall'uso/apprendimento di Lua?

+4

Non sono qualificato per confrontarlo con le altre lingue (motivo per cui rispondo solo in un commento), ma Lua è molto piccolo e veloce (per un linguaggio di script) - ed è stato progettato esplicitamente per l'integrazione con C++ ... che rende abbastanza semplice l'integrazione in un progetto. Hai dato un'occhiata qui? http://www.lua.org/about.html –

+1

Lettura interessante. Penso che tu possa essere più sicuro di rispondere in generale. Se non è interessante, non otterrebbe alcun upvotes. – erikbwork

+1

E l'ignoranza è una questione di percezione. Come hai notato te stesso, è usato in molti posti, quindi è relativamente conosciuto. È solo che non ti è familiare. – Cubic

risposta

7

Lua è nata con l'obiettivo principale di creare script e di estendere un'applicazione di hosting scritta in C. Quando è diventato un potente linguaggio indipendente, ha conservato la funzionalità di incorporamento facile in un'applicazione come principale caratteristica.

Come ho capito la sua storia, PHP è venuto fuori dalla necessità di avere modi più semplici per scrivere applicazioni Web. Sebbene possa essere utilizzato indipendentemente da un server web, tale utilizzo non è così comune.

Python e Ruby (come Perl) sono nati come lingue indipendenti con specifici obiettivi di progettazione. Mentre è possibile incorporare un interprete python in un'applicazione più grande, quella non era una funzionalità che era importante per la sua comunità di utenti nei primi giorni. Python è oggi molto più probabile che venga trovato incorporato in un'applicazione rispetto a Perl, ma entrambi brillano come il framework su cui sono costruite applicazioni che vanno da piccoli script a interfacce grafiche complete.

Ruby (anche come Perl) ha ottenuto molta visibilità nel dominio dell'applicazione Web, con la struttura Rails probabilmente la causa. Anche se non posso dire molto di Ruby sulla base dell'esperienza personale, esso si colloca regolarmente nello Tiobe Index. La mia (limitata) comprensione è che incorporare un interprete Ruby in un'applicazione più grande non era un obiettivo iniziale del progetto, ma è possibile farlo e apparentemente anche supportato da build più recenti. Una rapida scansione di domande su SO sull'incorporazione di Ruby sembrava produrre un consenso su "non farlo, usa Lua invece" bilanciato da "è possibile, provaci".

Perl è sicuramente meglio conosciuto come linguaggio di scripting autonomo che precede il web moderno. Mentre CGI si stava sviluppando, Perl trovò una casa lì grazie all'interpretazione che rendeva la scrittura di script CGI in Perl per l'esecuzione in un server web ospitato commercialmente con accesso a riga di comando limitato (o no). Mentre è possibile (e anche abbastanza facile in questi giorni) estendere Perl con codice di libreria scritto in C, non è mai stato molto facile incorporare un interprete Perl in un'applicazione. La mia sensazione da molti anni ai margini della comunità Perl era sempre che l'incorporamento non era mai una priorità.

Lua ha un buon bilanciamento di potenti funzioni e sintassi semplice. Spesso è abbastanza facile anche per i non programmatori leggere e modificare gli script Lua. Usarlo come linguaggio di configurazione è spesso il primo passo verso un'applicazione completamente programmabile. È immediato utilizzare Lua per analizzare ed eseguire un file di configurazione all'avvio per ottenere le impostazioni del programma. Una volta che la funzionalità è disponibile, l'uso del core Lua per altre attività diventa facile ("era solo seduto lì"). Come una progressione naturale, non è insolito per finire con un'applicazione creata da un sottile strato di codice C, funzioni "hard" core in C, framework UI in C e la maggior parte dell'esperienza utente scritta in Lua. Ad esempio, Adobe Lightroom è costruito in questo modo.

Non fa male che l'intero kit di sorgenti Lua, incluso il manuale di riferimento e una distribuzione binaria necessiti solo di un megabyte o più di spazio di archiviazione. (Sulla mia scatola di Windows in questo momento, Lua e la sua DLL ammontano a poco più di 200KB, rispetto a Perl e alla sua DLL che pesano circa 1,7 MB. Per la maggior parte delle applicazioni, ciò implica che l'aggiunta di un interprete Lua costa circa 200 KB in ulteriori dimensioni eseguibili.)

Un altro fattore da considerare è probabilmente la licenza. Come molti linguaggi di scripting di successo, Lua è open source. Tuttavia, è licensed sotto la semplice comprensione di MIT license che consente esplicitamente l'uso commerciale. Mentre i prodotti rilasciati sotto GPL (o più probabilmente LGPL) possono farsi strada in contesti commerciali, danno agli avvocati più mal di testa. Una semplice licenza come quella applicata a Lua facilita l'accettazione del tuo dipartimento legale. Di conseguenza, Lua viene utilizzato in alcuni significant commercial products e i team di sviluppo di tali prodotti sono stati visibili nella comunità linguistica Lua.

Modifica: Ho rivisto la mia discussione su Ruby grazie ai commenti evidenziando la sua storia più ricca prima del framework Rails. Ciò forniva una scusa per dare a Perl il proprio paragrafo e vantarsi delle dimensioni di Lua con misurazioni concrete. Sì, mi piace Lua. Un sacco.

+1

Una piccola correzione: mentre Ruby oggi sembra essere usato principalmente per lo sviluppo web, non era chiaramente l'intenzione quando è stato progettato. Era come Python e Perl intesi come un linguaggio di scripting polivalente (cfr. [Wikipedia] (http://en.wikipedia.org/wiki/Ruby_ (programming_language) #History). – tty56

+0

In realtà Python è anche usato per un sacco di web progetti ([vedi Django] (https://www.djangoproject.com/) per un framework web potente e (quasi) famoso come i binari). Non sarebbe sbagliato considerare entrambe le lingue applicate negli stessi campi con la comunità di Python è un po 'più seria (come gli scienziati) e la comunità di Ruby è un po' più giocosa (come _why). – erikbwork

+0

@ tty56, come molti, il mio primo contatto con Ruby era in un contesto Web. Per molte ragioni, non ho mai perseguitato al di là del riconoscimento del suo nome Probabilmente il motivo principale era che avevo già una discreta fluidità in Perl e non avevo bisogno di un altro linguaggio di scripting a portata di mano. Naturalmente, Perl trascorre anche molti cicli di CPU nei server web in cima alla sua usi generici Poiché questa risposta è prominente, la modificherò in r efletti quello. Grazie. – RBerteig

5

Lua è relativamente leggero e progettato per essere incorporato in applicazioni (e interagire con) facilmente. Questo spesso lo rende una scelta migliore rispetto a linguaggi più pesanti progettati per funzionare da soli e creare il proprio piccolo mondo.