Generación de código

Cuando se aprende a programar, se encuentra el arte que hay detrás de ello. Cada paradigma y cada estilo llevan su arte dentro. Cualquier persona que gusta de escribir programas, añora los retos que un proceso complicado conlleva. Ante un problema cuya solución es complicada, las horas pasan rápido y la cantidad de neuronas que se ponen a funcionar dan una sensación equivalente a la adrenalina.

 

 Lastimosamente, en el mundo de la programación, también hay muchas tareas que son sencillas y amargamente tediosas. Existen procesos en los que es necesario hacer algo una y otra vez, y en las que los métodos convencionales de reutilización de código son poco eficaces con algunas tareas.

 

 Muchos años atrás me topé con ese problema: las tareas repetitivas no son agradables de realizar, y representan un porcentaje sustancial de un sistema de cómputo. Odiaba estar frente a esos casos en lo que había que hacer muchos catálogos, que en escencia eran mapear la base de datos a una pantalla para presentarlos al usuario y este fuera capaz de modificarlos.

 

 ¿Qué hacer para quitarme de encima esas aburridas tareas? Fui buscando soluciones y probando varias técnicas, y poco a poco fui llegando a la conclusión de que hay una forma eficiente y divertida de solucionar esas tareas: generando código. Haciendo programas que hicieran programas. Un concepto sencillo que se aplica todos los días al momento de utilizar un compilador.

 

 Una vez tomada la desición de que la generación de código hacía el trabajo más emocionante, comencé a darme cuenta de las muchas otras ventajas que este método tenía. El trabajo se podía estandarizar de una gran manera, los errores se reducían en un gran margen, al solucionar un error en un lado se solucionaba en todos lados, se podían implementar mejores prácticas de manera sencilla, y muchas otras que iré mencionando con el tiempo.

 

A la fecha me sorprende el poco uso que se hace de la generación de código. Fuera de los compiladores comunes, pocas tareas se autimatizan. Estamos todavía con el concepto de hacer software como artesanía. Cada programador tiene su estilo y sus preferencias, sus estándares, sus reglas, su método de documentación. Un sistema que involucra un equipo de cinco programadores tendrá cinco estilos de programación, cinco paradigmas a veces convergentes.

 

Pronto apareció el concepto de industralización del software. Creo que hemos llegado a un punto en el que no es factible seguir haciendo software a la antigua. Los recursos humanos son muy limitados, y hay que asignarlos a las tareas más difíciles. Por todos lados aparecen frameworks que hacen más sencilla, o más legible, o más inteligente la programación, pero hay un problema de fondo: estamos mejorando los mangos de las herramientas, su ángulo de filo, las estamos haciendo ergonómicas, pero la producción sigue siendo manual. Es momento de hacer máquinas que hagan esas tareas, máquinas que corten, máquinas que permitan la producción en masa de nuestro producto final: programas.

 

 La idea de realizar un programa en assembler, salvo casos muy específicos, aparece en nuestros días como una estupidez. Todos se han habituado al uso de compiladores. Pero falta dar un paso más allá y darnos cuenta de que escribir el código como se hace hoy, es también una estupidez.

 

 Es sorprendente que no existan más lenguajes de dominio específico (DSL por sus siglas en inglés). El uso de los DSL’s debe ser una herramienta importante en una organización. Hay muchas tareas que se pueden automatizar y no se hacen. En muchos casos XML se utiliza como herramienta de parseo, para crear lenguajes específicos. Si bien esto es una mejora, tiene sus limitaciones.

 

 Cada vez hace falta más software, y los encargados de dar el producto tenemos que hacernos más eficientes, tenemos que producir más en menos tiempo. La generación de código no es la herramienta única, ni la que solucionará todos los problemas, pero es de las que más me gusta. En diez años creo que será tan común encontrarla entre las herramientas de un equipo de desarrollo como un compilador, y ojalá muchos de los proyectos que aparezcan comiencen en este lado del mundo, porque tenemos la habilidad de hacerlo. Póngamonos pilas y comencemos a generar código.

Comienza la búsqueda….

