La vida de Alan Turing, a 100 años de su nacimiento

Considerado uno de los padres de la computación, sus investigaciones fueron claves en el desarrollo de esta tecnología. Sus principales descubrimientos y cómo influyó en posteriores desarrollos.

26 de Septiembre 2012
La vida de Alan Turing, a 100 años de su nacimiento




Cuando Alan Turing nació hace ya 100 años, un 23 de junio de 1912, una computadora no era una cosa, sino una persona. Las computadoras, la mayoría mujeres, eran contratadas para realizar cálculos repetitivos durante horas. La práctica data desde 1750, cuando Alexis-Claude Clairaut contrató a dos de sus colegas astrónomos para que lo ayudaran a determinar la órbita del cometa Halley. Su acercamiento consistía en dividir el tiempo en fragmentos y, utilizando las leyes de Newton, calcular los cambios en la posición del cometa en su paso por Júpiter y Saturno. El equipo trabajó durante cinco meses repitiendo el proceso una y otra vez a medida que lentamente trazaban el curso de los cuerpos celestes.

alanturing

Lo que hoy llamamos una simulación dinámica, los contemporáneos de Clairaut lo consideraban una abominación. Ellos deseaban una ciencia de leyes fundamentales y hermosas ecuaciones, y no tablas y tablas de números. Sin embargo, su equipo realizó una predicción bastante acertada de la órbita del cometa. Durante el último siglo y medio, los métodos computacionales llegaron a dominar la astronomía y la ingeniería. En tiempos en los que Turing ingresó en el King’s College, en 1931, las computadoras humanas venían siendo contratadas para una gran variedad de propósitos y usualmente eran asistidas por máquinas de cálculo. Con tarjetas perforadas se controlaron y tabularon los resultados del censo en Estados Unidos. Las cajas registradoras eran ubicuas. Un millonario no era sólo una persona con mucho dinero sino también una calculadora mecánica que podía multiplicar y dividir con una velocidad sorprendente. Todas estas máquinas eran fundamentalmente limitadas. No solamente eran lentas, menos confiables y dramáticamente más pobres en memoria que las computadoras actuales. Pero, lo más importante: todas esas máquinas de cálculo y “switching” creadas desde 1930 y en adelante, estaban preparadas para un propósito determinado. Algunas podían realizar operaciones matemáticas, otras incluso podían seguir una secuencia de instrucciones, pero cada una tenía un repertorio limitado de operaciones útiles. Y no eran programables.

Mientras tanto, la matemática estaba en problemas.

A comienzos de la década de 1920, el gran matemático alemán David Hilbert había propuesto formalizar toda la disciplina en términos de un pequeño número de axiomas y un conjunto de pruebas consistentes. Hilbert tuvo la visión de una técnica que podría ser utilizada para validar arbitrariamente declaraciones matemáticas como “x+y=3” y “x-y=3” y determinar si eran verdaderas o falsas. Esta técnica no dependería de un descubrimiento o una inspiración por parte del matemático; tendría que ser repetible, enseñable y lo suficientemente clara como para que pudieda ser realizada por una computadora (según la cosmovisión de Hilbert). Tal sistema de comprobación de afirmaciones sería muy poderoso, ya que muchos aspectos del mundo físico pueden ser descriptos como una serie de ecuaciones. Si uno fuera capaz de aplicar un procedimiento repetitivo para descubrir si una declaración matemática es verdadera o falsa, entonces las verdades fundamentales de la física, la química, la biología e incluso la sociedad humana, podrían ser reveladas no a través de experimentos en un laboratorio sino por matemáticas en un pizarrón.

Pero, en 1931, un lógico austríaco llamado Kurt Godel presentó su devastador teorema de lo incompleto. Demostró que para cualquier sistema matemático útil es posible crear sentencias que son verdaderas pero que no pueden ser probadas. Y luego Turing, que condujo la última parte del proyecto de Hilbert, marcó el camino para el futuro de la computación.

Como demostró, el problema no es sólo que algunas declaraciones matemáticas son incomprobables; de hecho, no se puede crear ningún método que puede determinar en todos los casos si una afirmación es comprobable o no. Esto es que cualquier afirmación en un pizarrón puede ser verdadera, puede ser falsa o puede ser incomprobable... y usualmente es imposible descubrir cuál es de las tres. La matemática fue fundamentalmente limitada no por la mente humana sino por la matemática en sí misma.

Nuevas reglas

