Compilador
Definición
Es un Software que traduce un programa escrito en un lenguaje de programación de alto nivel en lenguaje de máquina; generalmente genera
lenguaje ensamblador primero y luego traduce el lenguaje ensamblador al lenguaje máquina.
Origen
El término «compilador» fue acuñado a principios de 1950 por Grace Murray Hopper. La traducción fue vista entonces como la «compilación»
de una secuencia de rutinas seleccionadas.
Grace Brewster Murray Hopper fue una pionera en programación que inventó una de las primeras herramientas relacionadas con el compilador.
El primer compilador del lenguaje de alto nivel FORTRAN se desarrolló entre 1954 y 1957.
Tipos
- Compiladores cruzados: Genera un código ejecutable en un ordenador distinto de aquel en que se realiza la compilación.
- Compilador de montaje y ejecución: Se fragmenta el programa fuente en módulos que se compilan por separado y se unen mediante
un enlazador.
- Compiladores optimizadores: Lee el código fuente, lo analiza, optimiza y descubre errores potenciales.
- Compiladores de pasadas múltiples: Requiere varias lecturas del programa fuente para producir y optimizar
el código objeto.
- Compiladores incremental: Compila el programa fuente, en caso de detectar errores al volver a compilar el programa corregido
- Autocompilador: Es el compilador que está escrito en el mismo lenguaje a compilar.
- Metacompilador: Obtiene como entrada la definición de un lenguaje y como salida el compilador para dicho lenguaje.
Interprete
Definición
Un intérprete es un programa que analiza y ejecuta simultáneamente un programa escrito en un
lenguaje fuente. Dependiendo de la complejidad del código a analizar, el intérprete puede contener módulos
similares a los de un compilador tradicional.
Origen
Los intérpretes se utilizaron ya en 1952 para facilitar la programación dentro de las limitaciones de las computadoras en ese momento, además
de la traducción entre lenguajes de máquina de bajo nivel.
El primer lenguaje de alto nivel interpretado fue Lisp. Se percató de que la función de evaluación Lisp podía implementarse en código máquina.
Tipos
- Intérpretes avanzados: incorporan un paso previo de análisis de todo el
programa fuente. Generando posteriormente un lenguaje intermedio que es ejecutado por ellos mismos.
De esta forma en caso de errores sintácticos no pasan de la fase de análisis.
- Intérpretes incrementales: Existen ciertos lenguajes que, por sus características, no se pueden compilar directamente. La
razón es que pueden manejar objetos o funciones que no son conocidos en tiempo de compilación. Con el propósito de obtener una mayor eficiencia que en la interpretación simple,
se diseñan intérpretes incrementales para compilar aquellas partes estáticas del programa en
lenguaje fuente, marcando como dinámicas las que no puedan compilarse
- Intérpretes avanzados: incorporan un paso previo de análisis de todo el
programa fuente. Generando posteriormente un lenguaje intermedio que es
ejecutado por ellos mismos.