Donald Knuth y el arte de la programación

Por: J. Antonio García Macías (This email address is being protected from spambots. You need JavaScript enabled to view it. )

MUNDO DIGITAL
 
“Por sus importantes contribuciones al análisis de algoritmos y el diseño de lenguajes de programación, y en particular por sus contribuciones al "arte de la programación de computadoras" a través de su serie de libros con ese título.” Esa fue la cita usada para describir las contribuciones de Donald Knuth cuando recibió el premio Turing, el más prestigiado en el ámbito de las Ciencias de la Computación. Pero dicha cita en realidad se queda corta en tratar de describir a Knuth y su obra.
 
Dudaba de su capacidad
by Jacob AppelbaumCuando estaba terminando la preparatoria, Donald E. Knuth tenía fuertes dudas sobre su capacidad de cursar una carrera universitaria. Cuatro años más tarde se encontraba graduándose con honores summa cum laude del Case Institute of Technology. Pero eso no fue todo: su trabajo había sido tan destacado que, en una decisión sin precedentes, la institución decidió otorgarle simultáneamente el grado de Maestro en Ciencias. Tres años después ya estaba recibiendo su doctorado en Matemáticas de la prestigiosa institución California Institute of Technology, conocida también como Caltech. Y ese fue solo el inicio, pues a lo largo de su carrera ha sido acreedor a más de 100 premios y honores, entre los que se encuentran socio de la American Academy of Arts and Sciences (1973); receptor del premio Alan M. Turing (1974); Miembro de la National Academy of Science (1975); Cátedra Gibbs de la American Mathematical Society (1978); Medalla Nacional de Ciencia (1979, otorgada por el Presidente Carter); Miembro de la National Academy of Engineering (1981); Premio de Pionero de la IEEE Computer Society (1982); Medalla John von Neumann de la IEEE (1995). Aparte de sus logros académicos, también es un consumado organista, compositor y novelista.
 
Según ha dicho Knuth, todos estos logros se debieron en parte a su complejo de inferioridad, el cual lo forzó a trabajar más que sus compañeros. Según recuerda: “en la universidad pasaba horas y horas estudiando el libro de Cálculo y Geometría Analítica que usábamos; nos dejaban resolver sólo los problemas con número impar que aparecían en los capítulos, pero yo resolvía tanto los pares como los impares, aparte de que también resolvía los problemas extras que venían al final del libro. La verdad que tenía mucho miedo de no aprobar la materia”. Y tanto arduo trabajo no solamente lo ayudó a aprobar las materias, sino que le creó una gran habilidad para la resolución de problemas. Esto lo ejemplifica con otra anécdota: “Cuando tomé el curso de Matemáticas Abstractas el profesor nos dió un problema sin decirnos si tenía solución o no; nos dijo que si alguien lograba resolverlo aprobaría automáticamente el curso con A, que era la calificación más alta. Como el profesor era también el autor del libro y tenía una reputación de duro, nadie se atrevió siquiera a intentar resolver el problema. Pero sucedió que un día perdí el autobús para ir a una práctica y como estaba ahi esperando el siguiente autobús sin hacer nada, me puse a darle un vistazo al problema ¡y entonces sucedió que por algún golpe de suerte logré resolver el problema! Al día siguiente se lo entregué al profesor y este cumplió su palabra y me puso A en todo el curso”.
 
TAOCP
De los múltiples logros y obras de Donald Knuth, quizás la más conocida sea su serie de libros titulada “The Art of Computer Programming” o TAOCP como la abrevian usualmente. La génesis de esa serie se remonta a sus tiempos como estudiante doctoral, cuando aparte de sus estudios realizaba trabajos de consultoría escribiendo compiladores para diferentes tipos de computadoras. Con ello se corrió la voz de que era muy bueno y fue así que la editorial Addison-Wesley lo contactó para que escribiera un libro sobre compiladores. Él hizo un esbozo de doce capítulos y con ello enganchó el contrato.
 
