seegongsik
Mis palabras
Programación

De texto a trabajo de la máquina: compiladores e intérpretes

Escribimos código en palabras humanas como 'add', 'if', 'nombre'. Pero por dentro una máquina solo entiende instrucciones diminutas de encendido y apagado. Entre las palabras humanas y las de la máquina hay una gran brecha. Lo que la une es el compilador y el intérprete.

01

Las palabras humanas y las de la máquina difieren

El 'add', 'if' que escribimos son palabras fáciles de leer para humanos.
Pero lo que una máquina de verdad conoce
son solo instrucciones diminutas hechas de encendido y apagado.
Entre nuestro texto y lo 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 nuestra línea, abajo las instrucciones diminutas de la máquina. Toca la brecha del medio.

Arriba y abajo son tan distintos.
Las palabras humanas se leen de un vistazo; las de la máquina son ilegibles.
Alguien tiene que cruzar esta brecha por nosotros.
Hay dos formas de hacer ese trabajo.

02

Dos formas de tender el puente

Para cruzar la brecha necesitas a alguien que traduzca.
Hay dos formas.
Una: traducir todo el texto por adelantado.
La otra: leerlo y ejecutarlo línea por línea sobre la marcha.
La primera es un compilador; la segunda, un intérprete.

Nuestro textoCompilarProductoEjecutar

Toca los dos caminos. 'Traducir todo primero' y 'línea por línea al momento' se ven distintos.

Cruzan la misma brecha, pero de modos muy distintos.
Uno de antemano, otro al momento.
¿Miramos primero de cerca el lado de 'traducir todo por adelantado'?
Así trabaja un compilador.

03

Compilar: traducir todo de antemano

Un compilador lee nuestro texto de principio a fin
y lo convierte todo de una vez en un producto terminado que la máquina usa directamente.
La traducción ocurre una vez, por adelantado; luego ejecutas ese resultado rápido, muchas veces.
Si algo está mal, suele avisarte antes de ejecutar.
Es como traducir un libro entero por adelantado y entregar a los lectores la versión final.

fija un valor
suma dos números
muestra el resultado

Pulsa 'compilar' para convertir todo el texto en un producto terminado; 'ejecutar' lo corre rápido de una vez.

Traducir todo de antemano hace la ejecución ligera y rápida.
A cambio, esperas a que termine la traducción inicial.
Entonces, al revés, ¿hay forma de empezar ya sin esperar?
Ese es el intérprete.

04

Interpretar: línea por línea, al momento

Un intérprete no fabrica un producto terminado aparte.
Lee nuestro texto desde arriba, una línea, y hace esa cosa enseguida,
luego lee la siguiente línea y también la hace, avanzando así al momento.
Así empiezas de inmediato sin esperar y puedes probar cosas con ligereza.
Es como un intérprete en vivo traduciendo una frase a la vez mientras hablas.

fija un valor
suma dos números
muestra el resultado

Pulsa 'ejecutar': lee una línea, la hace, luego la siguiente. Avanza por turno, al momento.

Empezar enseguida e ir línea por línea resulta cómodo.
A cambio, cada ejecución vuelve a leer línea por línea desde el inicio.
Compilar es por-adelantado-y-rápido; interpretar es al-momento-y-fácil.
¿Entonces cuál es mejor?

05

No es que uno sea mejor, sino un toma y daca

Ninguno es mejor sin más; se compensan.
Compilar arranca lento pero corre rápido, y avisa de errores por adelantado.
Interpretar empieza ya y es fácil de probar, pero relee línea por línea cada vez.
Así que en la práctica los dos suelen mezclarse según convenga.
Eliges según lo que más valores.

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 eje. Mira cómo se reparten arranque, velocidad, momento del error y resultado entre ambos.

Ya vimos cómo nuestro texto se vuelve trabajo de la máquina.
Pero mientras corre así,
¿dónde viven en realidad los valores y objetos que hicimos?
Y ¿qué significa eso de 'esto apunta a aquello'?
En la próxima y última lección, miraremos ese lugar.

En una líneaEl código escrito en palabras humanas no puede ejecutarse tal cual. Un compilador traduce todo de antemano en un producto terminado, mientras que un intérprete lo lee y ejecuta línea por línea sobre la marcha. No son mejor o peor, sino una compensación: la velocidad de arranque, la de ejecución y cuándo surgen los errores difieren.
Programación
¿Te fue útil? Apoyar seegongsik