[scripting] Alternative a Lua come linguaggio incorporato?


2 Answers

C'è sempre Lisp. :) Ma questo sottolinea il fatto che Lua è in effetti meno "bizzarra" della maggior parte delle lingue. È stato progettato per i non programmatori e legge come pseudocodice. Ha una semantica pulita e uniforme (funzioni nidificate di prima classe con scope lessicale, assegnazioni multiple, valori di ritorno multipli, un meccanismo di strutturazione dei dati singolo e flessibile con sintassi pulita del costruttore, ecc.) Che rendono molto facile imparare, leggere, scrivere, ecc. Inoltre, è inaspettatamente potente ed espressivo (chiamate di coda appropriate, continuazioni, metaprogrammazione, ecc.)

L'unico aspetto veramente "bizzarro" di Lua è che gli array sono indicizzati da 1, e questo fatto che non prende in prestito le convenzioni di C come tutti gli altri ( ~= piuttosto che != , -- piuttosto che // , ecc.), Ma questi sono per lo più bizzarri attraverso gli occhi dei programmatori abituati ai linguaggi di tipo C.

Un'alternativa potrebbe essere Squirrel, che è ispirata a Lua, ha obiettivi simili, ma sintassi simile a C. Non l'ho usato però, quindi non lo so bene che soddisfa i suoi obiettivi.

Question

Sto lavorando su un sistema embedded che esegue Linux su un DSP. Ora vogliamo renderne alcune parti programmabili e stiamo cercando un bel linguaggio di scripting integrabile. Questi script dovrebbero integrarsi bene con la nostra base di codice C ++ esistente, essere piccoli e veloci.

Capisco che Lua è la scelta del settore per problemi come questo. Probabilmente andremo con Lua perché è provato e vero e dimostrato di essere stabile e così via. Tuttavia, come linguaggio di programmazione ha alcuni angoli piuttosto bizzarri.

Quindi, quali alternative sono disponibili per le lingue incorporabili?

MODIFICARE:

Questo è circa un anno dopo.

Abbiamo usato Lua sul nostro sistema embedded e funziona meravigliosamente bene. Nel corso del tempo, abbiamo aggiunto un numero sempre maggiore di supporto per lo scripting a un numero sempre maggiore di parti del progetto e questo ha davvero aiutato a portarlo avanti.

Le prestazioni sono eccezionali, davvero. Anche le operazioni piuttosto complesse che implicano la ricerca attraverso lunghi array o operazioni di stringa di fantasia si comportano sorprendentemente bene. Fondamentalmente non abbiamo mai riscontrato problemi di prestazioni relativi a Lua.

Interfacciare con le funzioni C è molto semplice e funziona davvero bene. Questo ci ha permesso di far crescere il sistema di scripting in modo indolore.

Alla fine, siamo rimasti sbalorditi dalla flessibilità dimostrata da Lua. Il nostro interprete Lua deve essere eseguito su un sistema con un allocatore di memoria non standard e senza supporto per il doppio tipo di dati. Ci sono due posti ben documentati in un file di intestazione che dovevamo modificare per far funzionare Lua su quel sistema. E 'davvero adatto per l'incorporamento!







Con le tue esigenze (ingombro ridotto, piccole stranezze e integrazione con C ++), l'unica opzione a cui posso pensare è Common Lisp .

Alcune persone in questa altra domanda SO raccomandano CFFI per l'integrazione con C.

Ma starei con Lua se io dove tu.




Related