2009-10-03 16 views
16

¿Hay un lenguaje de scripts para C++ (como perl) que se puede usar para un desarrollo rápido y usar alguna herramienta que pueda convertirse en C/C++ para obtener un mayor rendimiento para la implementación?Lenguaje de scripting para C/C++?

EDITAR:
Basándome en algunos comentarios, permítanme aclarar la pregunta. Debería poder convertir script en C/C++ programa o binario sin modificar mi script.

+0

@rjoshi, tal vez necesitas aclarar Supuse lo contrario de @Mike que quería alojar un lenguaje de scripting en una aplicación C++. Lo hice para Windows con el motor VBScript, así que tal vez fue mi experiencia como mi prejuicio. – kenny

+0

quiero hacer un prototipo rápido en lenguaje de programación para el desarrollo y debe ser capaz de desplegar para un alto rendimiento así que me preguntaba a algunos puede convertir la escritura en programa en C/C++ para el despliegue. – rjoshi

+0

@rjoshi: por favor, no comentes tu propia pregunta. Por favor actualice su pregunta. Al comentar sobre su propia pregunta es tonta - es el propietario de la pregunta. Puedes arreglarlo para aclarar cosas. –

Respuesta

25

con un intérprete de C/C++ se puede utilizar C/C++ como lenguaje de script


Nota: Hasta ahora, he tratado solamente Ch y CINT. He agregado ccons y UnderC para hacer la lista más completa.

+0

esos enlaces son muy, muy interesantes, ¡gracias por compartir con nosotros! No pensé que realmente existe la posibilidad de crear scripts de C++ :) – MaciekTalaska

+0

Uno más: ** SCC **: http://volnitsky.com/project/scc/ –

+0

¿Qué es "C/C++"? ¿Estos intérpretes son compatibles con C, C++ o ambos? –

2

Muchos proyectos combinan, p. C++ y Python: consulte, por ejemplo, boost.python.

Prefiero R y uso la interfaz Rcpp de R a C++.

Cualquiera de las dos cajas le ofrece su lenguaje de scripting para creación de prototipos y fácil "pegamento" a C++ para el rendimiento.

9

Puede probar Lua bastante a menudo utilizado con C++ en la industria de los juegos. Tiene una pequeña huella de memoria y es bastante maduro, tiene una gran biblioteca ... solo pruébalo.

hm ... No entiendo lo que quiere lograr: ¿quiere encontrar un lenguaje de scripting que de alguna manera, mágicamente se convierta en fuente de C++? ¿O lo que realmente quieres es solo una opción para crear un ejecutable desde el script?Si es este último, entonces puede intentar py2Exe.

+0

"Pie pequeño" es un término relativo ... Lau requiere más memoria que algunos sistemas en los que me gustaría utilizarla. – NoMoreZealots

+0

Para el desarrollo integrado (y por igual) donde cada byte de memoria es valioso, usar cualquier lenguaje que viene con su propia máquina virtual puede no ser la mejor solución (supongo). No ha especificado para qué quiere usar el lenguaje de scripting, en qué tipo de plataforma, cuáles fueron las limitaciones ... Fue bastante difícil de adivinar;) Y si desea comparar el rendimiento de varios idiomas: http : //shootout.alioth.debian.org/ – MaciekTalaska

1

Para Python, a veces encuentro psyco útil. No estoy seguro de si hay algún equivalente para Perl.

Al elegir un idioma para una tarea, me resulta más útil elegir el idioma más adecuado para el trabajo. Si el trabajo requiere más rendimiento del que un lenguaje de scripting puede brindar en condiciones normales, generalmente es mejor simplemente cambiar que inclinarse hacia atrás para intentar acelerar el código.

+0

Estoy de acuerdo con su comentario, pero el problema es que está haciendo un prototipo rápido y no conocerá los requisitos de rendimiento hasta que el producto tenga éxito y el rendimiento se convierta en un cuello de botella. – rjoshi

0

La pregunta podría interpretarse de diferentes maneras ...

Si ya ha codificado una parte de su aplicación en C++ y necesita agregar módulos o secuencias de comandos, que desea agregar en el código C++, finalmente, para una mejor rendimiento, puede usar Qt que es un marco sólido, muy completo multiplataforma.