Antes de iniciar de lleno con el tema de los compiladores, Knuth consideró que sería bueno abordar primero el tema del ordenamiento de datos, un tema que serviría para entender mejor el funcionamiento de los compiladores, pero el cual es un tema de gran utilidad en Ciencias de la Computación en general. Al hacer una búsqueda exhaustiva sobre el tema, se encontró con que habían muchos tópicos no muy bien explicados, algunos otros con resultados imprecisos, así que decidió que habría que escribir un libro al respecto y se puso a hacerlo. Cuando terminó ya tenía más de 3000 páginas en su manuscrito. Los de la editorial se dieron cuenta que Knuth tenía mucho material para desarrollar, así que le propusieron que los doce capítulos que había esbozado se convirtiera en una serie de libros de 7 volúmenes, donde cada volúmen tuviera uno o dos capítulos. 
 
Para 1973, ya se habían publicado los primeros tres volúmenes de la serie TAOCP conteniendo tópicos fundamentales tales como ordenación, búsqueda, números aleatorios y otros. Pronto se convirtieron en material obligado para cualquier estudiante de Ciencias de la Computación y carreras afines. Para 1999, la revista American Scientist dijo que éstos se encontraban entre los 100 libros que definieron el siglo en el ámbito científico. A la fecha TAOCP sigue siendo un proyecto inconcluso, pues se ha publicado solo una primera parte del volúmen 4, de los 7 planeados. 
 
TeX
Knuth tiene una muy bien ganada fama de meticuloso y perfeccionista. Quizás esto fue lo que llevó a ofrecer una recompensa de $2.56 dólares por cada error encontrado en TAOCP. Los pocos que han encontrado errores han enmarcado el cheque recibido, mostrándolo con orgullo como un trofeo. Aparte de los errores encontrados por otros, Knuth ha corregido también algunos, lo cual hace que cada nueva edición esté más depurada. Pero algo que también llamó su atención durante el proceso de impresión de sus libros, fue que cuando se pasó de los antiguos sistemas de tipografía mecánica a los nuevos sistemas computarizados, se perdió mucha calidad. Tanto le desagradó esto, que tuvo que ponerse hacer algo al respecto. Fue así que decidió tomar un receso para desarrollar un sistema tipográfico computarizado de gran calidad.
 
Con este trabajo, Knuth y su equipo desarrollaron el sistema tipográfico TeX y el sistema de diseño de fuentes METAFONT, así como también una familia de fuentes tipográficas llamada Computer Modern. En conjunto, estas contribuciones revolucionaron el mundo de la tipografía digital. Al estilo de los grandes, Knuth puso sus contribuciones en el dominio público, para que otros pudieran beneficiarse de ellas y tomarlas como base para nuevas contribuciones. Es así como nace más tarde el muy popular sistema LaTeX, usado ampliamente en publicaciones científicas. Lo que Knuth pensó que sería un receso de un par de años, resultó ser toda una empresa de casi dos décadas.
 
Otras actividades
Aparte del trabajo ya citado, Knuth ha hecho muchas otras contribuciones importantes. Mientras trabajaba en el desarrollo de TeX y METAFONT, Knuth se dió cuenta que generar la documentación relativa a los programas que iba escribiendo era una tarea tediosa y en general desligada del acto de realizar el programa mismo. Así que, muy en su estilo, decidió hacer algo al respecto. Esto lo llevó a crear el sistema DOC y  posteriormente el sistema WEB, los cuales integraban la escritura de programas con la escritura de la documentación relacionada con ellos (por supuesto usando TeX como medio para tipografía e impresión). Con ello no sólo creó unos sistemas de gran utilidad, sino también un nuevo paradigma que en inglés se conoce como “literate programming”, el cual ha sido usado en diferentes lenguajes de programación, entre los que se encuentra Java.
 
Se necesitaría un volumen completo para describir la obra de Donald Knuth, pero baste decir que es reconocido como uno de los más grandes científicos en el área de la computación. No solamente es un excelente teórico, sino que es un ejemplo raro de quien combina la teoría con la práctica (según cuenta, sigue programando sistemas diariamente). Cada una de sus contribuciones podría constituir por sí sola la cúspide de toda una carrera. Solo queda una duda ¿logrará terminar la serie TAOCP?
 
 
* El autor es investigador del Centro de Investigación Científica y de Educación Superior de Ensenada (CICESE).
 
 
Hits: 2030