Intérpretes VS Compiladores (A3C34A1D05)

Intérpretes VS. Compiladores

Para facilitar la programación de las máquinas se emplean los lenguajes de programación de alto nivel, como por ejemplo C++ o Python. Estos lenguajes permiten al programador indicarle qué es lo que quieren que haga en un lenguaje cercano a él pero lejano de lo que entiende la máquina, que son los lenguajes máquina.

De este modo surge la necesidad de algún tipo de traductor o procesador de lenguajes que sea capaz de convertir las instrucciones dadas por el programador en instrucciones ejecutables por la máquina.

Sobre esta base es posible construir unos programas especiales, diseñados para transformar los programas escritos en lenguajes de programación de alto nivel, entendibles por los humanos, en lenguaje máquina o código binario, entendible por las máquinas. Estos programas son los compiladores y los intérpretes. Por ejemplo, la existencia de un compilador para el lenguaje de programación C++ hace posible que un programa escrito en C++ se traduzca en lenguaje máquina asociado a una determinada arquitectura hardware. Del mismo modo, la existencia de un intérprete para el lenguaje de programación Python hace posible que un programa escrito en Python se pueda ejecutar sobre la misma u otra máquina o arquitectura física.

Si bien los compiladores y los intérpretes persiguen el mismo objetivo, esto es, traducir código escrito en un lenguaje de alto nivel en lenguaje máquina, existen diferencias sustanciales entre ambos. Tres de las más relevantes son las siguientes:

 

  • Los compiladores transforman el código de un programa en código binario antes de ejecutarlo en una determinada máquina. En otra palabras, antes de ejecutar el programa es necesario compilarlo. Este proceso asegura, antes de usar el programa, que el código ha sido escrito de acuerdo a la especificación del lenguaje. Sin embargo, los intérpretes no generan código máquina ya que directamente las entienden y las convierten en instrucciones ejecutables en la máquina.

  • El código compilado se ejecuta de manera más rápida que el código interpretado. Esto implica que haya ámbitos donde sea preferible usar un lenguaje compilado en lugar de usar un lenguaje interpretado. Un ejemplo sería el mundo de los videojuegos, donde el programa, es decir, el videojuego, debe funcionar con una tasa de imágenes por segundo elevada para dar esa sensación de animación, al mismo tiempo que se encarga de interactuar con el jugador.

  • Un compilador analizará todo el código fuente de un programa para encontrar errores antes de ejecutarlo. Por el contrario, el intérprete lo hará línea a línea.

 

En este contexto de compiladores e intérpretes, se suelen utilizar los términos lenguajes de programación compilados y lenguajes de programación interpretados, dependiendo de si la generación de código máquina se realiza a través de compiladores o intérpretes. A la hora de elegir un lenguaje de programación para crear un programa, se deberán tener en cuenta diferentes variables. Algunas de las más relevantes son la experiencia del equipo de trabajo con un determinado lenguaje de programación, el rendimiento requerido por el programa (los lenguajes interpretados están asociados a unos tiempos de ejecución más altos) o la capacidad del lenguaje para que el programador cree programas de manera ágil (los lenguajes interpretados suelen tener ventaja con respecto a los compilados).