Incluye soporte para scripts (ECMAScript, la versión estandarizada de Javascript), desde la que puede acceder a sus objetos C++ si es necesario. También proporciona soporte para complementos.

Con ese enfoque, incluso se puede proceder en tres pasos,

  • primero hacer algunas pruebas en Javascript,
  • luego el código de la base de su aplicación en C++ y todavía utilizan una parte de las secuencias de comandos (por ejemplo si necesita probar diferentes algoritmos),
  • y finalmente portar todo, o al menos las partes críticas, en C++.

Otra opción es incorporar un intérprete de Python en su código, aunque eso probablemente requiera más trabajo.

2

pawn

peón es una, sin tipo, de 32 bits lenguaje simple extensión con una sintaxis similar a C. Un programa de "fuente" de peón se compila en un archivo binario para una velocidad de ejecución óptima. El compilador de peones emite código P (o bytecode) que posteriormente se ejecuta en una máquina abstracta. La velocidad de ejecución, la estabilidad, la simplicidad y una pequeña huella fueron criterios esenciales de diseño tanto para el lenguaje como para la máquina abstracta.

Este lenguaje es muy similar a la sintaxis c, por lo que cualquiera que haya hecho cualquier C++, c, C#, java podrá leerlo y se simplificará para que ningún codificador pueda leerlo. Este lenguaje se usa actualmente en general, entre otras cosas, scripting contra los servidores halflife 1 y halflife2.

+0

/me encanta mi peón, y los chicos de AMX han hecho algunas cosas INSANE con el idioma. –

0

No estoy seguro de entender su pregunta, pero si usted busca implementar su propio lenguaje de scripting que podría interactuar con su código C++, puede echar un vistazo a boost :: spirit. Solo tienes que contarle tu gramática y tienes tu lenguaje de scripting haciendo lo que le digas en C++. Usted especifica su gramática utilizando operadores de C++ lo que lo hace muy fácil e intuitivo.

Eso es lo que actualmente uso para mis necesidades recientes y parece que hará bien el trabajo. Tiene acceso total a sus objetos C++ al especificar su gramática y su usuario puede tener un lenguaje muy simple para aprender (en comparación con CINT, donde el lenguaje sería C++).

El tiempo de compilación es un poco lento en este momento, pero si no necesita implementar un lenguaje muy complejo, debería ser manejable (no me gustaría ver el tiempo de compilación para algo como C++). También falta un poco la documentación para la versión más nueva (y la versión más actualizada es un poco difícil de encontrar) pero es relativamente fácil de usar, por lo que podría valer la pena verificarla, según sus necesidades.

2

Hay un nuevo paquete Chaiscript que está diseñado para C++. Es relativamente nuevo y no completamente estable todavía.

4

Cualquier persona interesada en un lenguaje de script que es (en su mayoría) muy similar a C++, lo desea, puede echar un vistazo a angelscript (zlib):

El Scripting Biblioteca AngelCode o AngelScript como también se le conoce , es una biblioteca de scripting multiplataforma extremadamente flexible diseñada para permitir que las aplicaciones amplíen su funcionalidad a través de scripts externos. Ha sido diseñado desde el principio para ser un componente fácil de usar, tanto para el programador de aplicaciones como para el guionista.

Se han hecho esfuerzos para que llame funciones C estándar y métodos C++ sin necesidad de funciones de proxy. La aplicación simplemente registra las funciones, los objetos y los métodos con los que las secuencias de comandos deberían poder trabajar y nada más tiene que hacerse con su código. Las mismas funciones utilizadas internamente por la aplicación también pueden ser utilizadas por el motor de scripting, que elimina la necesidad de duplicar la funcionalidad.

Para el guionista del lenguaje de programación sigue la sintaxis conocida de C/C++ (con cambios menores), pero sin la necesidad de preocuparse por los punteros y pérdidas de memoria. A diferencia de la mayoría de los lenguajes de scripting, AngelScript usa los tipos de datos C/C++ comunes para una comunicación más eficiente con la aplicación de host.

Para obtener más información, echa un vistazo a: http://www.angelcode.com/angelscript/sdk/docs/manual/index.html

+0

cosas geniales! :-RE – ASBai

Cuestiones relacionadas