jueves, 12 de junio de 2008

How to Design Programs: una joya

Los libros buenos son escasos. Los libros excelentes, rarísimos.

Hace un par de semanas, después de unos seis meses de satisfacción y arduo trabajo, terminé de leer el libro How to Design Programs [HtDP], un texto de introducción a la programación dirigido a estudiantes de toda clase, ciencias humanas incluidas.

Existen muchos libros de este tipo, pero ninguno de los que conozco cumple tan perfectamente como éste su objetivo, si exceptuamos el celebre SICP. Ahora bien, el SICP ---del que he leído con atención sólo una parte---, está, en primer lugar, casi exclusivamente orientado a estudiantes de lo que en nuestro ámbito llamaríamos "ciencias puras", y, en segundo lugar, no se esfuerza en hacer explícito el proceso de diseño de un programa, porque su objetivo es, más bien, la enseñanza de conceptos fundamentales de teoría de la computación.

El SICP sigue siendo una obra maestra imprescindible. HtDP, por su parte, aparentemente más modesto en sus intenciones, se convierte en una joya para los que, a la hora de programar, se sentían necesitados continuamente de la intuición feliz o, a falta de ella, recurrían a la nefasta práctica de picar código a lo tonto hasta dar con la solución por casualidad. No es que la intuición se convierta del todo en algo innecesario, lo que sucede es que HtDP explora ese reino de la heurística y consigue sistematizarlo de tal forma que la intuición final se obtiene casi sin esfuerzo, cae como el fruto maduro de un árbol bien cuidado. Va de suyo que un salto intuitivo considerable sigue siendo imprescindible allí donde la complejidad o novedad del problema no permiten una sistematización sencilla del proceso de descubrimiento. Pero en todos los demás casos, que son la mayoría, la aplicación de una disciplina rigurosa permite resolver en cuestión de minutos cosas que, de otra forma, requerirían horas. Además, la práctica en esa clase de disciplina tiene otros muchos beneficios, como la claridad y elegancia del código resultante, o la eficacia en la planificación de las baterías de prueba (test cases). En definitiva HtDP es un modelo de cómo enseñar programación, y, casi me atrevería a decir, un modelo de cómo enseñar en general.

Podría hablarse en detalle del tema, analizar la forma en que la "receta de diseño" ---el concepto clave del libro--- se va enriqueciendo a medida que se avanza. Pero basta con lo dicho para hacerse una idea. Sí es importante advertir que una lectura somera de sus casi 700 páginas no produce ningún resultado, que hay que realizar la mayoría de sus bien diseñados ejercicios, lo que en mi caso ha producido varias decenas de miles de líneas de código (si se incluyen los comentarios y las repeticiones), y que, por favor, hay que ir más allá de la primera parte para empezar a entender de qué va el asunto.

No puedo terminar sin agradecer a los autores, a Matthias y Shriram, sus respuestas a las correcciones que, con tanto gusto, les he ido enviando. Es un placer y un honor poder dialogar con gente de esta altura intelectual y, sin embargo, tan próximos y tan cordiales. Mucho tendrían que aprender los de aquí, infinitamente más mediocres, especialmente los de las humanidades y las artes, que permanecen engoladamente en su soberana inaccesibilidad, impartiendo su nadería sobre las masas anónimas de sus lectores a través de sus sacras y más que prescindibles publicaciones.

No hay comentarios:

Publicar un comentario