2.2 Tipos de compiladores.
Menu

En el tema 2.1 se abordó la estructura de un compilador así como la función que tiene en la generación de código destino. Ahora bien, no todos los compiladores tienen la misma función o finalidad; a continuación se especifican los tipos de compiladores y el proceso que realizan con el código fuente.
Compiladores cruzados: generan código para un lenguaje diferente a aquel en el que fueron creados y también puede que sea diferente al lenguaje en el que fueron creados. Por ejemplo, un compilador hecho en C++ que compile código de Java o viceversa.
Compiladores optimizadores: eliminan funciones y código no utilizado en el programa con el fin de reducir el tamaño, además permiten descubrir posibles errores, pero no cambian la funcionalidad del programa.
Compiladores de una sola pasada: generan el código objeto después de analizar una vez el código fuente. Son poco efectivos pues tardan mucho en detectar errores.
Compiladores de varias pasadas: contrario al compilador anterior, estos verifican más de una vez todas las posibles opciones de error y luego generan el código objeto, con esto reducen código inútil. Son más confiables y eficientes.
Compiladores Just In Time (JIT): no son un compilador como tal, forman parte de un intérprete y compilan y analizan sólo las partes del código que se vayan necesitando.
Compiladores incrementales: generan código objeto de cada instrucción que forma parte del programa, a medida que el usuario va tecleando la instrucción, cuando se compila el programa completo, el compilador tiene casi todo compilado y en caso de errores, sólo compila la parte donde se encontró el error, por lo que es mucho más rápido.
Compilador con enlazador: divide un programa en partes más pequeñas o módulos y una vez que todas las partes han sido compiladas, las une y genera un solo código objeto.
Ensamblador: es el programa que compila instrucciones escritas en lenguaje ensamblador y su estructura es sencilla al utilizar únicamente código simbólico.
Descompilador: compilador inverso, compila un programa objeto y lo convierte en programa fuente.
Auto compilador: compila únicamente código del lenguaje en el que fue creado; por lo general son utilizados para añadir mejoras al lenguaje de programación.
Meta compilador: también llamado “compilador de compiladores”, tiene como entrada un lenguaje de programación y como salida un compilador para el mismo.