Programar para humanos, ejecutar para máquinas

Copiar enlace
3 min de lectura

Los programas deben escribirse para que las personas los lean, y solo de manera incidental para que las máquinas los ejecuten.  - Harold Abelson

¿Qué perdura después de esta línea?

Una prioridad: la legibilidad

Harold Abelson coloca la legibilidad en el centro del oficio: el propósito principal del código no es “convencer” a la computadora —que acepta instrucciones literales— sino permitir que otras personas (incluido tu yo futuro) comprendan qué se intenta hacer y por qué. En ese sentido, el programa es también un texto: una explicación precisa de un proceso. Por eso, antes de pensar en la ejecución, conviene pensar en el lector: ¿puede seguir la idea sin adivinar? ¿queda claro el objetivo? Con esta inversión de prioridades, Abelson sugiere que la calidad de un programa se mide tanto por su claridad como por su corrección.

Código como medio de comunicación

Si el código es un texto, entonces programar se parece a escribir: hay audiencia, contexto y un hilo narrativo. A diferencia de una máquina, que no “se confunde”, una persona sí se pierde ante nombres ambiguos, estructuras enmarañadas o supuestos invisibles. De ahí que el estilo importe, no por estética, sino por comunicación. Esta idea se alinea con principios divulgados en la tradición del software: Robert C. Martin en *Clean Code* (2008) insiste en que el código bien escrito reduce la carga cognitiva y evita que el mantenimiento se convierta en arqueología. En consecuencia, cada decisión de diseño puede entenderse como una frase más clara o más oscura para quien la lea.

Mantenimiento: donde vive el costo real

La observación de Abelson cobra fuerza cuando se recuerda que la mayor parte del tiempo de vida de un sistema ocurre después de “funcionar por primera vez”. Los equipos cambian, los requisitos mutan y las urgencias llegan. En ese escenario, un programa opaco se transforma en deuda: cada modificación exige primero descifrar. Así, escribir para humanos es una estrategia económica además de técnica. Cuanto más claro es el programa, menos fricción hay para corregir errores, agregar funciones o refactorizar sin romperlo todo. La ejecución puede ser incidental, pero el entendimiento es acumulativo: se construye con cada lectura.

Abstracción y diseño para entender

Para que un lector entienda, el código necesita buenas abstracciones: nombres que digan la intención, funciones pequeñas con responsabilidades nítidas y módulos con límites coherentes. La máquina no exige estas cortesías; los humanos sí. De hecho, un diseño pobre no solo complica: también induce errores, porque obliga a tener demasiadas cosas en la cabeza a la vez. En continuidad con esto, Abelson —coautor de *Structure and Interpretation of Computer Programs* (1985)— defendía enseñar programación como una disciplina de ideas, no de trucos. La abstracción, bien usada, cuenta la historia del programa en capas: primero el “qué”, luego el “cómo”.

La incidentalidad de la ejecución

Decir que las máquinas ejecutan “de manera incidental” no significa ignorar rendimiento, seguridad o corrección, sino recordar que el acto de ejecutar es automático una vez que el programa está bien especificado. La parte difícil es expresar con precisión una intención cambiante en un mundo imperfecto, y esa expresión debe ser compartible. Por eso, muchas mejoras que parecen “solo de estilo” terminan siendo mejoras técnicas: eliminar duplicación, hacer explícitas las invariantes, documentar precondiciones. La máquina correrá el resultado; la pregunta decisiva es si una persona podrá justificarlo, auditarlo y evolucionarlo.

Prácticas concretas que encarnan la idea

En la práctica, programar para humanos se refleja en hábitos sencillos: nombres descriptivos, comentarios que expliquen el porqué (no lo obvio), pruebas que documenten comportamientos y revisiones de código que funcionen como edición colectiva. Incluso un pequeño ejemplo cotidiano lo ilustra: al volver a un proyecto seis meses después, un buen nombre de función puede ahorrarte media hora de reconstruir contexto. Finalmente, esta filosofía invita a humildad: el código rara vez es definitivo, pero puede ser legible. Cuando se escribe pensando en el lector, el programa se convierte en un puente entre mentes, y la ejecución por la máquina queda, como decía Abelson, en un segundo plano inevitable pero no central.

Un minuto de reflexión

¿Qué pequeña acción sugiere esto?

Citas relacionadas

5 seleccionadas

Los programas deben escribirse para que las personas los lean, y solo de manera incidental para que las máquinas los ejecuten. - Harold Abelson

Harold Abelson

Harold Abelson invierte la intuición común: aunque el software termina ejecutándose en una máquina, su vida real transcurre en la mente de quienes lo construyen, lo revisan y lo mantienen. Por eso, el “lector” principal...

Leer interpretación completa →

El verdadero problema no es si las máquinas piensan, sino si las personas lo hacen. — B. F. Skinner

B. F. Skinner

Skinner desplaza el foco desde la tecnología hacia la autocrítica: quizá la pregunta “¿pueden pensar las máquinas?” es menos urgente que “¿estamos pensando nosotros?”. Con ese giro, no niega la complejidad de lo artifici...

Leer interpretación completa →

Imagina una solución; luego avanza hacia ella programando, una línea a la vez. — Ada Lovelace

Ada Lovelace (1815–1852)

El aforismo de Lovelace propone un puente entre la imaginación y la ejecución: primero concebir la forma de la solución y, acto seguido, avanzar hacia ella con el ritmo humilde de una línea de código por vez. Así, la ide...

Leer interpretación completa →

La eficiencia es el ritmo de las máquinas; la regulación es el ritmo de los humanos. — Desconocido

Desconocido

La frase contrapone dos “ritmos” que conviven en la vida moderna: el de las máquinas, orientado a maximizar resultados, y el de los humanos, obligado a considerar límites, valores y consecuencias. Al hablar de ritmo, sug...

Leer interpretación completa →

Eres un ser humano para ser vivido, no un proyecto para ser optimizado. — Desconocido

Desconocido

La cita propone un giro sencillo pero radical: tu valor no depende de tu productividad. Al decir “ser humano para ser vivido”, rescata la experiencia —sentir, equivocarse, descansar, aprender— como algo legítimo en sí mi...

Leer interpretación completa →

Explora temas relacionados