Resultado de la VAN ALT.NET Hispano sobre Generación de Código

Gracias a la comunidad ALT.NET Hispano, quedó publicado el video de la VAN (des-conferencia virtual) sobre Generación de Código, al que fui invitado. Ahí presenté mi proyecto personal preferido, AjGenesis, generador de código, escrito en .NET, y publicado en código abierto. Pueden ver el resultado en:

VAN – Septiembre 26 de 2009 – Generación de Código

Ahí encontraran el video, enlaces, lecturas, y la presentación que utilicé, para descargar.

Al final de mi presentación, hubo discusión y preguntas. Uno de los puntos mencionados, fue cuales serán los próximos pasos de AjGenesis. Algo comenté ahí, pero me gustaría contestar algo más en detalle por acá:

- En principio, es un proyecto que me gusta, y que me ha resultado muy flexible. Y al que voy a seguir incorporando características.

- Hay desarrolladores que lo usan, pero son pocos, o por lo menos, no publican resultados, o escriben posts (en estos últimos 5 años, debe haber 4 post sobre AjGenesis NO escritos por mí, solamente; tampoco es mencionado mucho en las listas de correo, sobre desarrollo de software en general, que frecuento (debe haber dos o tres menciones en los últimos 3 años)). Entonces, como digo en la des-conferencia, “lo uso yo y mi tía Carlota”… :-)

- Hay que mejorar la documentación. Por ahora, estoy escribiendo posts casi todos los meses sobre el tema.

- Lo que me gustaría encarar, es poner en línea el tema de Code Generation as a Service, que menciono en la charla.

Como comento hacia el final de la presentación, cuando expongo sobre generación de código, lo hago mostrando ideas e implementaciones con AjGenesis, porque me siento más cómodo. Pero, por supuesto, hay multitud de otras herramientas, más documentadas, con más soporte, con más comunidad, que pueden usar. La idea de la presentación es que tengan contacto con lo pragmático de generar código, y que vaya quedando en claro por qué estamos hoy generando código: ante la multitud de tecnologías, frameworks y librerías, es un poco difícil zafar de escribir y escribir código. Y como las tecnologías, frameworks y librerías son buenas, en general, es difícil también, hoy por hoy, prescindir de ellas. He dejado enlaces a otras herramientas en la página de la VAN.

Otro camino a explorar sería abandonar todo eso, y buscar la simplicidad. Algo expongo en ¿Es tiempo de volver a la simplicidad?. Pero, yendo a la realidad, de todos los días, eso todavía no está, y quien sabe cuándo volveremos o conseguiremos eso. Así, que caemos de nuevo en tecnología, frameworks y librerías.

Como expongo en el post citado, otro camino, que algunos  de Uds. habrán recorrido, habrá sido armarse su propio framework y librerías. Ante la calidad y cantidad de librerías disponibles, y todas las necesidades a cubrir, es un camino algo difícil de recorrer actualmente. Y aún recorrido ese camino, muchas veces nuestro framework necesita que trabajemos incorporando código o archivos de configuración, que bien podemos generar automáticamente desde un modelo.

Si es la primera vez que visitan este blog, y quieren conocer por qué le dedico tanto tiempo a la generación de código, y encontrar una explicación más detallada de lo que planteo en la charla y en los párrafos de arriba, les recomiendo leer primero mi post Sobre la generación de código. Más enlaces, más relacionados con AjGenesis, en Ver la luz con generación de código y AjGenesis :-)

Como verán en el video, y en algunos enlaces que están en la página de la VAN, y leen los posts anteriores sobre generación de código y AjGenesis que ya he escrito, la idea no es solamente generar código, sino generar código desde un modelo: llevamos años eludiendo modelos, solamente dibujándolos (en UML, por ejemplo), pero sin utilizarlos como instrumentos para implementar efectivamente un sistema. La conversión de un modelo a código concreto, ha quedado en nuestras manos. Y ante la cantidad del trabajo, es hora de “elevar el nivel de abstracción”, y comenzar a basarnos en modelos. De alguna forma, eso es lo que hicimos cuando pasamos de programar en lenguaje de máquina, a ensamblador, y luego, a lenguajes de programación: nos olvidamos de los detalles, y le dejamos ese trabajo a la propia máquina. Estamos generando código cada día: ya no armamos el .exe a mano (como en los tiempos de la ENIAC), sino que hay herramientas (compilador ¿recuerdan?) que pasa nuestro modelo (el programa escrito en un lenguaje de modelado de instrucciones, llamado lenguaje de programación) a código ejecutable (instrucciones para nuestros procesadores).

El tema es que desde hace años, nos hemos quedado en ese nivel de abstracción. Menciono en la charla, que hubo excepciones: hubo algunos avances y adoptamos modelos para olvidarnos de los detalles, en algunos casos. Un caso que menciono: Visual Basic (el clásico, de los noventa). Cuando apareció Visual Basic, ya no hubo que programar ventanas, botones y eventos de Windows, en C, ocupando decenas de líneas para hacer un simple “Hola, mundo” (era lo que yo llamo la “Era Petzoldiana”). Ahora, con un modelo gráfico, arrastramos botones, cajas de textos, y voilá: tenemos el código de un formulario (vean que en .NET, tanto en VB.NET como en C#, todavía es más evidente que generamos código: el diseñador genera el código correspondiente a crear los controles, ponerles las propiedades, por nuestra cuenta y orden).

Bueno, basta por ahora. Pasen y vean el video, vean las discusiones, y participen de la comunidad ALT.NET Hispano.

Si les interesa el tema de la generación de código, hay una lista de correo, sobre el tema, en español. Pueden ver los mensajes y suscribirse, en:

http://groups.google.com/group/codegeneration

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 10790, 2643, 3463, 6145, 8115. Bookmark the permalink.

3 Responses to Resultado de la VAN ALT.NET Hispano sobre Generación de Código

  1. Angel! yo tambien estoy usando AjGenesis hace más de 2 años aproximadamente, pero como vos decís habitualmente, “lo que no está escrito, no existe”.
    La verdad que la herramienta es espectacular y todo los desarrollos que encaro nacen a partir de los templates que fui armando, es un vicio!
    Ya voy a postear algo al respecto
    Saludos

  2. BeyondNet says:

    Gracias por compartir tus conocimientos Angel. Queda pendiente mi revisión de AJGenesis.

  3. Hernan Gonzalez says:

    Hola Angel, me gustaria empezar a usar un generador de código en mis proyectos.
    Estuve leyendo dos generadores que trabajan de distinta forma:
    AndroMDA que genera código a partir de un módelo diseñado en UML y MyGeneration que genera código a partir de plantillas. Esta última opción me parece mucho mas flexible que la primera, vos cual me recomendarias?

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>