Donald Knuth, un maestro de algoritmos, reflexiona sobre más de 50 años de trabajo en su creación principal, el libro "The Art of Programming", que continúa complementando.
Donald Knut en su casa en Stanford, California. Un perfeccionista espeluznante, ha designado una recompensa por encontrar errores en sus libros.Durante medio siglo, el científico informático de Stanford Donald Knuth, que recuerda un poco a Yoda, aunque mide 193 cm de altura y usa anteojos, ha ocupado una posición dominante como maestro espiritual en el campo de los algoritmos.
Es autor de The Art of Programming, una monografía que continúa escribiendo hasta el día de hoy, que alcanza 4 volúmenes, y que es la obra de su vida. El primer volumen se publicó en 1968, y todos los volúmenes juntos (vendidos en un set por $ 250 [o 12,500 ₽ / aprox. Transl.]) En 2013 se incluyeron en la lista de libros que formaron el siglo pasado de la ciencia, compilados por American Scientist. También incluye la edición especial de la autobiografía de Charles Darwin, el libro de Tom Wolf "
Guys What You Need! ", El libro de Rachel Carson "
Silent Spring " y las monografías de Albert Einstein, John von Neumann y Richard Feynman.
El "Arte de la programación", impreso en más de un millón de copias, es una biblia en su campo. “Parece una Biblia real: es muy larga y completa; no hay otros libros tan completos ", dice Peter Norvig, director de investigación de Google. Después de 652 páginas, el volumen se cierra con una cita en la contraportada de un libro de Bill Gates: "Si puedes leer el libro completo, envíame tu currículum".
Se abre con un pasaje de la Colección de Recetas McCall:
Aquí hay un libro que ha solicitado publicar en miles de sus cartas. Nos llevó años probar y verificar innumerables recetas para proporcionarle solo lo mejor, lo interesante, lo ideal.
El libro enumera los algoritmos, recetas que alimentan la era digital, aunque, como le gusta señalar al Dr. Knut, los algoritmos también se pueden encontrar en tabletas babilónicas de 3800 años. Es un algoritmo profundamente respetado; Algunos de los patrones más importantes llevan su nombre, por ejemplo,
el algoritmo Knut - Morris - Pratt para encontrar una subcadena en una cadena. Fue inventado en 1970 y encuentra todas las apariciones de una secuencia dada de letras en el texto, por ejemplo, cuando presiona Ctrl-F para buscar una palabra en un documento.
El Dr. Knut ahora tiene 80 años, y generalmente se viste como cuando era un joven geek cuando recién comenzaba esta odisea: una camiseta de manga larga se engancha debajo de una camiseta de manga corta y jeans, al menos en esta época del año. En esos días escribió programas en código máquina, jugó con ceros y unos.
"Knut dejó en claro que el sistema se puede entender hasta el nivel de los códigos de máquina", dijo el Dr. Norvig. Hoy, cuando los algoritmos controlan (e interfieren) con nuestras vidas, el programador promedio no tiene tiempo para profundizar en el desorden binario, trabaja con jerarquías de abstracción, con capas de código, y a menudo con cadenas de código prestadas de las bibliotecas. Pero la élite de los programadores a veces cae a los niveles más bajos.
"En Google, a veces solo recopilamos código de lo que tenemos", dijo Norvig durante una reunión del equipo de Google Trips en Mountain View. “Y a veces, cuando necesitas atender a miles de millones de usuarios, debes hacerlo de manera eficiente. Una mejora del 10% en la eficiencia puede convertirse en miles de millones de dólares, y para lograr este último nivel de eficiencia, debe comprender lo que le está sucediendo a sus fundamentos ”.
Dr. Knut en California Tech, donde obtuvo su doctorado en 1963.O, como Andrei Broder, un famoso científico de Google y uno de los antiguos alumnos de Knuth, explicó durante la reunión: "Necesitamos algunas bases teóricas para nuestro trabajo. No necesitamos algoritmos frívolos, incómodos y de segunda categoría. No queremos que otros algoritmos digan: "Sí, ustedes son idiotas".
Lanzada en 2016, la aplicación Google Trips es un algoritmo de viaje para el entretenimiento turístico durante todo el día. El equipo trabajó en "
maximizar la calidad de los peores días ", por ejemplo, el algoritmo debería evitar tener que enviar al usuario varias veces a los mismos lugares para explorar diferentes atracciones. Se inspiraron en un algoritmo de 300 años inventado por el matemático suizo [así como alemán y ruso] Leonhard Euler, que quería trazar un camino a través de la ciudad prusiana de Königsberg [ahora Kaliningrado], cruzando sus siete puentes solo una vez. Knut aborda el problema clásico de Euler en el primer volumen de su tratado. Una vez aplicó el método Euler para programar una máquina de coser controlada por computadora.
Seguir la doctrina de Knut ayuda a evitar la idiotez. Es conocido por introducir el concepto de "programación literaria", enfatizando la importancia de escribir código que no solo las computadoras sino también las personas puedan leer, un concepto que hoy parece algo anticuado. Knut incluso afirmó que algunos programas de computadora pueden considerarse obras literarias, junto con los poemas de Elizabeth Bishop y la novela American Pastoral de Philip Roth, merecedora del Premio Pulitzer.
También es conocido por su perfeccionismo. Randal Munroe, autor de las caricaturas xkcd y Thing Explainer, se enteró de Knut por primera vez de los programadores que mencionaron el premio que prometió pagar a cualquiera que encontrara un error en alguno de sus libros. Como recuerda Monroe, "la gente hablaba de recibir un cheque como si fuera un Nobel en informática".
Los exigentes estándares de Knut, tanto literarios como del resto, pueden explicar por qué el trabajo de toda su vida está lejos de ser completo. Discutió con Sergey Brin, cofundador de Google y su antiguo alumno, si Brin terminaría su doctorado antes de que Knut terminara su monografía.
Algoritmo del amanecer
A la edad de 19 años, Knut publicó su primer trabajo sobre un tema técnico, "El
Sistema Potenciológico de Pesos y Medidas " en la revista Mad [Era una revista humorística, y potrebibi es la palabra polaca que se usa en inglés para denotar lo absurdo. Por ejemplo, en su trabajo, Knut introdujo una nueva medida de longitud de un potrecybi, igual al grosor del número 26 de la revista / aprox. transl.]. Se convirtió en especialista en informática incluso antes del advenimiento de la informática, estudiando matemáticas en la institución educativa, que ahora se llama Universidad Keyes de la Región de la Reserva Occidental. Estudió programas seleccionados escritos para el mainframe de la escuela IBM 650, una computadora decimal y, al encontrar inexactitudes, los reescribió y el libro de texto utilizado en el aula. Como hobby, calculó estadísticas para un equipo de baloncesto y escribió un programa que los ayudó a ganar su liga, gracias a lo cual el reconocido periodista de televisión Walter Cronkite incluso filmó una historia televisiva sobre él llamada "Entrenador electrónico".
Durante las vacaciones de verano, Knut ganó más dinero que sus maestros en el año creando compiladores. El compilador es como un traductor, convierte un lenguaje de programación de alto nivel (que recuerda al álgebra) en un lenguaje de bajo nivel (a veces es un código binario misterioso) e, idealmente, mejora el programa en el proceso. En informática, la optimización es un arte, que se refleja en otro dicho de Knuth: "La optimización prematura es la raíz de todos los males".
Como resultado, el propio Knut se convirtió en un compilador, descubriendo accidentalmente una nueva área, que más tarde llamó "análisis de algoritmos". El editor lo contrató para escribir un libro sobre compiladores, pero el proyecto se convirtió en un libro que recopila todo lo que sabía sobre cómo escribir programas para computadoras, en un libro sobre algoritmos.
Knut, en 1981, estaba estudiando el número de 1957 de Mad Magazine, que publicó su primer artículo técnico.
El arte de la programación, volúmenes 1-4."En el momento del inicio del Renacimiento, ya había dudas sobre el origen de esta palabra", comienza el libro. "Los primeros lingüistas trataron de entender su origen creando combinaciones como algiros [mórbido] + aritmos [número]". En realidad, continúa Knut, este nombre apareció en honor del autor persa del libro de texto del siglo IX, Abu Abdullah Muhammad ibn Musa al-Khwarizmi, cuyo nombre en el disco latino comenzó a sonar como "Algoritmo". Knut, que nunca se contentó con las medias tintas, fue en peregrinación en 1979 a la patria de al-Khwarizmi, a Uzbekistán [
más precisamente, participó en una conferencia en Urgench / aprox. perev. ]
Desde el principio, Knut quería escribir un libro. Pronto, el Big Bang sucedió en informática, por lo que revisó su proyecto, dividiéndolo en siete volúmenes. Ahora está lanzando subvolúmenes o temas. Se suponía que el próximo "Volumen 4, Número 5", que, entre otras cosas, describe cosas como "retroceder" y "enlaces de baile", se lanzaría en 2018. Sin embargo, se retrasó hasta abril, ya que el autor encuentra constantemente más y más tareas nuevas que definitivamente quiere presentar.
Para optimizar las posibilidades de llegar al final del trabajo, Knut ha estado monitoreando estrictamente su tiempo. Se retiró a los 55 años, restringió hablar en público y rechazó el correo electrónico (al menos oficialmente). Andrei Broder recuerda que la gestión del tiempo fue una característica definitoria de su maestro en la década de 1980.
Knut solía reunirse con estudiantes los viernes por la mañana hasta que comenzó a pasar las tardes en el laboratorio de John McCarthy, uno de los pioneros en inteligencia artificial, para acceder a las computadoras cuando estaban libres. Asustado por cómo un libro querido por su corazón comenzó a cuidar la llegada de los sistemas de publicación digital, Knut se propuso el objetivo de desarrollar un sistema informático para el conjunto de impresión TeX, que sigue siendo el estándar de oro para todas las formas de comunicaciones y publicaciones científicas. Algunos lo consideran la mayor contribución de Knut, y la mayor contribución a la imprenta desde la época de Gutenberg.
Este retraso de diez años se produjo en un momento en que diferentes personas usaban computadoras, y cuando trabajaban más rápido por la noche, cuando la mayoría de las personas dormían. Por lo tanto, Knut cambió a un estilo de vida nocturno, cambió el horario por 12 horas y cambió la hora de las reuniones con estudiantes de 8 a 12 de la noche del viernes. Broder recuerda: "Cuando le dije a mi novia que no podíamos hacer nada el viernes por la noche, porque tenía una cita con mi supervisor a las 10 pm, ella pensó:" Suena tan estúpido que parece ser cierto " ".
Sin embargo, cuando Knut decide asistir a algún lugar en persona, dedica toda su atención a este evento. "Estar con él es un placer", dijo Jennifer Chase, directora gerente de Microsoft Research. “Está al máximo en la comunidad. Si tuviera una función de optimización que representara calidez y profundidad, entonces ese sería Don ".
Knut discute las fuentes con Hermann Zapf, un desarrollador de fuentes.Domingo con un algoritmo
Knut vive en Stanford y se reúne con personas los domingos. Lo que dejó de lado durante todo el día fue excepcional: por lo general, no está disponible durante su sueño diurno, que es un ritual sagrado que dura de 13 a 16 horas. Comenzó su día temprano, en la Primera Iglesia Luterana de Palo Alto, donde dio una lección para la escuela dominical frente a una multitud de personas reunidas en una habitación sin sillas. En su camino a casa, comienza a filosofar sobre las matemáticas.
"Nunca lo sabré todo", dijo. "Mi vida sería mucho peor si no hubiera preguntas para las cuales yo sabría las respuestas, y si no hubiera preguntas para las cuales no sabría las respuestas". Luego ofreció un recorrido por la casa "moderna de California" que él y su esposa construyeron en 1970. Su oficina está llena de montones de memorias USB y decorada con artesanías por Jill, un diseñador gráfico, en el Día de San Valentín. Lo más impresionante es la sala de música, construida alrededor de un órgano hecho a medida con 812 tubos. El día terminó en una fiesta con cerveza y acertijos.
Adivinanzas, juegos, escribir una
novela sobre
números surrealistas , componer una composición musical multimedia de 90 minutos
Fantasia Apocalyptica , tales cosas
comienzan . Una sección de su libro se llama Riddles Against the Real World. Envió un extracto del libro a un equipo de padre e hijo, Martin Demain, un artista, y Eric Demain, un especialista en TI que trabaja en el MIT, porque Knut incluyó sus "
fuentes de rompecabezas algorítmicos " en el libro.
"Me sorprendió gratamente", dijo Eric Demain. "Entrar en este libro es un honor". Mencionó otra cita de Knut, una conferencia bienal inspiradora de
Entretenimiento con Algoritmos : "El objetivo principal probablemente siempre fue el placer".
Y luego, dijo Demane, esta área se convirtió en práctica. Ingenieros, científicos, artistas: todos se unen para resolver problemas reales, como plegar proteínas, robótica, bolsas de aire, utilizando los
métodos de origami desarrollados por los dos Demains,
plegando papel y vinculándolo en varias formas.
Por supuesto, todo este desorden algorítmico causa problemas reales. Los algoritmos escritos por personas, que abordan tareas cada vez más complejas y emiten código lleno de errores y sesgos, ya son bastante desagradables. Pero, peor aún, estos son algoritmos escritos no por personas, sino por máquinas.
Los programadores todavía están entrenando máquinas y dándoles datos. Los datos son un área nueva para errores y sesgos, y es más difícil de detectar y corregir. Sin embargo, como dijo Kevin Slavin, profesor asociado en MIT Media Lab, “ahora estamos escribiendo algoritmos que no pueden leer. Esto marca un momento histórico único cuando trabajamos con ideas, acciones e intentos, causados por la física, originados por personas, pero no entendidos por las personas ". Slavin a menudo
comenta : "Tienes un futuro brillante, si eres un algoritmo".
Knut en su escritorio en casa, 1999.
NotasY será aún más maravilloso si eres un algoritmo bien versado en Knut. "Hoy, los programadores usan lo que Knut y otros usaron como componentes de sus algoritmos, y combinan esto con todo tipo de otras cosas que necesitan", dijo el Dr. Norvig de Google.
“Con la IA hacemos lo mismo. Es solo que el paso de combinación es automático, basado en datos y no basado en el trabajo del programador. Necesitamos la IA para poder combinar los componentes para obtener la respuesta correcta en función de los datos. Sin embargo, debe decidir cuáles son estos componentes. Puede suceder que cada uno de los componentes sea una página o capítulo de Knut, ya que esta será la mejor manera de realizar una tarea ".
Así que tenemos suerte de que Knut continúe haciendo esto. Él piensa que debería llevar otros 25 años completar el "Arte de la programación", aunque esta evaluación no ha cambiado desde la década de 1980. ¿Los algoritmos que escriben otros algoritmos obtendrán su capítulo en el libro o la página en el epílogo? "Definitivamente no", dijo Knut.
"Me preocupa el efecto que los algoritmos tienen en el mundo", agregó. - Todo comenzó con el hecho de que los informáticos estaban preocupados porque nadie los escuchaba. Ahora me preocupa que mucha gente nos esté escuchando ".
☃