Definición de Compilación
Periodista esp. e investigador
¿Cómo podemos entendernos con alguien con quien no tenemos ningún idioma en común? Por medio de un traductor. Esta función de traducción es la que realiza un compilador para convertir en código ejecutable el código fuente escrito por un programador.
La compilación es aquel proceso mediante el cual, un programa escrito en un lenguaje de alto nivel es traducido al código máquina utilizado por una determinada arquitectura de computadora, para su ejecución directa.
Por lo tanto, y según la explicación que acabamos de plantear, este sistema requiere de la elección de una arquitectura de destino, que podrá ser diferente en cada caso y que nos obligará a compilar por separado para cada una de las diferentes arquitecturas en las que queramos que se ejecute nuestro programa.
Así, por ejemplo, podremos avanzar sobre un determinado programa para la arquitectura x86 de 32 bits, la x86 de 64 bits, la PowerPC o la ARM también diferenciando 32 y 64 bits, dependiendo del tipo de dispositivo en el que queramos ejecutarla.
Además, también deberemos tener en cuenta los distintos sistemas operativos, aunque estemos trabajando para una misma plataforma de hardware, ya que cada uno tiene una forma distinta de interactuar con la máquina física
Pongamos como ejemplo la plataforma x86 de 64 bits. Podemos querer compilar para Windows, GNU/Linux o macOS, o bien para todos y cada uno de ellos, lo que implica tres procesos de compilación separados.
A veces, ello nos obliga a retocar ligeramente el código fuente, manteniendo muchas veces tres versiones separadas (o más, según el caso) con el objetivo de que estas interactúen correctamente con las peculiaridades y diferencias de la plataforma de destino.
El proceso de compilación sigue una serie de pasos, como son la detección de errores sintácticos en el código fuente, luego un pre-procesado para conocer los recursos que necesita el programa, y finalmente el enlazado con las librerías y recursos necesarios para su ejecución.
De esta forma, se crea un archivo ejecutable que contiene todos los recursos necesarios para su ejecución, y las instrucciones necesarias para el acceso a recursos externos, como librerías de código compartido (shared).
El proceso de compilación se realiza con una herramienta o herramientas específicas (compilador), aunque es habitual que este se encuentre integrado en los entornos de desarrollo (IDE), facilitando así su uso.
Cada lenguaje de programación tiene su propio compilador, aunque desde hace tiempo, el compilador correspondiente a un lenguaje y entorno, es capaz de generar ejecutables para varias plataformas software distintas.
¿Existe una opción alternativa al proceso de compilación? Sí, y son los lenguajes interpretados.
Los lenguajes interpretados son aquellos que son traducidos en tiempo de ejecución, y no compilados.
Por lo tanto, su código fuente se encuentra siempre disponible, y lo que necesitan es que en el sistema operativo sobre el que se ejecutan, exista un intérprete.
Al evitar el proceso de compilación, si el intérprete se encuentra disponible para varias plataformas, será posible ejecutar el programa directamente en todas y cada una de ellas, habitualmente sin cambios.
Otro enfoque alternativo, a medio camino entre los lenguajes compilados y los interpretados, son aquellos que requieren de una máquina virtual para ejecutarse, por ejemplo, Java.
Los lenguajes de programación que se ejecutan sobre una capa de virtualización (máquina virtual) requieren de un proceso intermedio similar a la compilación, pero que da como resultado un código no ejecutable directamente, aunque más optimizado que el ejecutado por un lenguaje interpretado.
En estos casos, sí que hace falta un proceso similar en forma al de la compilación, pero que da un resultado distinto y que sigue necesitando, en cualquier caso, de la instalación de un runtime en el sistema operativo en el cual queremos ejecutar nuestro programa.
Fotos: Fotolia – Alexander Pokusay / Onot
Trabajo publicado en: Sep., 2017.
Escriba un comentario
Contribuya con su comentario para sumar valor, corregir o debatir el tema.Privacidad: a) sus datos no se compartirán con nadie; b) su email no será publicado; c) para evitar malos usos, todos los mensajes son moderados.