Lenguajes de programación interpretados vs compilados: ¿Cuál es la diferencia?

Cada programa es un conjunto de instrucciones, ya sea para agregar dos números o enviar una solicitud a través de Internet. Los compiladores e intérpretes toman código legible por humanos y lo convierten en código de máquina legible por computadora.

En un lenguaje compilado, la máquina de destino traduce directamente el programa. En un idioma interpretado, el código fuente no es traducido directamente por la máquina de destino. En cambio, un programa diferente , también conocido como intérprete, lee y ejecuta el código.

Está bien ... pero ¿qué significa eso realmente ?

Imagina que tienes una receta de hummus que quieres hacer, pero está escrita en griego antiguo. Hay dos formas en que usted, quien no habla griego antiguo, puede seguir sus instrucciones.

La primera es si alguien ya te lo ha traducido al inglés. Usted (y cualquier otra persona que pueda hablar inglés) podría leer la versión en inglés de la receta y preparar hummus. Piense en esta receta traducida como la versión compilada .

La segunda forma es si tienes un amigo que sepa griego antiguo. Cuando esté listo para hacer hummus, su amigo se sienta a su lado y traduce la receta al inglés sobre la marcha, línea por línea. En este caso, su amigo es el intérprete de la versión interpretada de la receta.

Idiomas compilados

Los lenguajes compilados se convierten directamente en código de máquina que el procesador puede ejecutar. Como resultado, tienden a ser más rápidos y eficientes de ejecutar que los lenguajes interpretados. También le dan al desarrollador más control sobre los aspectos del hardware, como la administración de la memoria y el uso de la CPU.

Los lenguajes compilados necesitan un paso de "compilación": primero deben compilarse manualmente. Necesita "reconstruir" el programa cada vez que necesite hacer un cambio. En nuestro ejemplo de hummus, la traducción completa se escribe antes de que llegue a usted. Si el autor original decide que quiere usar un tipo diferente de aceite de oliva, la receta completa deberá ser traducida nuevamente y enviársela nuevamente.

Ejemplos de lenguajes compilados puros son C, C ++, Erlang, Haskell, Rust y Go.

Idiomas interpretados

Los intérpretes recorren un programa línea por línea y ejecutan cada comando. Aquí, si el autor decide que quiere usar un tipo diferente de aceite de oliva, podría tachar el anterior y agregar el nuevo. Su amigo traductor puede transmitirle ese cambio a medida que suceda.

Los lenguajes interpretados alguna vez fueron significativamente más lentos que los lenguajes compilados. Pero, con el desarrollo de la compilación justo a tiempo, esa brecha se está reduciendo.

Ejemplos de lenguajes interpretados comunes son PHP, Ruby, Python y JavaScript.

Una pequeña advertencia

La mayoría de los lenguajes de programación pueden tener implementaciones tanto compiladas como interpretadas; el lenguaje en sí no necesariamente se compila o interpreta. Sin embargo, en aras de la simplicidad, normalmente se les conoce como tales.

Python, por ejemplo, se puede ejecutar como un programa compilado o como un lenguaje interpretado en modo interactivo. Por otro lado, la mayoría de las herramientas de línea de comandos, CLI y shells teóricamente pueden clasificarse como lenguajes interpretados.

Ventajas y desventajas

Ventajas de los lenguajes compilados

Los programas que se compilan en código de máquina nativo tienden a ser más rápidos que el código interpretado. Esto se debe a que el proceso de traducción de código en tiempo de ejecución aumenta la sobrecarga y puede hacer que el programa sea más lento en general.

Desventajas de los lenguajes compilados

Las desventajas más notables son:

  • Se necesita tiempo adicional para completar todo el paso de compilación antes de realizar la prueba
  • Dependencia de la plataforma del código binario generado

Ventajas de los idiomas interpretados

Los lenguajes interpretados tienden a ser más flexibles y, a menudo, ofrecen características como escritura dinámica y programas de menor tamaño. Además, debido a que los intérpretes ejecutan el código del programa fuente ellos mismos, el código en sí es independiente de la plataforma.

Desventajas de los idiomas interpretados

La desventaja más notable es la velocidad de ejecución típica en comparación con los lenguajes compilados.