2010-08-18 15 views
10

Me gustaría agregar un cierto grado de "capacidad de escritura" a una aplicación que estoy escribiendo. En términos generales, me gustaría una forma de insertar una API de lenguaje de programación en mi programa. Miré a TinyPy, pero me preocupa que, dado su tamaño pequeño, podría ser engañosamente limitante (es decir, se parece y se siente como Python, pero le faltan muchas de las características de Python completo).Incrustar un lenguaje de programación en un programa

No estoy buscando escribir mi propio lenguaje de programación; Me gustaría simplemente tomar un lenguaje relativamente conocido en el que los usuarios puedan escribir funciones, y luego poder llamar a esas funciones/pasar esos parámetros de funciones desde mi aplicación, que estará escrita en C.

I ' También me gustaría tener acceso a cualquier tipo de datos. Estas funciones vuelven a mí, también desde C.

¿Alguien tiene alguna sugerencia en cuanto a una API/Biblioteca, que sería a la vez liviana, relativamente completa, y con una biblioteca C relativamente fácil de usar o fácil de entender?

Gracias!

+2

Recuerdo haber visto algo sobre Garry's Mod usando Lua. ¿Es eso una posibilidad? –

Respuesta

5

Es posible que desee mirar SpiderMonkey, que le permitirá insertar un motor de Javascript en su programa C.

+0

Esto es increíble, gracias! Comencé a echar un vistazo a la documentación de JSAPI, ¡y es bastante bueno! – FreeMemory

16

Lua es una opción popular.

3

La mayoría de los lenguajes de scripting tienen buenas interfaces con C. Los que he echado un vistazo son Perl, Python y Lua. Si tus usuarios no son programadores serios, te aconsejaría darle una oportunidad a Perl. Si son jugadores serios de World of Warcraft, es posible que ya estén familiarizados con Lua y escriban código Lua para interactuar con un programa compilado, por lo que puede ser una buena opción.

2

Siempre puede usar 'c' con el kit de herramientas ch.
Como dijiste Python es bueno especialmente si puedes usar el wrapper :: python wrapper.
Otra opción popular es Javascript, es utilizado por el sistema de scripting de Qt

+0

C, no C++. Sin impulso – nmichaels

1

El lenguaje más conocido es javascript. Hay algunos buenos y simples (bueno, no tan simple como sea posible si lo comparas con Lua por ejemplo) para incrustar intérpretes de Javascript por ahí.

No ha dicho nada acerca de las bibliotecas externas. Al igual que Lua, estos sistemas de javascript están desnudos. No se proporciona mucho para comunicarse con la palabra externa. Esto es en contraste con Ruby y Python donde se obtiene un sistema de pilas incluidas con los millones y millones de funciones de la biblioteca de tiempo de ejecución

empieza por leer esto:

Why embed JavaScript?

How to embed the JavaScript engine

+0

La biblioteca de tiempo de ejecución pesada hace que un idioma sea menos utilizable para la incorporación, porque durante la implementación uno debe contar no solo las dependencias de la aplicación en sí, sino también las dependencias del lenguaje de scripting incorporado. Y también todos los problemas de compatibilidad cuando el sistema de destino ya tiene el idioma instalado. – Dummy00001

2

Lua y el argot ambos fueron inventados solo para esto. Lua tiene algunas características geniales para el código de la zona de pruebas, por lo que si los usuarios pueden proporcionar el código, puede intentar limitar su capacidad para dispararse en el pie.

Los sabores de lisp se han utilizado para esto (famoso en gnu emacs).

Realmente necesita pensar en qué tipos de cosas se usará el lenguaje incrustado y luego pensar en el tipo de idiomas en los que le gustaría escribir esa funcionalidad, leer el código que otros escribieron y satisfacer fácilmente usted mismo que el código era correcto o, al menos, eliminarlo fácilmente.

2

GUILE es el lenguaje inteligente omnipresente de GNU para la extensión. Es un dialecto de esquema (dialecto LISP). Antes de gritar acerca de LISP, considere que AutoCAD usó LISP como el lenguaje de extensión, y al menos un sistema de procesamiento de textos secretarial lo usó, y las secretarias no tuvieron ningún problema en escribir extensiones para sus tareas particulares. (Parece que la gente no se da cuenta de que la programación se supone que es difícil si no les dices que están haciendo programación.)

Cuestiones relacionadas