Lo brillante y sorprendente fue la forma en que Turing llegó a la comprobación. Él inventó un formalismo lógico que describe cómo una computadora humana ejecuta un set de complejas operaciones matemáticas que aprendió a seguir. No entendía cómo funcionaba la memoria humana, por lo que la modeló como una larga cinta que podía moverse de adelante hacia atrás y nuevamente hacia adelante y en la que podían leerse, escribirse y borrarse símbolos. Tampoco entendía cómo funcionaba el proceso de aprendizaje, por lo que lo ideó como una serie de reglas que los humanos podían seguir dependiendo del símbolo y algún tipo de “estado de la mente”. Turing describió el proceso con tanto detalle que ya no se necesitaba una computadora humana para realizar la tarea: una máquina podría realizarla. Él denominó esta entidad teorética como la “máquina automática”, que es lo que hoy conocemos como la Máquina Turing. En un paper de 1936 Turing probó que la máquina podía resolver cualquier problema computacional capaz de ser descripto como una secuencia de pasos matemáticos. Y lo que es más, él demostró que una de sus máquinas podría imitar a otra. Lo que les dio este poder fue que la cinta podía almacenar tanto la información como las instrucciones. En palabras del historiador científico George Dyson, la cinta contenía “tanto los números como las cosas que quería decir” y “números para hacer cosas”.

El trabajo de Turing fue transformador. Les dejó en claro a los diseñadores de las incipientes computadoras electrónicas que las máquinas de cálculo no necesitaban un gran inventario de instrucciones u operaciones novedosas; todo lo que necesitaban eran unos pocos registros que estuviesen siempre disponibles (el “estado de la mente”) y una memoria que pudiese contener tanto datos como código. Los diseñadores pudieron proseguir con la certeza matemática que las máquinas que estaban construyendo eran capaces de resolver cualquier problema que los humanos pudiesen programar.

Estos descubrimientos proveyeron la formulación matemática para las computadoras digitales actuales, aunque fue John von Neumann quien tomó las ideas de Turing y se llevó el crédito. El diseño de Von Neumann tenía un “core” central que manejaba tanto las instrucciones como los datos de la memoria, realizaba las operaciones matemáticas, almacenaba los resultados y luego repetía. La máquina también podía mostrar contenidos de múltiples ubicaciones en la memoria si era necesario. Lo que hoy llamamos la arquitectura Von Neumann está en el corazón de cada microprocesador y mainframe del planeta. Es dramáticamente más eficiente que la máquina de Turing pero, desde el punto de vista matemático, es lo mismo.

Incidentalmente, esta característica esencial de las computadoras ayuda a explicar por qué la ciberseguridad es uno de los mayores problemas de la edad moderna. Por un lado, Turing demostró que todas sus máquinas eran equivalentes, lo que hace posible a un atacante tomar el control de una de ellas y hacerla correr un programa. Además, ya que no es siempre posible definir lo que puede ser probado. Una máquina de Turing no puede (sin importar cuánta memoria, velocidad o tiempo tenga) evaluar el diseño de otra máquina similar y determinar confiablemente si logrará terminar los cómputos, dado el input necesario. Esto genera que la detección perfecta de virus sea imposible. Un programa no es capaz de evaluar una porción de software que no ha visto antes ni determinar si es malicioso sin antes ejecutarlo. El programa podría ser benigno. O podría correr durante muchos años antes de eliminar toda la información del usuario. No hay forma de saberlo con seguridad sin ejecutar el programa.

En 1983, Turing comenzó a trabajar para el gobierno británico y llegó a ayudar a diseñar una serie de máquinas para conocer los códigos utilizados por los alemanes en la Segunda Guerra Mundial. La mejor fuente para esta historia es la biografía de Andrew Hodges, “Alan Turing: The Enigma”. Desafortunadamente, algunos detalles sobre el trabajo de Turing durante los tiempos de guerra no fueron desclasificados hasta el año 2000, 17 años después de la publicación del libro (y casi 50 más tarde de que Turing se suicidara). Como resultado, sus contribuciones completas no fueron debidamente contadas.

Muchas historias sobre la computación hablan sobre cómo primero los ingenieros decidieron perforar tarjetas, luego utilizar relays, más tarde tubos y finalmente transistores para construir máquinas de cómputos. Pero no fue así. Las máquinas de propósito general necesitaron del descubrimiento fundamental de Turing de que la información y el código podían ser representados en la misma forma. Y también hay que tener en cuenta que las computadoras actuales fueron desarrolladas con la ayuda de computadoras más lentas, que a su vez fueron creadas a partir de máquinas todavía más lentas. Si Turing no hubiese realizado el descubrimiento cuando lo hizo, la revolución de la informática podría haberse retrasado por décadas.



¿Te gustó la nota?

Comparte tus comentarios

Sé el primero en comentar

Notas Relacionadas