You are on page 1of 4

COMPILADOR E INTERPRETE

Compilador

Definición:

Un compilador es un programa informático que traduce un programa escrito en un lenguaje de


programación a otro lenguaje de programación, generando un programa equivalente que la
máquina será capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de máquina, pero
también puede ser un código intermedio , o simplemente texto. Este proceso de traducción se
conoce como compilación.

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje


de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje de máquina). De esta manera
un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un
ser humano, para luego compilarlo a un programa más manejable por una computadora.

Partes del Compilador:

Análisis: Se trata de la comprobación de la corrección del programa fuente, e incluye las fases
correspondientes al Análisis Léxico (que consiste en la descomposición del programa fuente en
componentes léxicos), Análisis Sintáctico (agrupación de los componentes léxicos en frases
gramaticales ) y Análisis Semántico (comprobación de la validez semántica de las sentencias
aceptadas en la fase de Análisis Sintáctico).

Síntesis: Su objetivo es la generación de la salida expresada en el lenguaje objeto y suele estar


formado por una o varias combinaciones de fases de Generación de Código (normalmente se trata
de código intermedio o de código objeto) y de Optimización de Código (en las que se busca
obtener un código lo más eficiente posible).

Front-end: es la parte que analiza el código fuente, comprueba su validez, genera el árbol de
derivación y rellena los valores de la tabla de símbolos. 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 Análisis Léxico y la Generación de Código Intermedio.
Tipos de compiladores

Compiladores cruzados: generan código para un sistema distinto del que están funcionando.

Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero


manteniendo la funcionalidad del programa original.

Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del
código fuente.

Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder
producir el código máquina.

Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según
se necesitan.
El Interprete

Definición:
En ciencias de la computación, intérprete o interpretador es un programa informático capaz de
analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se
diferencian de los compiladores en que mientras estos traducen un programa desde su
descripción en un lenguaje de programación al código de máquina del sistema, los intérpretes sólo
realizan la traducción a medida que sea necesaria, típicamente, instrucción por instrucción, y
normalmente no guardan el resultado de dicha traducción.

Usando un intérprete, 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
específicos a cada sistema.

Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de
traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos
de programación y de puración (lo que se traduce, por ejemplo, en una mayor facilidad para
reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten
ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el
intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).

nmCompilación justo a tiempo

Para desdibujar más la distinción entre los interpretadores, los interpretadores de bytecode y la
compilación, está la compilación justo a tiempo (o JIT), una técnica en la cual la representación
intermedia es compilada a código de máquina nativo en tiempo de ejecución. Esto confiere la
eficiencia de ejecutar el código 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 optimización adaptativa es
una técnica complementaria en la cual el interpretador hace un análisis de desempeño del
programa que está corriendo (profiling) y compila sus partes más frecuentemente ejecutadas a
código nativo. Ambas técnicas tienen algunas décadas, apareciendo en lenguajes tales
como Smalltalk en los años 1980.

En años recientes, la compilación justo a tiempo ha ganado la atención de la mayoría de los


implementadores de lenguajes de programación, con Java, Python, y el Microsoft .NET
Framework todos ahora incluyendo JITs.