Los límites teóricos del software
9 de Diciembre de 2020Escribe Palbo Iacub, Presidente de Calipso Software
¿Existen cosas que el software no pueda resolver?
Hoy el software y las computadoras resuelven muchísimos problemas. Las computadoras hoy pueden jugar al ajedrez mejor que cualquier ser humano, entender el lenguaje hablado, hacer traducciones, jugar al fútbol, caminar en dos patas, realizar operaciones quirúrgicas, simulacros de personalidades humanas, y muchísimas cosas más que sería imposible detallar.
Todo el mundo hoy conoce el poder de las computadoras. Pero hace 20 años, aún era frecuente encontrar profesionales o especialistas, que muy sueltos de cuerpo, con la arrogancia que suele otorgar la estupidez, aseguraban que su actividad no se podía ver invadida por los ingenios digitales. "Las computadoras nunca van a poder hacer esto, o aquello", era la frase usual. Y a los pocos años, paff.., las computadoras lo hacían.
A la vista de los logros de los últimos 10 años es difícil encontrar gente que declame acerca de los límites de la computación. Pero que los hay, los hay. Y fueron descubiertos y analizados antes de que la primer computadora electrónica fuera fabricada.
El ataque de Godel
En 1931, el niño terrible de la lógica, el austriaco Kurt Godel, publicó su trabajo sobre las proposiciones formalmente indeterminables de Principia Matematicae. En este trabajo aportó pruebas visibles de los que, para horror de sus colegas, podía ser ´el fin de las matemáticas´.
Godel logró demostrar que, dentro de cualquier sistema matemático estrictamente lógico, siempre habría proposiciones cuya verdad o falsedad no pudiera ser demostrada, partiendo de los axiomas en los que se basaba el sistema. Esto implicaba la incompletitud de la matemática. Y era así nomás.
No obstante, a pesar de semejante demostración, el mundo pudo seguir usando las viejas matemáticas. Los ángulos interiores de los triángulos seguían sumando 180 grados, y los puentes y edificios calculados con la susodicha seguían en pie. La demostración de Godel hablaba de la consistencia, no de la matemática como instrumento práctico.
Lo que pocos saben, es que este evento estuvo muy relacionado con el desarrollo inicial de la computación.
Las máquinas de Turing
Turing, que en 1933 ya era un matemático de cierto prestigio, abordó del problema señalado por Godel y se propuso atacar cuestiones vinculadas con el mismo que quedaban por resolver.
La idea de Turing era: "De acuerdo, un sistema axiomático, como las matemáticas, podía generar proposiciones cuya veracidad o falsedad no podría ser demostrada. Pero, ¿era posible determinar si tal proposición era arbitraria, desde dentro del sistema? ¿Podría determinarse mediante una serie de pasos mecánicos, que cualquiera, o incluso una máquina, pudiera seguir? De ser así estas proposiciones arbitrarias podrían ser detectadas y olvidadas sin que todo el sistema se resintiera.
Para resolverlo, Turing inventó un concepto cuyas consecuencias desbordaría los límites de las matemáticas. ¿Cuáles eran los procedimientos mecánicos que podían utilizarse para demostrar que una proposición era susceptible, o no, de ser demostrada? El cálculo era un proceso estricto, como el realizado por una máquina. Turing definió la naturaleza teórica de una máquina semejante. De allí en adelante se denominaría La Maquina de Turing.
Todas las computadoras actuales son versiones restringidas de dicha máquina teórica.
Problemas irresolubles
Turing postuló que una máquina podría tener el algoritmo para factorizar un número cualquiera, otra el necesario para jugar al ajedrez, otra el requerido para sumar dos números. Podrían definirse máquinas para cualquier uso.
Pero luego definió una máquina que denominó Universal. En esta máquina se podría introducir la referencia a cualquier otra máquina de Turing, y la Universal debería describir el funcionamiento de la referenciada. Pero, ¿que pasaría si la referencia era circular? ¿Qué ocurriría si la Universal debía analizar su propio comportamiento?
En ese caso la máquina ingresaba en una invocación recursiva interminable. La máquina universal, enloquecía. En términos lógicos, se llegaba a una contradicción. Dicha máquina no podía existir ni siquiera en la teoría.
Dicho en otros términos, Turing demostró la limitación encontrada por Godel en la lógica, desde la misma matemática. No había forma de que la matemática discriminase sus propias proposiciones arbitrarias.
De paso, generó una definición que sería la base de toda la computación actual.
En términos computacionales esto implica, entre muchas otras cosas, que no es posible construir un software que analice si otro software entra en loop o no.
En 1937 Turing publicó sus descubrimientos en un trabajo titulado On computable numbers, with an aplication to the Entscheidungsproblem (palabra referida al problema inicial de determinación lógica planteado por Hilbert).
Turing luego trabajaría en el proyecto Collosus y en Madam, dos de las primeras computadoras de la historia. Su trabajo permitió decodificar las transmisiones de la máquina alemana Enigma lo cual fue un punto fundamental para ganar la guerra en el Atlántico.
Lamentablemente, Inglaterra no retribuyó semejantes aportes. Turing fue sometido a un juicio por homosexualidad de resultas del cual fue obligado a realizar un tratamiento hormonal que lo dejaría impotente. No pudo soportarlo y se suicidó el 7 de junio de 1954.
(*) Pablo Iacub: Empresario de la indutria del software