2010-04-04 15 views
33

Me pregunto si hay algún lenguaje de scripting editable y tipado estáticamente. Python, JavaScript, etc. son excelentes idiomas, pero están tipados dinámicamente (es decir, los tipos se verifican en tiempo de ejecución). Me pregunto si alguien sabe de algún lenguaje de scripting estáticamente estátizado que se pueda incrustar en una aplicación de C++.¿Hay algún lenguaje de scripts incrustado estáticamente y tipado?

+5

¿Cómo se escribe "python" sin mucha compresión? En python, muchas operaciones lanzan un TypeError que simplemente causaría un comportamiento indefinido en C++. – sepp2k

+2

La mayoría de ellos (Python, Ruby, ...) podrían considerarse fuertemente tipados según la definición (@runtime, eso es). Es posible que desee ampliar su definición específica '' fuertemente tipada ''. – ChristopheD

+1

Oh querido, puedo ver una pelea bunfight saliendo de este ... – skaffman

Respuesta

3

Bueno, hay Ch - el intérprete integrable C/C++

+0

¿Podría ampliar un poco más sobre Ch? ¿Es multiplataforma?¿Se lanzó bajo licencia GPL o una licencia diferente? ¿La documentación está actualizada? –

+0

@George: Realmente no lo he probado (personalmente no veo el punto), pero es multiplataforma y gratuito. Parece estar bien documentado y también hay una versión comercial con (presumiblemente) soporte completo –

+7

¿Y en qué mundo C cuenta como "estáticamente estátizado"? –

2

¿Qué hay de C#? Echa un vistazo a la aplicación de un C# de Mono "lenguaje de programación" REPL (http://www.mono-project.com/CsharpRepl)

Actualización: Si usted no sabe lo que es un REPL es, es lo que se ve cuando se ejecuta Python sin argumentos, o IRB

11

Sugiero que revise Angelscript. Lo usamos en Warsow y es bastante bueno. Tiene todas las características que esperarías como clases, administración de memoria, etc. Dado que está tipado estáticamente, puede hacer mejores optimizaciones para ti, por lo que el bytecode termina más rápido que otros lenguajes de scripting.

Sin embargo, AS no es tan fácil de usar como otros como Lua, y solo hay una descarga .zip, es decir, no hay instaladores .exe, paquetes .deb, .dmg ni nada. En general, esto está bien, porque de todos modos querrás agrupar AS en tu proyecto. Lo más difícil en comparación con Lua es que la biblioteca es mucho más grande (pero tiene más funciones). No es que mucha gente lo use así que es mucho más difícil encontrar ejemplos y ayuda, pero hay buenos documentos, por lo que no debería ser tan difícil comenzar.

Sin embargo, yo personalmente preferiría tener un lenguaje dinámico para scripting. Cuando escribo una secuencia de comandos de una aplicación, quiero entrar allí y codificar la mierda sin tener que preocuparme por el equipaje estilo C. Aparte de AngelScript, realmente no puedo pensar en otros que valga la pena recomendar.

+0

"sin preocuparse por el equipaje de estilo C": de hecho, parece que Angelscript es demasiado pesado para calificarlo como un "lenguaje de guiones". – Stefan

1

Haskell está tipado estáticamente. Y probablemente puedas incrustar ghci o abrazos (ambos son intérpretes) en otro programa. Pero no es fácil, afaik.

+0

He intentado usar Haskell como reemplazo de Python, pero después de algunos intentos fue obvio que implementar algo en Haskell me lleva 5 veces más tiempo que en Python. Traté de atribuir esta diferencia a mi poco conocimiento de Haskell, pero después de reconsiderar nunca he tenido un rendimiento tan pésimo con ningún idioma nuevo, así que me apego a Python. Además, la evaluación perezosa en combinación con IO genera errores terribles e impredecibles. Es como agarrar múltiples hilos cuando el orden importa, pero las cosas suceden fuera de orden y en el caso de Haskell no tienes los medios para imponer el orden. – Trismegistos

+2

Haskell absolutamente tiene orden impuesta. El orden en el que se secuencian las acciones de IO, por ejemplo, es el orden en que sucederán. – Evan

Cuestiones relacionadas