El artículo titulado “Making Compiler Design Relevant for
Students who will (Most Likely) Never Design a Compiler”, escrito por Saumya
Debray expone las fortalezas que se obtienen al entender cómo es que funciona
un compilador, así como también las fases, herramientas y ejemplos que se no
sólo se basan en el diseño de un compilador como tal, sino que también se
pueden utilizar las mismas herramientas para resolver problemas cotidianos de
programación.
La idea que se tiene acerca de un compilador por algunos programadores,
es que es un programa que solamente traduce código de alto nivel a código de
bajo nivel (generalmente código maquinal) que puede ser entendido y ejecutado
por la maquina, pero al leer el texto nos podemos dar cuenta que no siempre es
código maquinal, binario, etc., sino que la salida puede ser de otro tipo, por
ejemplo de LATEX a HTML, esto siguiendo las gramáticas libres de contexto que
van siguiendo las reglas del lenguaje. Las fases por las cuales pasa un
compilador son cuatro, el análisis léxico en donde se divide la entrada en
grupos de “tokens” y el parseo verificando por expresiones regulares si estas
pertenecen al lenguaje o no, el análisis semántico que revisa que la fase
anterior tenga un significado válido para el lenguaje, como alcance de las
variables, sus declaraciones antes de ser usadas, la generación de código que
son las instrucciones que pueden ser interpretadas por la máquina y la optimización
en donde se busca reducir la cantidad de recursos (tiempo y memoria)1
Me parece muy acertado el hecho de que se haya reincorporado
esta materia a la carrera, ya que ha habido planes de estudios en los que ha
desaparecido y es una materia que no sólo incrementa tus habilidades como programador, sino que te lleva a lo más profundo de un código y
entender mejor cómo es que funciona un programa en todas sus fases.
1 Blogspot.mx.
(29 de agosto, 2013). OPTIMIZACIÓN DE CÓDIGO. 16 de Noviembre de 2010.
Disponible en: http://commpi.blogspot.mx/2010/11/optimizacion-de-codigo.html.