Este artículo escrito por Saumya Debray del Departmento
Ciencias Computacionales de la Universidad de Tucson Arizona, como su nombre lo
dice, habla sobre lo importante que es el curso de compiladores en las carreras
de sistemas. La verdad concuerdo con ello, ya que probablemente no me dedique a
hacer compiladores, como lo indica el artículo, la habilidad que se puede
obtener de la lógica y de la práctica es de gran importancia. De hecho, muchos de
los problemas computacionales pueden ser resueltos pensando como si fuera o con
metodología de un compilador. Se presentan dos ejemplos de los cuáles no son
compiladores pero usan la misma metodología. El primero es una herramienta que dibuja
grafos y el otro es LaTeX, que proceden de manera similar a la de un
compilador.
Un compilador tiene tres fases principales,
en este artículo se pone una cuarta y de lo que sabía se incluye la primera y
la segunda en una misma. La primera es el análisis léxico la cual básicamente
separa la cadena de caracteres que se lee y la separa en “tokens”, que son
pedazos que se componen por reglas indicadas dependiendo el compilador,
lenguaje o programa. Junto en esta fase se realiza el análisis semántico que
toma esos tokens, los analiza y da como resultado un árbol de parseo. La tercera
fase o análisis es la sintáctica y que eventualmente se busca la coherencia de
lo que se ha escrito hasta el momento. La última es la generación de código que
lo que se busca en un compilador es pasar de un lenguaje que es fácil para el
ser humano a uno entendible de mejor manera para la máquina. En cualquier otro
caso es pasar de un lenguaje a otro. Hay otra fase que se menciona en el artículo
que es la optimización, de tiempo, de recursos, de tamaño de código, y de lo
que se pueda.
Este artículo me ayudo a reafirmar que el
curso de compiladores me ayudará para resolver problemas que no se pensaba que
fueran a ser resueltos con este tipo de conocimiento. Más aún que se aprende de
un lenguaje a programar para interpretar otro. Y como se mostró con los dos
ejemplos, las técnicas y las fases de la compilación se usan en muchas otras
situaciones.