Linguaggio di scripting alternativo a Lua? [chiuso]

5

Vorrei aggiungere il supporto per lo scripting ad un'applicazione e con abbondanti linguaggi di scripting disponibili Sono un po 'sopraffatto.

All'inizio pensavo a Python ma immagino che Python sia un po 'troppo grande per i miei gusti e l'applicazione (anche se mi piace molto, ottiene molte cose a mio parere mentre la sintassi è pulita e semplice specialmente se non stai facendo OOP pesante).

Sono anche molto appassionato di Lisps. Mi piace lo schema ed è il linguaggio di estensione perfetto, almeno in un certo senso, ma mi piacerebbe rimanere sintatticamente più conservativo.

Ricordo di aver sentito molte cose positive su Lua e in effetti Lua sembra una buona possibilità. Sfortunatamente c'è questa cosa che "mi spegne" davvero: è la parola chiave local per il binding locale. Questo è davvero brutto per i miei gusti e francamente non mi dilungo perché le lingue sono ancora progettate in questo modo e in sostanza conoscendo local . Questo è anche un grosso inconveniente di JavaScript a mio parere e penso che tutto si riduca a un cattivo linguaggio di progettazione. La mia principale preoccupazione è che un utente possa semplicemente ignorare una funzione solo dalla sua / la sua funzione semplicemente omettendo local .

Ma poi Lua ottiene un sacco di cose giuste, dimensioni, velocità ed è sorprendentemente schematica. Tuttavia temo davvero che non sia adatto ai non programmatori che non hanno il senso dell'ambito.

  • Qualche alternativa all'orizzonte?
  • È possibile hackerare il Luacore per rendere locale l'opzione predefinita?

    Le fonti Lua sembrano abbastanza decenti e modulari, quindi questo sarebbe un progetto interessante;)

posta wirrbel 21.03.2013 - 08:20
fonte

2 risposte

8

local è un attributo obbligatorio di scoping lessicale completo :

local x = 0
function f(inc)
    x = x + inc -- if you auto-localize it, this is broken
end

D'altra parte, probabilmente potremmo rimuovere local dalla lingua, ma aggiungere complementare outer ( bound , upvalue , tu lo chiami):

x, y = 0, 0
function f(inc)
    outer x
    x = x + inc -- uses outer slot: "0 + inc"
    y = y + inc -- creates local (and raises "nil + number" error)
end

Se non hai nessuno dei due (inclusi i globals regolari), il tuo ambito è solo inutile.

Il parser Lua è scritto bene, anche se non penso che sarà una soluzione banale.

    
risposta data 21.03.2013 - 14:05
fonte
2

Suggerirei TCL, progettato per essere un linguaggio di scripting incorporato in grado di definire DSL per i non programmatori.

La cosa fondamentale con TCL, schema o qualsiasi soluzione qui però è la progettazione di una DSL che l'utente può capire, con un DSL abbastanza buono l'utente dovrebbe raramente aver bisogno di costrutti di programmazione generali (che potrebbero essere più difficili da comprendere)

WRT il tuo commento TCL in realtà non ha una grammatica quindi mi chiedo se stai fraintendendo qualcosa al riguardo? O meglio, la sua grammatica è tanto complessa quanto gli schemi.

    
risposta data 21.03.2013 - 09:00
fonte