Pregunta

Estoy considerando agregar funcionalidad de secuencias de comandos a una base de código existente y estoy sopesando los pros y los contras de varios paquetes.Lua es probablemente la opción más obvia, pero me preguntaba si la gente tiene alguna otra sugerencia basada en su experiencia.

Los scripts se activarán ante ciertos eventos y pueden permanecer residentes durante un período de tiempo.Por ejemplo, al iniciar un script puede definir varias opciones que el programa presenta al usuario como una serie de botones.Al seleccionar uno de estos botones, el programa notificará al script dónde pueden ocurrir más eventos.

Estos son los únicos requisitos reales;

  1. Debe ser una biblioteca multiplataforma que sea compilable desde el código fuente.
  2. Los scripts deben poder llamar a funciones del lado del código registradas.
  3. El código debe poder llamar a funciones del lado del script
  4. Ser utilizado dentro de una base de código C/C++.
¿Fue útil?

Solución

Basado en mi propia experiencia:

  • Pitón.En mi humilde opinión, esta es una buena elección.Tenemos una base de código bastante grande con muchos usuarios y les gusta mucho.
  • Rubí.Hay algunas aplicaciones realmente buenas, como Google Sketchup, que utilizan esto.Escribí un complemento de Sketchup y pensé que era bastante bueno.
  • tcl.Este es el lenguaje de scripting integrable de la vieja escuela, pero no tiene mucho impulso en estos días.Es de alta calidad, ¡lo usan en el telescopio espacial Hubble!
  • Lúa.Solo he hecho cosas para bebés con él, pero IIRC solo tiene un tipo numérico de punto flotante, así que asegúrese de que no sea un problema para los datos con los que trabajará.

Tenemos suerte de vivir en la época dorada de los scripts, por lo que es difícil tomar una mala decisión si eliges alguno de los populares.

Otros consejos

He jugado un poco con Mono araña.Parece que al menos valdría la pena echarle un vistazo en tu situación.También he oído cosas buenas sobre Lua.El gran argumento para usar un lenguaje de programación javascript es que muchos desarrolladores ya lo conocen y probablemente se sentirían más cómodos desde el principio, mientras que Lua probablemente tendría una pequeña curva de aprendizaje.

No estoy completamente seguro, pero creo que el mono araña cumple 4 requisitos.

He usado Python extensamente para este propósito y nunca me arrepiento.

Lua tiene la API C más sencilla para vincularse a una base de código que jamás haya usado.De hecho, normalmente enrollo rápidamente las encuadernaciones a mano.Mientras que, a menudo no considerarías hacerlo sin un generador como trago para otros.Además, suele ser más rápido y más ligero que las alternativas, y corrutinas son una característica muy útil que pocos otros idiomas ofrecen.

ángelguión

le permite llamar a funciones C estándar y métodos C++ sin necesidad de funciones proxy.La aplicación simplemente registra las funciones, objetos y métodos con los que los scripts deberían poder trabajar y no es necesario hacer nada más con su código.Las mismas funciones utilizadas internamente por la aplicación también pueden ser utilizadas por el motor de secuencias de comandos, lo que elimina la necesidad de duplicar funciones.

Para el escritor de guiones, el lenguaje de secuencias de comandos sigue la sintaxis ampliamente conocida de C/C++ (con cambios menores), pero sin la necesidad de preocuparse por punteros y pérdidas de memoria.

La pregunta original describía a Tcl como una "T".

Tcl fue diseñado desde el principio para ser un lenguaje de programación integrado.Ha evolucionado hasta convertirse en un lenguaje dinámico de primera clase por derecho propio, pero todavía se utiliza en todo el mundo como lenguaje integrado.Está disponible bajo la licencia BSD, por lo que es lo más gratuito posible.También se compila en prácticamente cualquier plataforma moderna y en muchas no tan modernas.Y no sólo funciona en sistemas de escritorio, sino que también hay variaciones disponibles para plataformas móviles.

Tcl sobresale como lenguaje "pegamento", donde puede escribir funciones de alto rendimiento en C y al mismo tiempo beneficiarse de las ventajas de un lenguaje de secuencias de comandos para partes de la aplicación con menor rendimiento crítico.

Tcl también viene con un kit de herramientas GUI (Tk) de primera clase que es posiblemente uno de los kits de herramientas GUI multiplataforma más sencillos disponibles.También interactúa muy bien con SQLite y otras bases de datos, y tiene soporte integrado para Unicode desde hace bastante tiempo.

Si la interfaz de scripting estará disponible para sus clientes (en lugar de simplemente permitir que sus propios ingenieros trabajen en el nivel de scripting), Tcl es extremadamente fácil de aprender ya que hay un total de sólo 12 reglas que gobiernan todo el lenguaje (como de tcl 8.6).De hecho, Tcl brilla como una forma de inventar lenguajes de dominio específicos, que es a menudo la forma en que se utiliza como solución de secuencias de comandos para el usuario final.

Ya hubo algunas sugerencias excelentes, pero solo quería mencionar que Perl también se puede llamar/puede llamar a C/C++.

Probablemente podría utilizar cualquier lenguaje de scripting/código de bytes moderno.

Si está dispuesto a soportar los dolores de crecimiento de un nuevo producto, podría utilizar el Loro VM.Que es compatible con muchos, si no todos, los idiomas enumerados en esta página.Lamentablemente aún no está terminado, pero eso no ha impedido que algunas personas lo utilicen en un entorno de producción.

Creo que la mayoría de la gente probablemente esté mencionando el lenguaje de programación con el que están más familiarizados.Desde mi punto de vista, Tcl fue diseñado específicamente para interactuar con C, por lo que su dominio problemático está hecho a medida para el lenguaje.Sin embargo, estoy seguro de que Python, Perl o Lua estarían bien.Probablemente deberías elegir el idioma que sea más familiar para tu equipo actual, ya que eso reducirá el tiempo de aprendizaje.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top