introduccion compiladores e interpretes
Introducción a la
compilación
Breve Historia
En 1950, John Backus dirigió una investigación en I.B.M. en un
lenguaje algebraico. En 1954 se empezó a desarrollar un lenguaje
que permitía escribir fórmulas matemáticas de manera traducible
por un ordenador. Le llamaron FORTRAN (FORmulae TRANslator),
este fue el primer lenguaje considerado de alto nivel.
Surgió así por primeravez el concepto de un traductor, como
un programa que traducía un lenguaje a otro lenguaje. En el caso
particular de que el lenguaje a traducir es un lenguaje de alto nivel
y el lenguaje traducido de bajo nivel, se emplea el término
compilador.
La tarea de realizar un compilador no fue fácil, el primer
compilador de FORTRAN tardó 18 años-persona en realizarse y era
muy sencillo. Estedesarrollo del FORTRAN estaba muy influenciado
por la máquina objeto en la que iba a ser implementado.
En 1958, se dividía por primera vez el compilador en dos fases,
designadas como el "front end" y el "back end". La primera fase
(front end) es la encargada de analizar el programa fuente y la
segunda fase (back end) es la encargada de generar código para
la máquina objeto. El puente de uniónentre las dos fases era un
lenguaje intermedio que se designó con el nombre de UNCOL
(UNiversal Computer Oriented Language). Para que un compilador
fuera utilizable por varias máquinas bastaba únicamente modificar
su back end.
La técnica de la optimización apareció desde el desarrollo del
primer compilador de FORTRAN. Backus comenta cómo durante el
desarrollo del FORTRAN se tenía el miedo deque el programa
resultante de la compilación fuera más lento que si se hubiera
escrito a mano. Para evitar esto, se introdujeron algunas
optimizaciones en el cálculo de los índices dentro de un bucle.
Pronto se sistematizan y se recoge la división de optimizaciones
independientes de la máquina y dependientes de la máquina.
Entre las primeras están la propagación de valores , el arreglo deexpresiones, la eliminación de redundancias, etc. Entre las
segundas se podría encontrar la localización de registros, el uso de
En la actualidad, el proceso de la compilación ya está muy
asentado. Un compilador es una herramienta bien conocida,
dividida en diversas fases. Algunas de estas fases se pueden
generar automáticamente (analizador léxico y sintáctico) y otras
requieren una mayoratención por parte del escritor de
compiladores (las partes de traducción y generación de código).
Se están mejorando las diversas herramientas disponibles.
También la aparición de nuevas generaciones de lenguajes ha
provocado la revisión y optimización de cada una de las fases del
compilador. El último lenguaje de programación de amplia
aceptación que se ha diseñado, el lenguaje Java,establece que el
compilador no genera código para una máquina determinada sino
para una virtual, la Java Virtual Machine (JVM), que posteriormente
será ejecutado por un intérprete, normalmente incluido en un
navegador de Internet. El gran objetivo de esta exigencia es
conseguir la máxima portabilidad de los programas escritos y
compilados en Java, pues es únicamente la segunda fase del
proceso laque depende de la máquina concreta en la que se
ejecuta el intérprete.
¿ Qué es un compilador ?
Un traductor es cualquier programa que toma como entrada un
texto escrito en un lenguaje, llamado fuente y da como salida otro
texto en un lenguaje, denominado objeto.
En el caso de que el lenguaje fuente sea un lenguaje de
programación de alto nivel y el objeto sea un lenguaje de bajonivel, a dicho traductor se le denomina compilador. Un
ensamblador es un compilador cuyo lenguaje fuente es el lenguaje
ensamblador. Un intérprete no genera un programa equivalente,
sino que toma una sentencia del programa fuente en un lenguaje
de alto nivel y la traduce al código equivalente y al mismo tiempo
lo ejecuta. Históricamente, con la escasez de memoria de los
primeros ordenadores, se...
Regístrate para leer el documento completo.