La Ciencia de Construir Un Compilador

download La Ciencia de Construir Un Compilador

of 2

Transcript of La Ciencia de Construir Un Compilador

  • LA CIENCIA DE CONSTRUIR UN COMPILADOR

    El diseo de compiladores est lleno de bellos ejemplos, en donde se resuelven

    problemas complicados del mundo real mediante la abstraccin de la esencia del

    problema en forma matemtica.

    stos sirven como excelentes ilustraciones de cmo pueden usarse las

    abstracciones para resolver problemas: se toma un problema, se formula una

    abstraccin matemtica que capture las caractersticas clave y se resuelve

    utilizando tcnicas matemticas. La formulacin del problema debe tener bases y

    una slida comprensin de las caractersticas de los programas de computadora, y

    la solucin debe validarse y refinarse en forma emprica.

    Un compilador debe aceptar todos los programas fuente conforme a la

    especificacin del lenguaje; el conjunto de programas fuente es infinito y cualquier

    programa puede ser muy largo, posiblemente formado por millones de lneas de

    cdigo. Cualquier transformacin 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 slo 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, tambin hace que el desarrollo de los compiladores se a todo un reto.

    Modelado en el diseo e implementacin de compiladores

    El estudio de los compiladores es principalmente un estudio de la forma en que

    diseamos los modelos matemticos 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.

  • Algunos de los modelos ms bsicos son las mquinas de estados finitos y las

    expresiones regulares. Estos modelos son tiles para describir las unidades de

    lxico de los programas (palabras clave, identificadores y dems) y para describir

    los algoritmos que utiliza el compilador para reconocer esas unidades. Adems,

    entre los modelos esenciales se encuentran las gramticas libres de con texto, que

    se utilizan para describir la estructura sintctica de los lenguajes de programacin,

    como el anidamiento de los parntesis o las instrucciones de control. De manera

    similar, los rboles son un modelo importante para representar la estructura de los

    programas y su traduccin a cdigo objeto.

    La ciencia de la optimizacin de cdigo

    El trmino optimizacin en el diseo de compiladores se refiere a los intentos que

    realiza un compilador por producir cdigo que sea ms eficiente que el cdigo obvio.

    Por lo tanto, optimizacin es un trmino equivocado, ya que no hay forma e n que

    se pueda garantizar que el cdigo producido por un compilador sea tan rpido o

    ms rpido que cualquier otro cdigo que realice la misma tarea.