Polls

Qué cambiará obama?
 
Inicio arrow Noticias arrow Tecnologia arrow Probando Lua
Probando Lua PDF Print E-mail
Written by Javier Loureiro   
Thursday, 10 July 2008

Acabo de estar probando un poco el sistema Lua para scripting, y por ahora me esta gustando mucho lo que veo.

El proyecto no tiene un vcproj de visual studio. Lo que hice fue simplemente meter todos los .c en una ibreria estatica (menos el lua.c y el luac.c), y todo compilo a la primera. El lua.c y el luac.c son para generar un interprete y un compilador respectivamente (si, lua se compila!). ASi que en un momento tienes el lua linkado a tu aplicacion.

Lua tiene una maquina virtual que ejecuta el codigo, mantiene estado de variables, etc. Una vez creada la maquina, puedes ejecutar scripts (tanto desde una cadena como desde un fichero), Lua va ejecutando el codigo, llamando a las funciones, etc. La forma de modificar tu aplicacion es creando funciones propias, como "crear_bicho", o "cambiar_puntuacion"

Como se extiende? pues es muy facil. Haces una funcion, y usas la llamada 'lua_register' para asociar una funcion con una cadena. Cuando lua encuentra esa cadena, llama a tu funcion.

Para leer los parametros, pues lua tiene una pila propia de datos. Puedes preguntar cuantos datos hay en la pila y pedirlos. O pedir directamente un parametro concreto (por ejemplo, el segundo, etc). Tambien podemos hacer un push para devolver valores a lua.

Puedes reescribir cualquier cosa. El print, el io.write, el math.cos... cualquier cosa. Eso esta muy guay!

La primera funcion que uno se carga es el print. Al registrar tu propio print, lua llama a tu funcion cada vez que encuentra un print(valor)

Lua es muy hack.. puedes hacer de todo, meter mano en todo, etc. Pero eso es para mi una caracteristica, no una limitacion, ya que puedes controlar el script como quieras. 

Sobre el lenguaje en si, tengo que aprender mas, pero lo que he visto esta bien. Lo que mas me interesa es que tiene diccionarios, como python, que es muy importante para un scripting sencillo. Veremos que sale de ahi.

Por ahora me parecio muy sencillo... en un par de horas estuve ya metiendo scripts y testeando de todo.

 

Unos enlaces interesantes: 

 

Comentarios
AgregarnuevoBuscar
Rubén Penalva     | 88.9.51.xxx | 2008-07-10 22:06:07
Hi,
despues de la experiencia de extender python (al principio un infierno, luego cuando ya te has pelado los...ejem... es mas facil) y visto lo que he visto de lua, creo que me quedo con lua como lenguaje de script para embeber. Siempre y cuando no haya algo de python que no este en lua y que o bien implementarlo en lua sea demasiado costoso o no se pueda hacer.

Un saludo,
Rubén Penalva
- pplux - Manejo de la pila     | 158.42.186.xxx | 2008-07-11 08:50:16
Hace algún tiempo escribí un breve, o no tan breve, resumen de cómo funciona la pila en lua que suele ser lo más raro para el que se inicia.

[url]
http://www.pplux.com/2008/04/16/lua-api-introduccion/[/url]
- pplux - ..Ups     | 158.42.186.xxx | 2008-07-11 08:59:43
... y para compilarlo todo también está el truco de compilar el /etc/all.c que se encarga de incluir los .c necesarios (algunos pueden sobrar)

y por último, enlace muy muy recomendable, http://www.lua.org/pil/ La primera edición del "Programming in Lua" completa online. Trata sobre la versión 4.0, pero la base sigue siendo la misma y hay alguna que otra técnica muy interesante detallada. El libro es más para la sintáxis del lenguaje que por el API en si.

Un saludo,
PpluX
- pplux - ... Ups (2)     | 158.42.186.xxx | 2008-07-11 09:04:34
El programming in lua online trata la versión 5.0, no la 4.0...

(estos tres posts debería ser uno mejor razonado, perdón pero son las horas de madrugada las que me hacen ir leeeento XD)