Como dije hace un rato, estoy reorganizando muchas cosas. Ahora quiero mantener toda la información que se pueda en línea, alguna privada y alguna pública. Tiempo atrás hice un post sobre Jreepad y wikis y como estos me ayudaban a organizar conocimientos. Luego de muchos intentos, me quedo con el concepto de Jreepad: un arbolito sencillo con notas en cada uno de sus nodos. Es para mí un poco más estructurado que un wiki, y estoy aprendiendo que necesito tener algunas cosas estructuradas antes de hacerme bolas. Así que estoy haciendo algunas búsquedas para encontrar un equivalente a Jreepad, sólo que en linea. Sería muy bueno que tuviera tags y categorías, como WP para tener las cosas ordenadas y no al mismo tiempo. Por lo que he visto no hay muchos parecidos. Si no me va a tocar hacer uno porque si me interesa una aplicación así. ¿Alguien sabe de alguna parecida?

Cambia, todo cambia…

“Cambia, todo cambia” dice Mercedes Sosa en su canción. Y como todo cambia, ahora mi sitio también va a cambiar un poco. A causa de alguno de los problemas más tristes y serios de Guatemala, tuve que cambiar un poco mis paradigmas mentales y físicos del mundo tecnológico. Me tocó volver a Linux totalmente (experiencia muy agradable) y re pensar mis modelos de datos en línea. Estoy cambiando de hosting de LunarPages a DreamHost, y aprovecho para cambiar la estructura del sitio.

Una de mis dudas ha sido si meter mil cosas en un mismo blog o no, pero decidí hacer más de un blog con finalidades diferentes. Ahora http://guisho.com será únicamente un blog personal, más o menos un diario extendido con cosas que desee publicar. En estos días, cuando tenga tiempo, estaré sacando otro par de blogcitos con mis opiniones de economía, de tecnología y fotos.

Pero mientras tanto tengo un tanto de chance para cambiar los dominios, subdominios, DNS, bases de datos y demás así, que denle tiempo al tiempo.

Presupuesto…

Desde que somos pequeños comprendimos un sencillo principio: puedo gastar sólo lo que me ingresa. Al crecer cada quien fue aprendiendo este sencillo principio, por las buenas o por las malas. Poco a poco nos dimos cuenta que hay otra opción: puedo consumir más de lo que gano si me endeudo, pero si me endeudo tendré que pagar luego con intereses.

Cualquier persona, familia o empresa hace su planificación en base a su presupuesto esperado. Creo que voy a ganar tanto, entonces puedo comprar tales cosas, o tengo tanto entonces puedo hacer esto. Pero al parecer el Gobierno no funciona así. De hecho casi que al revés: voy a gastar tanto y para ello tengo que tener tantos ingresos.

Los nenes en el congreso decidieron que se van a gastar 41 mil millones el otro año. La SAT dice: sólo vamos a recaudar 30 mil millones. Entonces resulta que hay un “hoyo” fiscal, es decir van a gastar más de lo que se tiene.

Y entonces? Que dolor de cabeza.

Estuve ayer en el foro presidencial llevado a cabo en la UFM, donde lamentablemente no asistieron los dos primeros en las encuestas: Alvaro Colom y Otto Perez Molina, lo cual causó un mal sabor de boca para los presentes.

Pero se presentaron los candidatos Menchú, Giamattei y Suger. El foro tuvo un buen ritmo y cada candidato estuvo exponiendo sus ideas. Como personas son lo que mejor me caen del hormiguero de opciones que tenemos, pero sus partidos no me convencen.

A ojo de buen cubero, tomando en cuenta lo que tengo en la cabeza, que por cierto me duele por lo difícil que es elegir al futuro presidente de la República, les comparto mi dilema sobre las siguientes elecciones.

Encabeza el Sr. Colom, por el cual simplemente no puedo votar; lleva ya tres campañas en las que invierte mucho dinero y sin duda debe muchos favores. Tampoco podemos olvidar que las transas en las que se vio involucrado hace cuatro años y de las cuales nunca quiso dar la cara. De hecho, mi voto va en gran parte a que no quede Colom.

Read more Y entonces? Que dolor de cabeza.

La maldad del dinero

Como ahora está de moda hablar de Ayn Rand, pongo a ustedes un segmento del libro “La Rebelión de Atlas” que me parece muy ilustrativo. En mi edición, de la Editorial Libro Sagrado, el segmento comienza en la página 400. Francisco d’Anconia contesta a una de esas damas de sociedad que se las lleva de altruista cuando la señora está hablando de que el dinero es el origen de todos los males. Claro, la señora poco puede decir al finalizar Francisco todo su discurso, y pasa como con muchas personas, que se saben inteligentes pero se niegan a aceptar la verdad. Está un poco largo, pero lo van a disfrutar.


