Está en la página 1de 2

LA CIENCIA DE CONSTRUIR UN COMPILADOR

El diseño de compiladores está lleno de bellos ejemplos, en donde se resuelven problemas complicados del mundo real mediante la abstracción de la esencia del problema en forma matemática. Éstos sirven como excelentes ilustraciones de cómo pueden usarse las abstracciones para resolver problemas: se toma un problema, se formula una abstracción matemática que capture las características clave y se resuelve utilizando técnicas matemáticas. La formulación del problema debe tener bases y una sólida comprensión de las características de los programas de computadora, y la solución debe validarse y refinarse en forma empírica. Un compilador debe aceptar todos los programas fuente conforme a la especificación del lenguaje; el conjunto de programas fuente es infinito y cualquier programa puede ser muy largo, posiblemente formado por millones de líneas de código. Cualquier transformación que realice el compilador mientras traduce un programa fuente debe preservar el significado del programa que se está compilando. Por ende, los escritores de compiladores tienen influencia no sólo sobre los compiladores que crean, sino en todos los programas que compilan sus compiladores. Esta capacidad hace que la escritura de compiladores sea en especial gratificante; no obstante, también hace que el desarrollo de los compiladores se a todo un reto.

Modelado en el diseño e implementación de compiladores

El estudio de los compiladores es principalmente un estudio de la forma en que diseñamos los modelos matemáticos apropiados y elegimos los algoritmos correctos, a l tiempo que logramos equilibrar la necesidad de una generalidad y poder con la simpleza y la eficiencia.

Además. que se utilizan para describir la estructura sintáctica de los lenguajes de programación. los árboles son un modelo importante para representar la estructura de los programas y su traducción a código objeto. De manera similar. La ciencia de la optimización de código El término “optimización” en el diseño de compiladores se refiere a los intentos que realiza un compilador por producir código que sea más eficiente que el código obvio. Estos modelos son útiles para describir las unidades de léxico de los programas (palabras clave. identificadores y demás) y para describir los algoritmos que utiliza el compilador para reconocer esas unidades.Algunos de los modelos más básicos son las máquinas de estados finitos y las expresiones regulares. . como el anidamiento de los paréntesis o las instrucciones de control. entre los modelos esenciales se encuentran las gramáticas libres de con texto. “optimización” es un término equivocado. ya que no hay forma e n que se pueda garantizar que el código producido por un compilador sea tan rápido o más rápido que cualquier otro código que realice la misma tarea. Por lo tanto.