utilizados tutorial scripts script programacion nombre mas lenguajes lenguaje entre diferencia descargar design scripting lua

design - tutorial - ¿Cuándo es bueno utilizar un lenguaje de script incrustado como Lua?



lua programacion (8)

Cuando necesita que los usuarios finales puedan definir / cambiar el sistema sin requerir que el sistema se reescriba. Se usa en juegos para permitir extensiones o para permitir que el motor del juego principal permanezca sin cambios, al mismo tiempo que permite cambiar el contenido.

Estoy jugando a WoW durante aproximadamente 2 años y tenía mucha curiosidad acerca de Lua, que se usa para escribir complementos. Dado que lo que he leído hasta ahora sobre Lua fue "rápido", "ligero" y "esto es genial", me preguntaba cómo y cuándo usarlo.

¿Cuál es la situación típica en la que necesitará incrustar un lenguaje de script como Lua en un sistema?


Desarrollo rápido para aplicación con restricciones en tiempo real. Los juegos de computadora son uno de estos ;-)


Es una solución válida si desea permitir que terceros desarrollen complementos o modificaciones para su software.

Podría implementar una API en cualquier idioma que esté utilizando, pero un lenguaje de script como LUA tiende a ser más simple y accesible para desarrolladores ocasionales.


Los lenguajes de scripting incrustados también funcionan bien para almacenar información de configuración. La última vez que revisé, la familia Mozilla usa JavaScript para su información de configuración.

A continuación, son geniales para desarrollar complementos. Puede crear una API personalizada para exponer a los desarrolladores de complementos, y los desarrolladores de complementos obtienen una gran libertad de tener un lenguaje completo para trabajar.

Otra es cuando los archivos planos no son lo suficientemente expresivos. Si desea escribir aplicaciones controladas por datos en las que el comportamiento está parametrizado, se cansará de largas cadenas de pruebas de condicionales para combinaciones de configuraciones. Cuando esto sucede, es mejor escribir las reglas Y su evaluación en su configuración.

Este tema recibe cierta cobertura en el libro Pragramtic Programmer.


Lua es:

  • Ligero
  • Fácil de integrar, incluso en un entorno desincronizado como un juego
  • Fácil de aprender para el personal no programador, como integradores, diseñadores y artistas

Dado que los juegos generalmente requieren todas esas cualidades, Lua se usa principalmente allí. Otra cita podría ser cualquier aplicación que necesite alguna funcionalidad de scripting, pero los desarrolladores a menudo optan por una solución un poco más pesada, como .Net o python.


Además de los casos de scripting y configurability mencionados, simplemente declaro que Lua + C (o Lua + C ++) es una combinación perfecta para cualquier desarrollo de software. Le permite a uno hacer una interfaz de motor / uso donde el motor está hecho en C / C ++ y el comportamiento o personalización hecho en Lua.

OS X Cocoa tiene Objective-C (C y Smalltalk amalgama, donde el lenguaje cambia según la línea). Encuentro que Lua + C es similar, solo el lenguaje cambia por un archivo fuente, lo que para mí es una mejor abstracción.

Las razones por las que no querría usar Lua también son dignas de mención. Porque apenas tiene un buen depurador. Por otra parte, la gente apenas parece necesitar uno tampoco. :)


Además de todos los excelentes motivos mencionados por otros, Incrustar Lua en C es muy útil cuando necesita manipular texto, trabajar con archivos o simplemente necesita un lenguaje de nivel superior. Lua tiene mucha característica ingeniosa (las tablas, las funciones son valores de primera clase, muchas otras cosas buenas). Además, aunque lua no es tan rápido como C o C ++, es bastante rápido para un lenguaje interpretado.


también se puede usar un lenguaje de scripts como Lua si tiene que cambiar el código (con efecto inmediato) mientras la aplicación se está ejecutando. uno puede no ver esto en wow, porque, por lo que recuerdo, el código se carga al inicio (y no se vuelve a verificar y volver a cargar mientras se está ejecutando).

pero piense en otro ejemplo: servidor web y lenguaje de scripting - (afortunadamente) puede cambiar su código php sin tener que recompilar apache o reiniciar Apache.

steve yegge hizo eso para su propio motor mmorpg que alimenta a wyvern , usando jython o rhino y javascript (no puedo recordar). escribió el motor central en java, pero la lógica del programa en python / javascript.

el efecto de esto es:

  • no tiene que reiniciar el motor central al cambiar los scripts, porque eso desconectaría a todos los jugadores
  • él puede dejar que otros hagan la programación más simple, como definir nuevos objetos y monstruos sin exponerles todo el código crítico.
  • sandboxing: si ocurre un error dentro del script, es posible que pueda manejarlo con elegancia sin poner en peligro la aplicación circundante