Professional Documents
Culture Documents
Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol
de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser
independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta
por las fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio.
Tipos de compiladores
Compiladores cruzados: generan cdigo para un sistema distinto del que estn
funcionando.
Compiladores optimizadores: realizan cambios en el cdigo para mejorar su eficiencia, pero
manteniendo la funcionalidad del programa original.
Compiladores de una sola pasada: generan el cdigo mquina a partir de una nica lectura
del cdigo fuente.
Compiladores de varias pasadas: necesitan leer el cdigo fuente varias veces antes de
poder producir el cdigo mquina.
Compiladores JIT (Just In Time): forman parte de un intrprete y compilan partes del cdigo
segn se necesitan.
El Intrprete
Definicin:
En ciencias de la computacin, intrprete o interpretador es un programa informtico capaz
de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intrpretes
se diferencian de los compiladores en que mientras estos traducen un programa desde su
descripcin en un lenguaje de programacin al cdigo de mquina del sistema, los
intrpretes slo realizan la traduccin a medida que sea necesaria, tpicamente, instruccin
por instruccin, y normalmente no guardan el resultado de dicha traduccin.
Usando un intrprete, un solo archivo fuente puede producir resultados iguales incluso en
sistemas sumamente diferentes (ej. una PC y un PlayStation 3). Usando un compilador, un
solo archivo fuente puede producir resultados iguales solo si es compilado a distintos
ejecutables especficos a cada sistema.
Los programas interpretados suelen ser ms lentos que los compilados debido a la
necesidad de traducir el programa mientras se ejecuta, pero a cambio son ms flexibles
como entornos de programacin y de puracin (lo que se traduce, por ejemplo, en una
mayor facilidad para reemplazar partes enteras del programa o aadir mdulos
completamente nuevos), y permiten ofrecer al programa interpretado un entorno no
dependiente de la mquina donde se ejecuta el intrprete, sino del propio intrprete (lo que
se conoce comnmente como mquina virtual).
Compilacin justo a tiempo
Para desdibujar ms la distincin entre los interpretadores, los interpretadores de bytecode
y la compilacin, est la compilacin justo a tiempo (o JIT), una tcnica en la cual la
representacin intermedia es compilada a cdigo de mquina nativo en tiempo de
ejecucin. Esto confiere la eficiencia de ejecutar el cdigo nativo, al costo de tiempo de
inicio y de un uso creciente de la memoria cuando el bytecode o el AST es compilado por
primera vez. La optimizacin adaptativa es una tcnica complementaria en la cual el
interpretador hace un anlisis de desempeo del programa que est corriendo (profiling) y
compila sus partes ms frecuentemente ejecutadas a cdigo nativo. Ambas tcnicas tienen
algunas dcadas, apareciendo en lenguajes tales como Smalltalk en los aos 1980.
En aos recientes, la compilacin justo a tiempo ha ganado la atencin de la mayora de
los implementadores de lenguajes de programacin, con Java, Python, y el Microsoft .NET
Framework todos ahora incluyendo JITs.