¿Qué es compilar un programa?

Por El sabio informático el Sáb 20 Mayo 2017


Te explicamos qué es compilar un programa y el proceso que hay detrás de la compilación del código.

Twitter
Google +
Facebook

¿Qué es compilar un programa?

La palabra compilar significa traducir un lenguaje de programación a código interpretable por una máquina.

Todos sabemos que detrás de las acciones que todos los días hacemos en nuestro pc hay siempre una aplicación informática que alguien, un programador informático, ha escrito en un lenguaje de programación de los muchos que hay.

Lo que no todo el mundo sabe es que ese programa escrito en un lenguaje, por ejemplo C#, no es entendible directamente por el ordenador, por lo que es necesario traducirlo a lenguaje máquina para que el ordenador lo entienda y podamos obtener el resultado esperado.

Si quisiéramos crear un programa informático el proceso sería básicamente el siguiente:

  1. Primero debemos tener claro qué es lo que queremos que el programa haga. Para ello es muy útil crear esquemas y organigramas detallados del funcionamiento lógico que esperamos.
  2. Lo siguiente sería escribir el código en el lenguaje de programación que hayamos escogido, hay muchos siendo los más usados actualmente C, Java, Python o PHP.
  3. Una vez escrito debemos compilar el programa.

El proceso de compilar

Un programa llamado compilador revisa todo el código, sentencia a sentencia, y se para en cada error de sintaxis o incoherencia que encuentra hasta que lo solucionamos, esta parte la realiza el componente Front-end del compilador.

Código

El Front-end además crea una tabla de símbolos (bibliotecas) que son partes de código máquina o código objeto que más tarde enlazarán el código final para su correcto funcionamiento.

Una vez que el código fuente no tiene ningún error, el componente Back-end del compilador se pone en funcionamiento traduciendo ese código (código fuente) a código máquina.

La tarea realizada por el Front-end es independiente del equipo en el que se realice, pues se trata de comprobar que el código fuente es válido.

Sin embargo, la tarea que realiza el componente Back-end del compilador, es traducir a lenguaje máquina teniendo en cuenta las especificaciones de la arquitectura del equipo en el que se va a ejecutar.

¿Qué es el código máquina?

El lenguaje máquina es el único lenguaje que puede entender un ordenador o autómata, se compone de 0’s y 1’s, pues en realidad los circuitos electrónicos de los procesadores se hacen poniendo interruptores eléctricos en un chip, donde el 0 y el 1 representan el off y el on de un interruptor, esto es codificación binaria.

Cada computadora entiende un lenguaje máquina diferente, excepto cuando hay compatibilidad entre familias.

Llegados a este punto, el programa estará compilado y nosotros tenemos como resultado una tabla de símbolos y un programa en lenguaje máquina.

Para que el ordenador o autómata pueda interpretar las órdenes de ese resultado, debemos unir las bibliotecas (resultado del Front-end) y el lenguaje máquina (resultado del Back-end), este proceso se le llama montado o enlazado y lo realiza un programa llamado Linker dando como resultado final un archivo ejecutable.

Así pues, un compilador es una herramienta básica de un programador informático, así como lo son los editores de los diferentes lenguajes de programación.

Los primeros compiladores fueron escritos directamente en lenguaje máquina, a partir de ellos se fueron creando compiladores en lenguajes fuentes para esos mismos lenguajes.

Entre los más conocidos tenemos compiladores de Java cuya particularidad es que el compilador no genera código para ejecutarse en una máquina concreta sino para una máquina virtual, lo cual garantiza la portabilidad de los programas escritos o compilados en java.

Otros compiladores conocidos son los compiladores C#, el cual también incorpora la facilidad de portar los programas, o el CCG muy usado en entorno Linux y que soporta lenguajes de programación como C, C++, Java, Ada, Objective C, Objective C++ y Fortran.