Qué es un intérprete y qué es un compilador

En ambos casos, se trata de una manera de traducir las instrucciones de un humano expresadas en un lenguaje de programación (ya sea, Python, Java, C++ o lo que sea) a algo que la máquina puede entender.

Un mismo lenguaje puede tener tanto un compilador como un intérprete. Ambas cosas no son excluyentes, aunque por lo general un lenguaje usa un intérprete o un compilador. Como ejemplo de lenguajes interpretados, podríamos citar a Python, JavaScript, Ruby o Perl. Por otro lado, como ejemplos de lenguajes compilados, tenemos a Java, C++, C, Rust o ML.

Diferencia entre intérprete y compilador

Ambos llevan a cabo una traducción desde el lenguaje de programación al lenguaje máquina (ceros y unos). Las diferencias estarán en cuándo y cómo se hace dicha traducción.

Vamos a pensar en un ejemplo concreto para entenderlo mejor. Supongamos que necesitamos crear un programa para que procese una lista de datos de bolsa, en los cuales tenemos los últimos meses de cotización de un mercado de valores, digamos el NASDAQ. El programa debe analizar dichos datos y producir una lista de acciones que se hallan por debajo de su precio habitual de cotización y que empiezan a subir de valor, para así poder recomendar su inversión.

El intérprete actúa “sobre la marcha”

Un intérprete funciona “sobre la marcha”: recibe el programa (el código que has escrito, por ejemplo, en Python), así como el fichero de datos. Procesa ambos y devuelve la lista de recomendaciones.

intérprete_qué es un intérprete y qué es un compilador

Al procesar el código, va haciendo la traducción línea a línea y, al terminar la traducción, inmediatamente la ejecuta. Es decir, la ejecución se hace a la vez que la traducción.

Al ser así, la traducción tiene que ser rápida y, por tanto, no puede ser gran cosa: es un trabajo rápido para salir al paso.

El compilador actúa a priori

El compilador, en el fondo, hace lo mismo (traducir), pero tiene una aproximación al problema totalmente distinta.

El compilador recibe solo tu código y hace un análisis profundo del mismo, buscando errores e ineficiencias e intentando eliminarlas. Es un proceso mucho más largo y mucho más complejo. De hecho, los compiladores suelen ser los programas más complejos que existen.

El resultado de todo esto es un fichero que es directamente ejecutable por parte de la máquina. Cuando has abierto el browser para navegar en esta página, lo que has hecho ha sido cargar uno de esos ficheros en memoria, posiblemente chrome.exe.

Ese mismo fichero ejecutable puede ahora recibir los datos y procesarlos.

Qué es un intérprete y qué es un compilador

El código generado por el compilador normalmente es decenas (cuando no cientos) de veces más rápido que el de un intérprete.

¿Cuándo se debe de usar un intérprete y cuándo se debe de usar un compilador?

Como ya te puedes imaginar por la descripción de ambos, los intérpretes se usan normalmente cuando se trata de un apaño rápido, donde interesa más tener una solución en poco tiempo. Por otro lado, los compiladores se usan cuando el programa resultante se va a reutilizar muchas veces o cuando el rendimiento del mismo es muy importante. Un caso de esto último es cuando se van a procesar enormes cantidades de datos (Big Data) y el rendimiento excepcional de un compilador es indispensable.

En ese caso, ¿por qué se usa tanto Python para Big Data?

¡Buena pregunta! Python es un lenguaje interpretado y, además, uno particularmente lento, incluso comparado con otros lenguajes interpretados. Aun así, es el rey de Big Data, al acabar de decir que cuando los datos que se tienen que procesar son enormes, es cuando más hacen falta los “superpoderes” de un compilador. Sin embargo, justo ahí es donde se usa mayoritariamente un intérprete, y uno francamente lento.

El truco está en que el trabajo pesado de verdad lo hacen herramientas que están integradas dentro de Python, pero no están hechas en Python. Son herramientas optimizadas para la gestión de grandes volúmenes de datos numéricos, hechas y compiladas con lenguajes especializados para estas tareas, como C++ o FORTRAN.

Qué es un intérprete y qué es un compilador
Y Python sigue siendo el rey

De esta forma, consigues aunar la flexibilidad y facilidad de uso de Python con la fuerza bruta de C++ y FORTRAN. Y por eso, Python sigue siendo el rey.