Por cierto, no me ha salido antes el enlace: http://www.pplux.com/2008/04/16/lua-api-introduccion/
derethor   | Super Administrator | 2008-07-11 12:22:16
pplux, ese tutorial esta muy bien!
Anderson_JAG   | 88.7.95.xxx | 2008-07-11 18:59:12
¿Has llegado al tema de las funciones proxy?.

Una de las ventajas que se comentaba de AngelScript respecto de Lua era que con el primero no se necesitaban utilizan las llamadas funciones proxy. Pero sólo he visto un poco de AngelScript, y nada de Lua, con lo cual no sé si ello será uina gran ventaja. : )
Anderson_JAG   | 88.7.95.xxx | 2008-07-11 18:59:29
¿Has llegado al tema de las funciones proxy?.

Una de las ventajas que se comentaba de AngelScript respecto de Lua era que con el primero no se necesitaban utilizan las llamadas funciones proxy. Pero sólo he visto un poco de AngelScript, y nada de Lua, con lo cual no sé si ello será uina gran ventaja. : )
Anderson_JAG   | 88.7.95.xxx | 2008-07-11 18:59:48
¿Has llegado al tema de las funciones proxy?.

Una de las ventajas que se comentaba de AngelScript respecto de Lua era que con el primero no se necesitaban utilizan las llamadas funciones proxy. Pero sólo he visto un poco de AngelScript, y nada de Lua, con lo cual no sé si ello será uina gran ventaja. : )
Anderson_JAG   | 88.7.95.xxx | 2008-07-11 19:00:49
¡Ups, se ha puesto 3 veces, sorry!. XD
derethor   | 80.38.100.xxx | 2008-07-12 19:28:03
pues no, no he viso nada de funciones poxy... ahora estoy más metido con als clases, ver cómo funciona y todo eso... tienes algun ejemplo de funciones proxy?
- pplux - re:     | 193.153.137.xxx | 2008-07-13 15:14:39
derethor escribió:
pues no, no he viso nada de funciones poxy... ahora estoy más metido con als clases, ver cómo funciona y todo eso... tienes algun ejemplo de funciones proxy?


Un ejemplo para hacer una tabla que no permite inserciones:
http://www.lua.org/pil/13.4.5.html
derethor   | Super Administrator | 2008-07-13 17:46:54
o sea, es el concepto este de lua en el que puedes hacer un override de cualquier cosa... no? yo ya he pinchado el print para que haga lo que a mi me gusta, y estoy pensado de hacer un override de la libreria io para que soporte el vfs
pplux     | 193.153.137.xxx | 2008-07-13 18:52:54
Mmmm... lo de overridear en realidad sólo estás reemplazando una clave dentro de una tabla, aunque sea la tabla_de_valores_globales.

El tema de las funciones proxy, o el poder definir "clases", y cosas así es más la capacidad que tiene lua de mediante el único uso de tablas poder cambiar por completo el comportamiento de los objetos. Usando metatablas puedes simular casi de todo...

Échale un ojo al capítulo de metatablas y metamétodos: http://www.lua.org/pil/13.html Lo bonito del tema es que con conceptos muy sencillos puedes acabar expresando comportamientos muy complejos.
- Juan Ramos - Wrappers   | 80.25.128.xxx | 2008-07-14 14:39:15
en
http://www.rasterbar.com/products/luabind/docs.html
http://www.tecgraf.puc-rio.br/~celes/tolua/

Hay dos wrappers de c++ a lua, todavía no les he echado un vistazo pero tienen buena pinta.
Escribir comentario
Nombre:
Email:
 
Website:
Título:
Código UBB:
[b] [i] [u] [url] [quote] [code] [img] 
 
Security Image
Por favor introduce el codigo anti-spam que puedes leer en la imagen.

Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved.



menéameDigg!Del.icio.us!Google!Technorati!Yahoo!
 
< Prev   Next >

Lista de Correo

visita la lista de correo de codepixel. Es una lista abierta, asi que podrás subscribirte y preguntar tus dudas de programación, compartir tus opiniones, aportar ideas, y formar parte de la comunidad codepixelera.