2010-04-04 19 views
33

Mi chiedo se esistano linguaggi di script incorporati e tipizzati staticamente. Python, JavaScript, ecc. Sono ottimi linguaggi, ma sono tipizzati dinamicamente (cioè i tipi vengono controllati in fase di esecuzione). Mi sto solo chiedendo se qualcuno sa di linguaggi di scripting tipizzati staticamente che possono essere incorporati in un'applicazione C++?Esistono linguaggi di script incorporati e tipizzati in modo statico?

+5

Come si digita genericamente Python? In Python molte operazioni generano un TypeError che causerebbe semplicemente un comportamento indefinito in C++. – sepp2k

+2

La maggior parte di essi (Python, Ruby, ...) potrebbe essere considerata fortemente tipizzata a seconda della definizione (@runtime, ovvero). Potresti voler espandere la tua specifica definizione "fortemente tipizzata". – ChristopheD

+1

Oh caro, posso vedere un bunfight che produce da questo ... – skaffman

risposta

3

Beh, c'è Ch - l'interprete embeddable C/C++

+0

Potresti espanderti un po 'di più su Ch? È multipiattaforma?È rilasciato sotto licenza GPL o diversa? La documentazione è aggiornata? –

+0

@George: Non l'ho ancora provato (personalmente non vedo il punto), ma è multipiattaforma e gratuito. Sembra essere ben documentato e c'è anche una versione commerciale con (presumibilmente) supporto completo –

+7

E in quale mondo C conta come 'staticamente digitato'? –

2

Come su C#? Scopri implementazione di Mono di un C# "linguaggio di scripting" REPL (http://www.mono-project.com/CsharpRepl)

Aggiornamento: Se non sai cosa una REPL è, è ciò che si vede quando si esegue Python senza argomenti, o IRB

11

Ti suggerisco di dare un'occhiata allo Angelscript. Lo abbiamo usato su Warsow ed è abbastanza buono. Ha tutte le funzionalità che ti aspetteresti come classi, gestione della memoria, ecc. Dal momento che è tipizzato in modo statico, può migliorare le tue ottimizzazioni, e così il bytecode finisce più velocemente di altri linguaggi di scripting.

Tuttavia, AS non è così facile da usare come altri come Lua, e c'è solo un singolo download .zip - ciò significa nessun installer .exe, pacchetti .deb, .dmg o altro. Generalmente questo è OK, perché ti consigliamo di raggruppare AS nel progetto in ogni caso. La principale difficoltà rispetto a Lua è che la libreria è molto più grande (ma ha più funzioni). Non molte persone lo usano, quindi è molto più difficile trovare esempi e aiuto, ma ci sono buoni documenti quindi non dovrebbe essere così difficile iniziare.

Tuttavia, preferirei avere un linguaggio dinamico per lo scripting. Quando scrivo un'app, voglio entrare e codificare la cosa senza preoccuparmi del bagaglio in stile C. Oltre a AngelScript, non riesco a pensare a nessun altro che valga la pena di raccomandare.

+0

"senza preoccuparsi del bagaglio in stile C": anzi, Angelscript sembra troppo pesante da usare per qualificarsi come "linguaggio di scripting" per me. – Stefan

1

Haskell è staticamente digitato. E probabilmente puoi incorporare ghci o hugs (entrambi sono interpreti) in un altro programma. Ma non è facile, afaik.

+0

Ho provato ad usare Haskell come sostituto di Python ma dopo pochi tentativi è stato ovvio che implementare qualsiasi cosa in Haskell mi richiede 5 volte in più rispetto a Python. Ho cercato di attribuire questa differenza alla mia scarsa conoscenza di Haskell, ma dopo aver riconsiderato non ho mai avuto una performance così pessima con nessun nuovo linguaggio, quindi mi attengo al Python. Inoltre, la valutazione lazy in combinazione con IO fornisce terribili bug imprevedibili. È come afferrare il multi-threading quando l'ordine conta ma le cose accadono fuori ordine e nel caso di Haskell non si ha il mezzo per imporre l'ordine. – Trismegistos

+2

Haskell ha assolutamente ordinato l'ordine. L'ordine in cui le azioni IO sono sequenziate, ad esempio, è l'ordine in cui avverranno. – Evan