Faces de los compiladores

Compiladores

Hoy en día estamos tan acostumbrados a usar compiladores para generar nuestros programas, que nos resulta algo completamente natural y fácil de utiliza, esta simple como escribo mi programa, guardo y le doy ejecutar, ya ni siquiera nos preocupamos por compilar el programa para que esté listo para funcionar, y eso es lo que convierte a los nuevos lenguajes de programación en un éxito. Sin embargo, pocas veces estamos conscientes del proceso de compilación como tal, pocas personas conocen el procesamiento interno y los pasos que debe hacer un compilador antes de entregarnos un programa compilado. Pues bien, durante mi estancia por la universidad tuve la fortuna de que me enseñaran como es que funciona un compilador, las fases y lo más importante, a hacer uno.

Escribir un compilador no es simple, ya que se tiene que realizar en varias fases y cada una de ellas ataca al proceso de compilación desde un ángulo distinto pero relacionado. Pero antes de entrar en materia me gustaría presentarles el compilador que yo desarrolle, al cual bautice con el nombre de Oscar++ (Crean o no batalle mucho pensando en el nombre), el cual es un compilador bastante simple que procesa solo unas cuantas expresiones, que para aquel entonces que estaba apenas en la universidad ya era un gran logro. Les dejo una imagen para que vean un poco de lo que hablo:

Compiladores Oscar++

as

Torres de Hanói (código fuente).

Hace ya un tiempo atrás, cuando aún era estudiante de universidad. Estaba en 3° semestre y cursaba la asignatura de Estructura de Datos. Para no hacer el cuento largo, me dejaron realizar un proyecto muy interesante. Teníamos que desarrollar el algoritmo recursivo que resolviera el problema de las torres de Hanói. El proyecto era simple, desarrollar un algoritmo que fuera imprimiendo en pantalla el número de movimientos que iba realizando y el disco que movía en cada paso. Hasta aquí todo pintaba simple. Pero como siempre a mí me gustaba batallar y me arriesgue a desarrollar este proyecto de forma gráfica. Mi intención era impresionar a mi maestra y sí que lo logre, este proyecto fue suficiente para exentar un parcial :).

La intención de este post es simplemente compartir con ustedes este proyecto, que lejos de ser una joya de la ingeniería de software, represento y sigue representando para mí un gran triunfo, pues fue desarrollado casi a los inicios de mi carrera. Sin experiencia, y claro, sin conocer nada de técnicas de ingeniería, patrones y arquitectura de software. Lo que busco con este post es compartir con todos este proyecto y que les pueda servir de ayuda, ya sea para simplemente comprender como funciona el algoritmo, curiosidad o para realizar su proyecto universitario. as