Explicamos cómo funciona el proceso de traducción de lenguajes de alto nivel a lenguajes máquina, los tipos de traductores: ensambladores y compiladores. También explicaremos qué son los intérpretes.
En un capítulo anterior de este manual explicamos que existen lenguajes de programación de alto y bajo nivel. Nosotros siempre usaremos los lenguajes de alto nivel, por ser más entendibles por las personas. Pues bien, cuando programamos en lenguajes de alto nivel, lo que estamos haciendo en realidad es crear un código que será interpretable por ese lenguaje y, para que se pueda ejecutar en la máquina, el propio lenguaje tendrá que "darle sentido".
Ese paso, en el que se traduce el código de un lenguaje de programación de alto nivel al código máquina, se conoce como traducción o compilación. En este paso el código fuente del lenguaje de programación será traducido a binario para que las instrucciones que contienen puedan ser entendidas y ejecutadas por la máquina en cuestión.
Tipos de traductores
Los traductores que pasan el código al lenguaje de la máquina pueden ser de varios tipos:
Ensambladores
Son encargados de traducir los programas escritos en lenguaje ensamblador a lenguaje máquina.
Compiladores
Son programas que leen el código fuente y lo traducen o convierten a otro lenguaje. Estos programas te muestran los errores existentes en el código fuente.
Etapas del proceso de compilación
- Edición. Esta fase consiste en escribir el programa empleando algún lenguaje y un editor. Como resultado nos dará el código fuente de nuestro programa.
- Compilación. En esta fase se traduce el código fuente obtenido en la fase anterior a código máquina. Si no se produce ningún error se obtiene el código objeto.
En caso de errores el compilador los mostraría para ayudarnos a corregirlos y se procedería a su compilación de nuevo, una vez corregidos. - Linkado. Esta fase consiste en unir el archivo generado en la fase dos con determinadas rutinas internas del lenguaje, obteniendo el programa ejecutable.
Una vez traducido, compilado y linkado el archivo esta listo para su ejecución donde también podrán surgir problemas y fallos, para los cuales tendríamos que volver a realizar todo el proceso anteriormente citado, de modo que puedan ser corregidos.
Por este motivo es importante realizar numerosas pruebas en tiempo de ejecución antes de presentar el programa al cliente.
Ejemplos de lenguajes compilados son C, C#, Java, Swift, Pascal. De hecho, la mayor parte de los lenguajes tradicionales requieren compilación.
Intérpretes
Otro sistema para la ejecución de nuestro código fuente es mediante el uso de intérpretes (estos no se encontrarían dentro de los traductores). Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un intérprete lee el código fuente y lo va ejecutando al mismo tiempo.
Las diferencias entre un compilador y un intérprete básicamente son:
- Un programa compilado puede funcionar por si solo mientras que un código traducido por un intérprete no puede funcionar sin éste.
- Un programa traducido por un intérprete puede ser ejecutado en cualquier máquina ya que, cada vez que se ejecuta el intérprete, tiene que compilarlo.
- Un archivo compilado es mucho más rápido que uno interpretado.
Ejemplos de lenguajes interpretados tenemos a PHP, Javascript, Python... Generalmente son un poco más fáciles de usar porque nos dispensan de la necesidad de compilar.
Conclusión
Hemos adquirido un poco de cultura general sobre el proceso de traducción de los lenguajes de alto nivel a los lenguajes de bajo nivel, cercanos a la máquina.
Lo que nos debe quedar claro es que, cuando programamos en un lenguaje como C, Java o cualquier otro, el código fuente que estamos generando requerirá de algunos pasos para que el ordenador lo pueda ejecutar. Dependiendo del lenguaje esos pasos los puede realizar un traductor, que se encargue de compilar el programa, o un intérprete, que no requiere compilación explícita, sino que se encargará de hacer la traducción al vuelo, cuando se requiera la ejecución del programa.
Para que podamos hacer esa traducción nuestro ordenador requerirá que tengamos soporte a ese lenguaje con el que estamos trabajando, para lo cual habremos tenido que instalar el correspondiente compilador o intérprete. Muchos ordenadores vienen con soporte a algunos lenguajes de manera predeterminada, como MacOS que soporta Python de casa, o Javascript que podrá ser ejecutado en el entorno del navegador. En algunos casos tendremos que instalar el correspondiente programa manualmente.
Cuando llegue el momento veremos lenguajes determinados y una de las primeras cosas que aprenderás es a instalar ese lenguaje para poder ejecutar los programas que estés desarrollando con él. De momento ahora estamos en un buen momento para comenzar una etapa un poco más práctica en el Manual de Iniciación a la Programación, en la que ya queremos empezar a pensar en programas y algoritmos. Estamos seguros que muchos de vosotros lo estáis deseando. Así que vamos adelante con esta nueva área, analizando las herramientas y técnicas que tenemos para el diseño de algoritmos.