-¿Así que piensa que el dinero es el origen de todos los males? – inqurió Francisco d’Anconia-. ¿Se ha preguntado alguna vez cuál es el origen del dinero? El dinero es sólo un instrumento de intercambio que no puede existir a menos que existan bienes y personas capaces de producirlos. Es la forma material del principio según el cual quienes deseen tratar con otros deben hacerlo mediante transacciones, entregando valor por valor. No es instrumento de los pordioseros, que exigen llorando el producto del trabajo ajeno, ni de saqueadores que lo arrebatan por la fuerza; el dinero se hace sólo posible sólo gracias a quienes producen ¿Es eso lo que considera malvado?

“Cuando se acepta dinero en pago del esfuerzo propio –continuó Francisco- se hace con la condición de que luego uno lo podrá cambiar por el producto deñ esfuerzo ajeno. No son los pordioseros ni los saqueadores los que dan valor al dinero. Y ni un océano de lágrimas, ni todos los cañones de la Tierra, podrán transformar los pedazos de papel que lleva en su billetera, en el pan que necesitará mañnana para sobrevivir. Esos papeles, que en realidad deberían ser oro, son de un pacto de honor; su tenencia da derecho a la energía de la gente que produce. Su billetera es la declaración de su convicción de que, en algún lugar del mundo, hay perssonas que no quebrantarán ese principio moral que es la raíz del dinero. ¿Eso es lo que considera malvado?

“¿Alguna vez se ha preocupado por investigar las raíces de la producción? Observe un generador eléctrico y atrévase a pensar que ha sido creado creado por ña fuerza bruta de seres carentes de inteligencia; intente cultivar una semilla de los conocimientos transmitidos por quienes lo hicieron anteriormente; o trate de obtener alimento tan sólo con movimientos físicos, y se dará cuenta que la mente humana es la raíz de todos los bienes producidos y de toda la riqueza alguna vez haya existido sobre la Tierra.

“Sin embargo –continuó-, usted asegura que el dinero lo consiguen los fuertes a expensas de los débiles. ¿Pero a qué fuerza se refiere? No es la fuerza de las armas ni de los músculos, ya que la riqueza es el producto de la capacidad del hombre para pensar. Entonces, ¿el dinero lo obtiene quien inventa un motor a expensas de quienes no lo inventaron? ¿Lo obtiene el inteligente a expensas del idiota? ¿El capaz a expensas del incompetente? ¿El ambicioso a expensa holgazán? El dinero debe hacerse, antes de que pueda ser saqueado, y es hecho a través dell esfuerzo de las personas honradas, en la medida de la capacidad de cada una; y el honrado es aquel que comprende que no puede consumir más de lo que ha producido.

Read more La maldad del dinero

Que NO es el capitalismo

En la primera parte de esta serie se definió brevemente el capitalismo. Se definió para evitar confusiones a las muchas acepciones que en muchos lugares se dan a esta palabra. En pocas palabras capitalismo es el sistema en el cual las personas cooperan, o no, libre y voluntariamente. Cooperan porque ven un beneficio en ello.

El Capitalismo NO es injusto.
La idea de que el capitalismo es injusto es a título personal la que más me molesta. El capitalismo es un sistema en el que personas racionales buscan su propio beneficio, y al hacerlo indirectamente benefician a los demás. El capitalismo es el sistema natural del hombre, el sistema mediante el cual el hombre puede moldear mejor el mundo que le rodea para sacar el máximo beneficio de él. El capitalismo es el sistema que premia al emprendedor, al inteligente, al que tiene más que aportar. Es el sistema que invita al hombre a superarse, a hacerse cada vez mejor.
En algún punto a alguien se le ocurrió mezclar la idea de que esto es injusto. Alguien consideró que todos deberían tener lo mismo y basta ver los horrores que este pensamiento cobró en las sociedades que intentaron implantar estas ideas. El altruismo de creer que el hombre está hecho para servir a la sociedad ha sido el error más grande que ha existido. El hombre está hecho para beneficiarse a sí mismo, y mientas se mantenga la idea de que esto es algo malo, seguiremos sufriendo pobreza y guerras. Esto NO quiere decir que el hombre no ayude a sus semejantes, pero podrá hacerlo cuando sus necesidades básicas estén satisfechas. Una persona que no sabe que comerá mañana no está en posición de ayudar. La solidaridad es algo lindo y bueno, pero debe de ser dejada a criterio de cada uno.

Read more Que NO es el capitalismo