Dovrei usare Lua per scrivere i file di configurazione?

4

Ho sentito che Lua è eccezionale per i file di configurazione, a condizione che tu sia sicuro esso . Lua è stato usato come file di configurazione da programmi come awesome e (recentemente) conky .

Tuttavia, ho anche sentito che usare la programmazione per configurare un programma è un anti-pattern.

Poiché Lua non viene compilato come parte del programma, ciò si dimostrerebbe un'eccezione?

Ecco un suggerimento su ciò che Lua potrebbe sembrare un file di configurazione:

return {
  rootdir = "/abc/123",
  debug = true,
  things = {
    "foo",
    "bar",
    "baz",
    "qux"
  }
}
    
posta Lawful Lazy 10.12.2016 - 23:20
fonte

2 risposte

6

Le esigenze di qualsiasi lingua utilizzata per i file di configurazione sono le stesse, indipendentemente dal fatto che si tratti di un linguaggio di programmazione o meno:

  1. Le persone che lo usano possono farlo in modo ragionevolmente efficace. Se i veri esseri umani non li stanno scrivendo, allora deve essere leggibile dai programmi. E possibilmente eseguito il debug dai programmatori.

    La sintassi della tabella di Lua era in realtà derivata da un vecchio formato di file di configurazione, quindi è ugualmente efficace come JavaScript per questo scopo (cosa pensi che sia JSON?). È quasi auto-documentante come tali cose, con commenti e così via.

  2. I file di configurazione impropri non dovrebbero interrompere il tuo programma. O peggio, dirottarlo . È molto facile eseguire sandbox in uno stato Lua, in quanto devi fare un lavoro effettivo per fare in modo che uno stato Lua faccia qualcosa.

    Tuttavia , la cosa più importante di cui devi preoccuparti è uno script Lua precompilato che rompe il tuo incapsulamento. Ciò significa che è necessario un meccanismo per impedire il caricamento di script Lua precompilati come file di configurazione. Lua 5.2 e superiori forniscono questo. Per Lua 5.1, se non si presta particolare attenzione, è possibile creare un vuoto di sicurezza nel programma.

  3. La lettura / scrittura del file deve essere ragionevolmente facile per il codice. L'interfaccia della tabella di Lua può essere un po 'prolissa, ma con un paio di funzioni wrapper, non dovrebbe esserci un problema da gestire.

  4. Se gli errori compaiono nel file, dovresti essere in grado di fornire un messaggio di errore ragionevole. Il parser di Lua non è il massimo, ma non è terribile dare messaggi di errore.

Detto questo, dato il numero di parser XML e JSON là fuori, non mi preoccuperei di usare "LON" come linguaggio di configurazione a meno che il mio programma abbia già incorporato Lua in qualche altro modo.

    
risposta data 11.12.2016 - 06:27
fonte
3

L'uso di un linguaggio di programmazione per un file di configurazione è ragionevole se vengono soddisfatti i seguenti casi:

  1. Il software è open source (quindi non ci sono preoccupazioni per gli utenti che fanno introspezione per arrivare ai suoi interni).
  2. Le esigenze di configurazione possono spesso essere molto complicate e dipendono da parti dell'ambiente e dallo stato dell'applicazione.
  3. Gli utenti possono aspettarsi di essere tecnici.
  4. Non vi è alcun costo elevato se l'utente incasina qualcosa.

Xmonad ed Emacs (2 bit di software che amo e utilizzo tutti i giorni) usano entrambi i linguaggi di programmazione per la loro configurazione, il che consente loro di essere incredibilmente estensibili. Hanno anche colpito tutti i punti precedenti.

Quindi penso che sia opportuno utilizzare qualsiasi linguaggio di programmazione per la tua configurazione in casi rari. Sceglierei la tua lingua in base a quanto è facile raccogliere e quanto è facile integrarsi. Lua di solito farà bene con quei due.

    
risposta data 11.12.2016 - 05:18
fonte

Leggi altre domande sui tag