# La depuración

- Sitio: Ikusmira — enciclopedia en castellano de ciencias sociales y humanidades
- URL canónica: https://ikusmira.org/p/la-depuracion/
- Categoría: Informática
- Publicado: 2024-06-05
- Autoría: Josemari Sarasola Ledesma — Editor coordinador; Profesor titular de escuela universitaria, Universidad del País Vasco/Euskal Herriko Unibertsitatea
- Perfiles del autor: https://ekoizpen-zientifikoa.ehu.eus/investigadores/127490/detalle, https://dialnet.unirioja.es/servlet/autor?codigo=333202
- Política editorial (autoría, revisión, correcciones, financiación): https://ikusmira.org/politica-editorial/

La **depuración** es el oficio de cerrar la distancia entre lo que el programa dice y lo que su autor quiso decir. La máquina nunca está confundida: ejecuta exactamente lo escrito, línea a línea, sin cansancio y sin imaginación. Cuando el resultado está mal, el error no está en la ejecución sino en la petición, y encontrarlo exige leer el propio programa con los ojos de la máquina, no con los de la intención. Es una disciplina desagradable porque la dificultad no es técnica sino de honestidad: hay que soltar lo que se quiso decir y mirar lo que está escrito.

La figura de esta página monta el error de principiante por excelencia. Una calle de *L* metros necesita una farola por metro, y el programa las coloca con un bucle: «para i desde 0 hasta *L* − 1: farola en el metro i». Ejecútalo paso a paso con «Un paso» y verás encenderse cada farola en su posición, ocho farolas para ocho metros. Todo parece bien hasta que miras el extremo derecho: del metro 7,5 al 8, la calle queda a oscuras. El bucle contó los tramos y la calle necesita los puntos: ocho tramos son nueve puntos, la farola del principio y una más por cada tramo. Es el error de la valla (quien planta una valla de cien metros con un poste por metro y pide cien postes se queda corto uno) y tiene su propio nombre en el oficio: *off-by-one*, desviado en uno. El desplegable ofrece las tres escrituras: la que falla al final, la que falla al principio, y la correcta, que termina con un «✓ calle completa». Cambia la longitud de la calle con el deslizador y el fallo se reproduce a cualquier escala.



La palabra tiene su leyenda fundacional, y la leyenda es un objeto físico. El 9 de septiembre de 1947, el equipo del Mark II de Harvard encontró la máquina fallando y la causa fue una polilla atrapada en un relé; pegaron el insecto en el cuaderno de bitácora con la anotación «primer caso real de *bug* encontrado», y ese cuaderno se conserva en el Smithsonian. Pero la palabra era ya vieja: Edison la usaba en 1878 en sus cartas para los fallos pequeños y escurridizos de sus inventos. Lo que Harvard aportó no fue el nombre sino el ejemplar disecado. Y lo que la anécdota esconde es que la polilla es el caso amable: la mayoría de los errores no se pueden pegar en un cuaderno porque están hechos de la misma materia que el programa. Maurice Wilkes, que construyó el EDSAC, lo escribió en sus memorias con la claridad del que lo vivió en 1949: de camino a la sala de la máquina comprendió de golpe que buena parte del resto de su vida se iría en encontrar errores en sus propios programas.

La manera profesional de encontrarlos no es la que estrena todo principiante (cambiar algo al azar, ejecutar, rezar) sino la que ya conoces del capítulo de las variables: trazar el programa a mano con el caso más pequeño que falle. Una calle de un metro: el bucle coloca una farola, en el metro 0, y el plano pedía dos, la del 0 y la del 1. Con *L* = 1 el error cabe entero en la cabeza, y la traza de dos líneas lo señala sin piedad. Kernighan y Plauger lo dijeron con otra vuelta de tuerca: depurar es el doble de difícil que escribir el programa, así que quien escribe al límite de su ingenio no está, por definición, cualificado para depurarlo. La moraleja práctica: los bucles se comprueban en los extremos, con el caso vacío, el de un elemento y el límite exacto, porque es donde viven los off-by-one; y el error que sobrevive años en un programa es siempre el que nadie contó.

Trazar a mano es ejecutar el programa en la cabeza, instrucción a instrucción. Pero ¿qué es exactamente una instrucción para la máquina, que no lee nuestro pseudocódigo? El siguiente capítulo abre ese último escalón: qué hay entre el texto que se escribe y el proceso que corre.

## Fuentes

- Thomas A. Edison — *Carta a Theodore Puskas, 13 de noviembre de 1878*, The Thomas A. Edison Papers, Rutgers University (1878)
- Harvard Computation Laboratory — *Cuaderno de bitácora del Mark II, 9 de septiembre de 1947*, Conservado en el National Museum of American History, Smithsonian Institution (1947)
- Brian W. Kernighan y P. J. Plauger — *The Elements of Programming Style*, McGraw-Hill, Nueva York (1974)
- Maurice V. Wilkes — *Memoirs of a Computer Pioneer*, MIT Press, Cambridge (Massachusetts) (1985)

---

Cómo citar: Sarasola, Josemari (2024). «La depuración». Ikusmira. https://ikusmira.org/p/la-depuracion/
Índice del sitio para modelos: https://ikusmira.org/llms.txt
