domingo, 25 de octubre de 2015

Donald Knuth: aspectos de computación y fe

Donald Knuth es un matemático americano, seducido desde muy joven por los computadores, que en los años 50 eran la nueva tecnología creada por ingenieros, matemáticos y algunos físicos. Claro, algunos pueden decir que la computación tiene raíces ancestrales en el ábaco, en la calculadora creada por Blaise Pascal y, más recientemente, en los trabajos de Charles Babbage y de su musa Ada Lovelace, hija del poeta Lord Byron, y considerada la primera programadora de la humanidad. 
        Sin embargo, para fines prácticos, la computación es un área del conocimiento muy reciente. Por ejemplo, en el fin de los años 80 la mayor parte de sus papas creadores estaban vivos tal como Knuth, John P. Eckert y John Mauchly (que proyectaron el ENIAC, una máquina de referencia como computador moderno), Richard Hamming, Marvin Minsky, Edsger Dijkstra, John Backus, C.A.R. Hoare, entre otros; así como los grandes inventores de la electrónica digital y la microelectrónica, como Claude Shannon, Robert Noyce y Gordon Moore; estos dos últimos vinculados a la invención del circuito integrado y al surgimiento de la industria de microeletrónica, que hicieron posible esa explosión tecnológica que infiltra tanto nuestra realidad.
        Por supuesto, algunos ya estaban muertos en los años 80, como el matemático John von Neumann, que tuvo una muerte prematura. Gran parte de los científicos citados fueron reconocidos con el premio Turing (en homenaje al matemático británico Allan Turing), un lauro dado a los científicos de la computación; una especie de premio Nobel, pero más justo por ser menos político.
       En el caso de Knuth, se pueden mencionar sus contribuciones en el estudio de los algoritmos, ese tipo de recetas computacionales basadas en ingredientes (operaciones lógicas y matemáticas) y procesos, que simbolizan secuencias lógicas con las que deben ser ejecutadas las cosas. Por eso en un algoritmo se hacen preguntas como «si el resultado es positivo», y se toman decisiones del tipo «entonces haga tal cosa». Hay algunas semejanzas entre lo que es un algoritmo y una receta de cocina, pues los dos tienen ingredientes, preguntas que deben ser hechas en tiempo de ejecución y decisiones que se toman dependiendo de las respuestas.
        Pero la diferencia entre una receta de cocina y un algoritmo es que este último debe estar regido por fuertes exigencias matemáticas y formales (no citadas aquí); por ejemplo, la garantía de la unicidad en la respuesta. Veamos un caso, cuando multiplicamos dos números naturales o dos matrices la solución debe ser única. Y un algoritmo debe ofrecer la garantía de que su respuesta será la misma, si los dados de entrada son los mismos y otras condiciones básicas permanecen iguales. En una receta de cocina esto no ocurre necesariamente, y tampoco en la física, si tenemos en cuenta la influencia del azar, de lo imprevisto, de lo contingente. Otra condición es que un algoritmo debe endosar la optimalidad de su respuesta: su veredicto debe ser único y el mejor de todos. Cuando intentamos resolver un problema por la ejecución de instrucciones y no garantizamos la solución óptima nuestra tentativa no puede ser llamada algoritmo, apenas «heurística». 
        Para colocar algoritmos en un computador necesitamos escribirlos en un lenguaje adecuado, que no deje espacios para múltiples interpretaciones; o sea no existen metáforas o cosas semejantes. Sin embargo, los lenguajes usados para programación se parecen con las lenguas naturales, en el sentido de que tienen léxicos, sintaxis, semánticas; que son definidos por formulaciones matemáticas y que son conocidas como gramáticas generativas, desarrolladas a partir de los trabajos del lingüista Nohan Chomsky. Esto permite hacer programas reconocedores de lenguajes artificiales y traductores de las mismas; que toman, por ejemplo, un programa escrito en el lenguaje Fortran y lo traducen en instrucciones capaces de ser ejecutadas en un computador específico. Y estos programas son denominados compiladores.
        A pesar de iniciar sus actividades en el proyecto de compiladores para lenguajes artificiales, las contribuciones de Knuth fueron enfocadas en la formulación de una teoría para el análisis de algoritmos. Este campo es muy importante para cualquier persona que quiera hacer de su profesión la informática, pues un programa es una solución a un problema, y cada problema puede tener varias maneras de ser resuelto; o sea pueden existir varios algoritmos que resuelvan un mismo problema, y por su vez cada algoritmo puede ser descrito en varios lenguajes artificiales, y para cada lenguaje necesitamos un compilador específico. De esta manera, los alumnos de computación gastan por lo menos un semestre aprendiendo las técnicas de Knuth para entender a calidad de los algoritmos, desarrollando fórmulas matemáticas con este objetivo.
      Siendo Knuth un pionero en una ciencia nueva, tuvo la osadía de proponerse un desafío enciclopédico: escribir un tratado sobre todos los problemas posibles en computación y sus soluciones. Este proyecto incluía la escritura de siete volúmenes, de los cuales apenas escribió tres, y que fueron la base para formar varias generaciones de programadores. Como tenía inclinaciones artísticas, específicamente por la música, y porque era difícil en su época llamar a la computación de «ciencia» colocó como nombre a su tratado de «El arte de la programación de computadores». Sin duda su obra contribuyó enormemente para emancipar la computación de otras áreas duras como la física, la matemática y la electrónica.
        En las palabras de Knuth un científico de la computación tiene una manera particular de ver las cosas, diferente de los físicos, de los ingenieros y de los matemáticos. Un científico de esta área es capaz de ver un problema desde diferentes niveles de abstracción. Puede fácilmente transitar, buscando una solución, en los vericuetos de la arquitectura de los computadores y de los circuitos digitales, en la representación de los datos, en los aspectos de los lenguajes artificiales, en las especificaciones de los algoritmos, en los modelos matemáticos abstractos, en las teorías del conocimiento y, finalizando, en los límites de la representación matemática vinculados al teorema Gödel.
        Científicos con este perfil fueron los que crearon disciplinas como la inteligencia artificial y ahora se aventuran en la llamada conciencia artificial, y parece que nadie los puede parar, pues en apenas 50 años han sido capaces de introducir tecnologías fundamentales para el desarrollo de otras ciencias, inclusive las humanas. El propio Knuth hace esta observación, intentando explicar el crecimiento exponencial de la informática, sugiriendo que la universalidad del uso del computador como herramienta fue la médula de su propio vigor. O sea, el propio computador, la herramienta más sofisticada creada por el ser humano, potencializa el avanzo de la propria computación.
        Otra peculiaridad de los científicos de la computación es que ellos lidian directamente con la herramienta que más se parece  al ser humano, y que representa una metáfora de su propia esencia. Pues mente y cuerpo, esa especie de dualidad cartesiana, se parece demasiado con la dualidad software y hardware. Y si el dualismo cartesiano viene siendo puesto en jaque, la dualidad computacional también viene siendo cuestionada, pues los límites entre software y hardware están siendo diluidos por nuevas tecnologías de computación reconfigurable y por la invención de nuevos dispositivos, que permiten aproximar más los aspectos duros de la computación a los nuevos descubrimientos de la neurociencia.
        Pero otra característica de los científicos de la computación es que no se ven obligados a vestir la camisa del materialismo, al contrario de lo que ocurre con la mayoría de los físicos, químicos y biólogos. A este respecto, el físico Richard Feynman decía que científicos debían adoptar el materialismo como una obligación. En el caso de científicos de la computación esa libertad puede ser explicada por el hecho de la computación ser una ciencia muy nueva, y que no pretende de manera alguna explicar cómo funciona o el universo, y mucho menos si este último fue creado. Sólo quiere resolver problemas que los seres humanos tienen dificultades en encarar (por ejemplo, aquellos que envuelven muchos cálculos), y diseñar máquinas que imiten el comportamiento humando en problemas que nosotros fácilmente resolvemos. Por ejemplo, cuando nosotros entramos en un ambiente desconocido, como en una sala nunca antes visitada, nuestro cerebro es fácilmente capaz de crear un mapa mental de la misma (resolviendo un problema de modelado), calcular en qué lugar de ese espacio estamos (resolviendo así un problema de localización) y, sobre todo, hacer todo esto de manera simultánea. Pues bien, este proceso es denominado de Modelado y Localización Simultanea (SLAM- Simultaneous Localization and Mapping), que es difícil de ser imitado con los computadores actuales.
        Cuando mi amigo César Giraldo me preguntó alguna vez si existía un científico de la computación al nivel de Isaac Newton yo le respondí que debería ser Donald Knuth. La explicación que le di en esa época era por su obra enciclopédica, que no sólo fue fundamental para el desarrollo de una nueva ciencia, sino para la formación de varias generaciones de estudiantes. Cuando César me instigó recordándome sobre las inclinaciones teológicas y alquimistas de Newton, yo le informé acerca de los ensayos religiosos de Knuth sobre teología cristiana.
        Knuth tuvo una formación luterana desde niño y nunca se sintió obligado a renunciar a ella, mismo siendo un científico reconocido en vida. Lo que no ocurre en la física, en donde los científicos tienen miedo de hablar en público sobre temas religiosos o espiritualistas, pues pueden ser fácilmente estigmatizados por la gran mayoría de sus colegas. Sólo algunos se aventuran vinculando aspectos de espiritualidad oriental (bastante sintetizados en las enseñanzas sutiles de Ramana Maharishi) con los descubrimientos de la no localidad espacial y temporal que caracterizan ciertas partículas, como el fotón y otros hechos sorprendentes, implícitos en el menú de la física cuántica.
        Pero cuando Knuth habla sobre fe, en su contexto cristiano, simplemente lo hace refiriéndose a un nivel de abstracción más elevado para encarar la vida. Cuando le preguntan sobre el demonio, dice que el mismo puede ser la explicación del porqué seres humanos escogen la guerra en vez de la paz. Cuando le preguntan sobre milagros, dice que los mismos pueden tener descripciones no fidedignas en los textos sagrados, mas que existen posibilidades para que los mismos ocurran. Y todo esto lo dice con la mayor naturalidad, sin ningún dogmatismo, afirmando con humildad que no es la mejor persona para hablar sobre teología, pues no es teólogo profesional; pero que tal vez sea una persona adecuada para hablar del tema para una platea de estudiantes y profesores de informática, pues sabe bien cómo ellos piensan y encaran su día a día.
        Hubo una época en que grandes científicos eran místicos y espiritualistas y casi nada daba muy errado con esto. Kepler, Galileo y Newton tenían contacto con la teología, la alquimia y la astrología, y todo lo enfocaban en niveles de abstracción específicos, tal como lo propone Knuth. Pero siempre existía el peligro de que curas inquisidores crearan una hoguera en plaza pública.
        Y hay aspectos históricos sobre este tema que deberían ser mejor discutidos; por ejemplo, el hecho de que el primer científico moderno pudo haber sido Pierre Simon Laplace, quien propuso un modelo de ciencia en donde Dios no fuera necesario. Y lo propuso de manera clara y seria: si tenemos un modelo matemático fidedigno de la realidad, y conocemos las condiciones iniciales podremos predecir cualquier cosa en el futuro. Pues sólo necesitaremos una máquina capaz de realizar los cálculos, y el futuro se nos mostraría como una vía cuya trayectoria sería calculada a partir de un punto determinado, definido por las condiciones iniciales.
            Esta máquina fue denominada «demonio de Laplace» y su concepto sigue siendo la base de muchas aplicaciones en ingeniería. El problema que tiene este demonio es que desarrollar un modelo matemático de la realidad, en su totalidad, es una imposibilidad práctica, debido a la inmensa cantidad de variables, el poco conocimiento que tenemos sobre ellas y la extrema relación compleja entre las mismas. Y, sobre todo, porque la máquina que resolvería el modelo (un computador hipotético) es en la práctica una imposibilidad. Y las propias técnicas de análisis desarrolladas por Knuth muestran el tamaño de este hueco.
        Si el demonio de Laplace nos libró de la locura de los curas, por otro lado nos colocó la camisa de fuerza del materialismo. En este sentido es fácil recordar cómo los catequizadores marxistas decían a los jóvenes que la gran contribución de Marx era la de haber invertido la supuesta pirámide vinculada al idealismo de Hegel. Al final el propio Marx afirmaba que vida y materia generaban la conciencia y no al revés. Pero como nada de lo que el hombre crea es eterno, los descubrimientos recientes de la física tienden a colocar de nuevo la conciencia en la base de la pirámide. Y si el demonio de Laplace es derrotado por la complejidad del mundo, el demonio que aun persiste en la mente de  Knuth no resistirá mucho al incremento de nuestra propia conciencia.