miércoles, 16 de noviembre de 2016

¿Qué es compilar?

Digamos que, compilar es el proceso de traducir código fuente (la descripción legible por humanos de un programa escrito por un programador) al lenguaje nativo del procesador del ordenador.

El procesador del ordenador (o CPU) trabaja a un nivel muy elemental, ejecutando programas en lo que se llama lenguaje máquina. Este es un código numérico que describe operaciones muy pequeñas, como "añade este byte", "apunta a esta localización en la memoria" o "copia este byte."

Cada una de esas instrucciones se expresan en binario (unos y ceros). Los primeros programas de ordenador se escribieron usando este código numérico, que explicaría por qué los que los escribieron se dice que fumaban mucho, bebían litros de café y usaban gafas con cristales gordos.

El problema se solucionó con la llegada del lenguaje ensamblador, que reemplazaba los códigos numéricos con caracteres mnemotécnicos (ligeramente) más fáciles de usar como CPY (para copiar) y MOV (para mover). Los programas escritos en lenguaje ensamblador se procesan a lenguaje máquina por un programa llamado ensamblador. El lenguaje ensamblador aún se usa en la actualidad para ciertas tareas especializadas de programación, como controladores de dispositivos y sistemas embebidos.

A continuación llegamos a lo que se llama lenguajes de programación de alto nivel. Se llaman así porque permiten que el programador esté menos preocupado con los detalles de lo que está haciendo el procesador y más con resolver los problemas que tiene entre manos. Los primeros (desarrollados durante los años cincuenta) incluyen FORTRAN (diseñado para tareas científicas y técnicas) y COBOL (diseñado para aplicaciones comerciales). Ambos tienen un uso limitado en la actualidad.

Aunque hay muchos lenguajes de programación populares, dos predominan. La mayoría de programas escritos para sistemas modernos están escritos en C o C++. En los ejemplos que siguen, compilaremos un programa en C.

Los programas escritos en lenguajes de programación de alto nivel son convertidos a lenguaje máquina procesándolos en otro programa, llamado compilador. Algunos compiladores traducen las instrucciones de alto nivel en lenguaje ensamblador y luego usan un ensamblador para realizar el último paso de traducirlo a lenguaje máquina.

Un proceso usado a menudo junto con el compilado es el llamado enlazado. Hay muchas tareas comunes realizadas por programas. Tomemos, por ejemplo, abrir un archivo. Muchos programas realizan esta tarea, pero sería un despilfarro que cada programa implemente su propia rutina para abrir archivos. Tiene más sentido tener una única pieza de programación que sepa cómo abrir archivos y permitir a todos los programas que lo necesiten compartirla. Dar soporte a tareas comunes se logra mediante lo que se llaman bibliotecas. Contienen múltiples rutinas, cada una realiza alguna tarea común que puede ser compartida por múltiples programas. Si miramos en los directorios /lib y /usr/lib, podemos ver dónde están muchas de ellas. Un programa llamado enlazador se usa para realizar las conexiones entre la salida del compilador y las bibliotecas que el programa compilado requiere. El resultado final de este proceso es el archivo ejecutable del programa, listo para ser usado.

No hay comentarios:

Publicar un comentario