Compilador

Un compilador es un programa especial que procesa declaraciones escritas en un lenguaje de programación particular y las convierte en lenguaje de máquina o "código" que usa el procesador de una computadora. Normalmente, un programador escribe declaraciones de lenguaje en un lenguaje como Pascal o C una línea a la vez utilizando un editor. El archivo que se crea contiene lo que se llama el declaraciones fuente. Luego, el programador ejecuta el compilador de lenguaje apropiado, especificando el nombre del archivo que contiene las declaraciones de origen.

Al ejecutar (ejecutar), el compilador primero analiza (o analiza) todas las declaraciones del lenguaje sintácticamente una tras otra y luego, en una o más etapas sucesivas o "pasadas", construye el código de salida, asegurándose de que las declaraciones que hacen referencia a otras declaraciones se mencionan correctamente en el código final. Tradicionalmente, la salida de la compilación se ha llamado código de objeto o a veces un módulo de objeto . (Tenga en cuenta que el término "objeto" aquí no está relacionado con la programación orientada a objetos). El código de objeto es un código de máquina que el procesador puede ejecutar una instrucción a la vez.

El lenguaje de programación Java, un lenguaje utilizado en la programación orientada a objetos, introdujo la posibilidad de compilar la salida (llamada bytecode) que puede ejecutarse en cualquier plataforma de sistema informático para la cual se proporciona una máquina virtual Java o un intérprete de bytecode para convertir el bytecode en instrucciones que puede ser ejecutado por el procesador de hardware real. Con esta máquina virtual, el código de bytes se puede volver a compilar opcionalmente en la plataforma de ejecución mediante un compilador justo a tiempo. (Ver también: compilador de Java)

Tradicionalmente, en algunos sistemas operativos, se requería un paso adicional después de la compilación: el de resolver la ubicación relativa de las instrucciones y los datos cuando se ejecutaba más de un módulo de objeto al mismo tiempo y se cruzaban con las secuencias de instrucciones o los datos de cada uno. . Este proceso a veces se llamaba edición de enlace y la salida conocida como módulo de carga.

Un compilador trabaja con lo que a veces se denomina 3GL y lenguajes de nivel superior. Un ensamblador trabaja en programas escritos usando el lenguaje ensamblador de un procesador.