Domanda

Sto cercando di aggiungere funzionalità di scripting a una base di codice esistente e sto valutando i pro/contro dei vari pacchetti.Lua è probabilmente la scelta più ovvia, ma mi chiedevo se le persone avessero altri suggerimenti basati sulla loro esperienza.

Gli script verranno attivati ​​in seguito a determinati eventi e potrebbero rimanere residenti per un periodo di tempo.Ad esempio all'avvio uno script può definire diverse opzioni che il programma presenta all'utente come una serie di pulsanti.Selezionando uno di questi pulsanti il ​​programma avviserà lo script dove potrebbero verificarsi ulteriori eventi.

Questi sono gli unici veri requisiti;

  1. Deve essere una libreria multipiattaforma compilabile dal sorgente
  2. Gli script devono essere in grado di chiamare funzioni lato codice registrate
  3. Il codice deve essere in grado di chiamare funzioni lato script
  4. Può essere utilizzato all'interno di una base di codice C/C++.
È stato utile?

Soluzione

In base alla mia esperienza:

  • Pitone.IMHO questa è una buona scelta.Abbiamo una base di codice piuttosto grande con molti utenti e a loro piace molto.
  • Rubino.Ci sono alcune app davvero carine come Google Sketchup che lo utilizzano.Ho scritto un plugin per Sketchup e ho pensato che fosse piuttosto carino.
  • Tcl.Questo è il linguaggio di scripting incorporabile della vecchia scuola preferito, ma al giorno d'oggi non ha molto slancio.Però è di alta qualità, lo usano sul telescopio spaziale Hubble!
  • Lua.Ci ho fatto solo cose per bambini, ma IIRC ha solo un tipo numerico in virgola mobile, quindi assicurati che non sia un problema per i dati con cui lavorerai.

Siamo fortunati a vivere nell'età d'oro degli script, quindi è difficile fare una scelta sbagliata se scegli tra quelli popolari.

Altri suggerimenti

Ci ho giocato un po' Ragno scimmia.Sembra che varrebbe almeno la pena dargli un'occhiata nella tua situazione.Ho sentito parlare bene anche di Lua.Il grande argomento a favore dell'utilizzo di un linguaggio di scripting JavaScript è che molti sviluppatori lo conoscono già e probabilmente si sentirebbero più a loro agio fin dall'inizio, mentre Lua molto probabilmente avrebbe una curva di apprendimento un po' più lunga.

Non sono del tutto positivo, ma penso che SpiderMonkey abbia i tuoi 4 requisiti.

Ho utilizzato ampiamente Python per questo scopo e non me ne sono mai pentito.

Lua ha l'API C più semplice per l'associazione a una base di codice che io abbia mai usato.In effetti, di solito arrotolo velocemente gli attacchi a mano.Considerando che spesso non prenderesti in considerazione l'idea di farlo senza un generatore like sorso per gli altri.Inoltre, è in genere più veloce e più leggero delle alternative e coroutine sono una funzionalità molto utile che pochi altri linguaggi forniscono.

AngeloScript

consente di chiamare funzioni C standard e metodi C++ senza la necessità di funzioni proxy.L'applicazione registra semplicemente le funzioni, gli oggetti e i metodi con cui gli script dovrebbero essere in grado di lavorare e non è necessario fare altro con il codice.Le stesse funzioni utilizzate internamente dall'applicazione possono essere utilizzate anche dal motore di scripting, eliminando la necessità di duplicare le funzionalità.

Per lo scrittore di script, il linguaggio di scripting segue la sintassi ampiamente conosciuta di C/C++ (con piccole modifiche), ma senza la necessità di preoccuparsi di puntatori e perdite di memoria.

La domanda originale descriveva Tcl con una "T".

Tcl è stato progettato fin dall'inizio per essere un linguaggio di scripting incorporato.Si è evoluto fino a diventare un linguaggio dinamico di prima classe a sé stante, ma è ancora utilizzato in tutto il mondo come linguaggio incorporato.È disponibile con la licenza BSD, quindi è praticamente gratuito.Inoltre si compila praticamente su qualsiasi piattaforma moderna e su molte non così moderne.E non funziona solo sui sistemi desktop, ma sono disponibili anche varianti per le piattaforme mobili.

Tcl eccelle come linguaggio "collante", in cui è possibile scrivere funzioni ad alta intensità di prestazioni in C beneficiando comunque dei vantaggi di un linguaggio di scripting per parti dell'applicazione meno critiche in termini di prestazioni.

Tcl viene fornito anche con un toolkit GUI di prima classe (Tk) che è probabilmente uno dei toolkit GUI multipiattaforma più semplici disponibili.Si interfaccia molto bene anche con SQLite e altri database e dispone del supporto integrato per Unicode da un po' di tempo.

Se l'interfaccia di scripting sarà resa disponibile ai tuoi clienti (invece di consentire semplicemente ai tuoi ingegneri di lavorare a livello di scripting), Tcl sarà estremamente facile da imparare poiché ci sono solo 12 regole in totale che governano l'intero linguaggio (come di tcl 8.6).In effetti, Tcl brilla come un modo per inventare linguaggi specifici del dominio, che è spesso il modo in cui viene utilizzato come soluzione di scripting per l'utente finale.

C'erano già alcuni ottimi suggerimenti, ma volevo solo menzionare che Perl può anche essere chiamato/può chiamare C/C++.

Probabilmente potresti utilizzare qualsiasi linguaggio moderno di scripting/bytecode.

Se sei disposto a sopportare le difficoltà crescenti di un nuovo prodotto, potresti utilizzare il Pappagallo VM.Che supporta molte, se non tutte, le lingue elencate in questa pagina.Sfortunatamente non è ancora stato completato, ma ciò non ha impedito ad alcune persone di utilizzarlo in un ambiente di produzione.

Penso che la maggior parte delle persone probabilmente menzioni il linguaggio di scripting con cui hanno più familiarità.Dal mio punto di vista, Tcl è stato progettato specificamente per interfacciarsi con C, quindi il dominio problematico è fatto su misura per il linguaggio.Tuttavia, sono sicuro che Python, Perl o Lua andrebbero bene.Probabilmente dovresti scegliere la lingua più familiare al tuo team attuale, poiché ciò ridurrà i tempi di apprendimento.

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