7

Sto cercando un buon linguaggio di scripting per il collegamento al mio programma. Sto cercando 2 attributi importanti:Lingue di scripting

  • linguaggio di script dovrebbero essere duro legato al file eseguibile (che non richiedono 3rd party installazioni). Questo è importante per me per semplificare la distribuzione.
  • script dovrebbe consentire una certa opzione di debug di run-time (Durante l'esecuzione di uno script all'interno del mio programma vorrei eseguire facilmente all'interno di un debugger mentre è in esecuzione nel contesto del mio programma)

può pitone, lua o qualche altra lingua mi fornisce questo?

+4

È necessario fornire ulteriori informazioni sul programma, ad esempio la lingua utilizzata e il SO di destinazione. – Anax

+0

La domanda più importante sarebbe di quali librerie hai bisogno. – Lothar

risposta

2

Avrei messo i miei due cent in per python. Non conosco molti dettagli, ma il blender della suite di grafica per computer fa un ottimo lavoro di implementazione degli script Python.

Per quanto posso dire in Blender 2.5 l'interprete viene eseguito da dentro l'eseguibile,

import sys 
sys.executable 

spettacoli /blender/blender.exe e c'è un buon supporto per il debugging, ha anche una interattivo interprete dentro

Per maggiori informazioni Check out: http://www.blender.org/

9

Lua è progettato per questo:

  • collegamento statico? dai un'occhiata!
  • debugging? controllare!
13

Sia Lua che Python possono fornire le funzionalità menzionate, quindi la scelta di una di esse dipenderà da altri criteri.

Lua è una soluzione più leggera, avrà un ingombro del disco molto più piccolo e probabilmente un sovraccarico di memoria minore rispetto a Python. Per alcuni usi potrebbe essere più veloce. Python ha una libreria standard molto più ricca, librerie di terze parti più mature e un linguaggio più espressivo.

Entrambi sono stati incorporati nelle principali applicazioni. Python può essere trovato in Blender, OpenOffice e Civilization 4. Lua può essere trovato in World of Warcraft e Adobe Lightroom. Ti consiglio di prendere in considerazione alcuni tutorial per ciascuno e le strutture disponibili per incorporarli nella tua applicazione e scegliere quello più adatto al tuo cervello.

+1

Sfortunatamente a Python manca un vero supporto per un collegamento "un singolo eseguibile". Le librerie DLL/so non possono essere facilmente compilate e collegate staticamente. LUA impedisce il problema non avendo una libreria seria. – Lothar

+2

Civilization 5 è passato a Lua per motivi di prestazioni. – Jonas

7

In genere, Lua è la scelta migliore per l'incorporamento in un altro progetto. Python è migliore come piattaforma autonoma perché il supporto della libreria è molto più ampio. Vedi Lua Versus Python per maggiori dettagli.

Personalmente, utilizzo entrambi molto frequentemente a seconda del lavoro in corso. Uso sempre Lua per l'incorporamento in applicazioni C/C++ o funzionalità di scripting importate da librerie condivise C/C++ (ad esempio una DLL). Python è sempre la mia prima scelta per attività autonome che non richiedono codice C/C++ di basso livello.

1

Mi piace molto Lua per l'incorporamento, ma proprio come un'altra alternativa, JavaScript è facilmente integrabile nei programmi C, C++ (SpiderMonkey e V8) e Java (Rhino).

+0

+1 Vero, è un'altra opzione praticabile. Lo raccomanderei solo se tu, o più correttamente, i tuoi utenti/sceneggiatori probabilmente lo sapranno già. Una cosa che ho dimenticato di menzionare nella mia risposta sopra è che, a meno che tu non stia incorporando il motore di scripting per uso personale, dovresti considerare le probabili preferenze e necessità di coloro che useranno l'interfaccia di scripting. –

+0

Simon: Non sono sicuro di quanto io sia d'accordo. C'è stato un tempo in cui tutti dicevano di volere il REXX come linguaggio di estensione e non posso nominare un singolo programma che ho visto con REXX tra 10 anni. Non conosco * nessuno * chi ha chiesto Lisp per il loro editore (anche i programmatori Lisp!), Ma guarda Emacs ora. Javascript (approssimativamente 'Schema con sintassi simile a Java') originariamente era molto più diffuso tra le persone tipiche che scrivevano le pagine Web, eppure in qualche modo le persone riuscivano ad adattarsi. Penso che se la lingua è sufficientemente potente e gli utenti vogliono hackerare il tuo programma/piattaforma, gli utenti lo scopriranno. – Ken

0

Aggiungerò Tcl al mix. È progettato per essere facilmente integrato in altri programmi.

1

Oltre a Tcl, Lua e Javascript (tutti già citati), Guile è un altro linguaggio progettato esplicitamente per questo.