seegongsik
Programación

Qué diferencia hay entre compilador e intérprete

Escribimos código con palabras humanas como "add", "if" o "nombre". Pero lo que una máquina entiende por dentro son solo instrucciones diminutas al nivel de encendido y apagado. Hay una gran brecha entre el lenguaje humano y el de la máquina, y los compiladores y los intérpretes son los que tienden el puente.

01

Las palabras humanas y las de la máquina son distintas

El "add" y el "if" que escribimos son palabras fáciles de leer para las personas.
Pero lo que una máquina conoce de verdad son solo instrucciones diminutas hechas de filas de encendidos y apagados.
Entre el texto que escribimos y el trabajo que hace la máquina hay una gran brecha, así que nuestro texto no puede ejecutarse tal cual.

Nuestro texto
suma dos números
?
1011 0010 1100 0101
Trabajo de máquina

Arriba, una línea que escribimos; abajo, las instrucciones diminutas que conoce la máquina. Pulsa "ver la brecha" para mostrar la distancia entre ambas.

Lo de arriba y lo de abajo son muy distintos.
Las palabras humanas se leen de un vistazo, mientras que las de la máquina cuesta descifrarlas.
Alguien tiene que cruzar esta brecha por nosotros, y hay dos formas de hacerlo.

02

Dos formas de tender el puente

Para cruzar la brecha hace falta alguien que traduzca.
Una forma es traducir todo el texto de antemano; la otra es leer una línea cada vez sobre la marcha y ejecutarla enseguida.
La primera es un compilador, y la segunda, un intérprete.

Nuestro texto → Compilar → Producto → Ejecutar

Pulsa compilador y luego intérprete, y verás dibujados de forma distinta "traducir todo primero" y "línea a línea, sobre la marcha".

Cruzan la misma brecha de maneras muy distintas.
Uno trabaja de antemano; el otro, sobre la marcha.
Empecemos mirando de cerca la traducción completa por adelantado, que es como trabaja un compilador.

03

Compilar: traducirlo todo de antemano

Un compilador lee nuestro texto de principio a fin y lo convierte de una vez en un producto terminado que la máquina puede usar directamente.
La traducción se hace una sola vez, de antemano, y el resultado se puede ejecutar rápido muchas veces.
Si algo está mal, incluso puede avisarte antes de ejecutarlo.
Es como traducir un libro entero por adelantado y luego entregárselo a los lectores.

fija un valor
suma dos números
muestra el resultado

Pulsa compilar y todo el texto se convierte en un producto terminado; pulsa ejecutar y ese producto corre rápido de una vez.

Como todo se tradujo de antemano, la ejecución es limpia y rápida.
A cambio, al principio hay que esperar a que termine la traducción.
Entonces, ¿hay alguna forma de empezar enseguida sin esperar? Eso es el intérprete.

04

Interpretar: línea a línea, sobre la marcha

Un intérprete no crea un producto terminado aparte.
Lee una línea de nuestro texto desde arriba, hace ese trabajo enseguida, luego lee la siguiente y la hace, avanzando sobre la marcha.
Así puedes empezar al instante sin esperar, y probar cosas es fácil.
Es como un intérprete junto a alguien que habla, traduciendo frase a frase.

fija un valor
suma dos números
muestra el resultado

Pulsa ejecutar y lee una línea, la hace enseguida y pasa a la siguiente. Avanza paso a paso, sobre la marcha.

Empezar enseguida e ir línea a línea resulta muy cómodo.
A cambio, cada vez que se ejecuta vuelve a leer las líneas desde el principio.
Compilar es por adelantado y rápido; interpretar, sobre la marcha y sencillo.
Entonces, ¿cuál es mejor?

05

No es que uno sea mejor: es un intercambio

Ninguno es siempre mejor; es un intercambio.
Compilar empieza despacio, pero ejecuta rápido y detecta los errores de antemano.
Interpretar empieza enseguida y facilita las pruebas, pero vuelve a leer las líneas cada vez.
Por eso, en la práctica, a menudo se mezclan los dos, y se elige según lo que más importe.

Compilador
Intérprete
Arranque
traduce antes (lento)
enseguida
Velocidad
rápido
medio
Momento del error
antes de correr
al llegar a esa línea
Resultado
hay producto
ninguno aparte

Toca un aspecto para ver cómo se reparten entre los dos el inicio, la velocidad de ejecución, el momento de los errores y el resultado.

Ya vimos cómo nuestro texto se convierte en el trabajo de una máquina.
Pero mientras se ejecuta, ¿dónde están exactamente los valores y los objetos que creamos?
¿Y qué significa que "esto apunte a aquello"?
En la última lección de esta sección miraremos dentro de ese lugar.

En una líneaUna máquina no puede ejecutar tal cual el código escrito con palabras humanas. Un compilador traduce todo de antemano y crea un producto terminado, mientras que un intérprete lee y ejecuta una línea cada vez sobre la marcha. No es que uno sea mejor, sino un intercambio: cambian la velocidad de inicio, la de ejecución y el momento en que aparecen los errores.
← Programación
¿Te fue útil? Apoyar seegongsik