La filosofía de las computadoras
Ciencia y tecnología El nacimiento del cómputo fue una respuesta a un viejo problema filosófico relativo a los fundamentos de la matemática.
Los ordenadores se han vuelto indispensables en el funcionamiento de nuestra sociedad. La idea del matemático e informático Gregory Chaitin es que fueron inventados, casi por casualidad, para que ayudasen a aclarar una cuestión filosófica concerniente a los fundamentos de la matemática. Cosa que quizá muy pocos conocen. Veamos cómo sería esta idea. Sería, pues, imposible explicar esto sin analizar la obra de quienes hicieron los aportes más importantes: Bertrand Russell, Kurt Gödel y Alan Turing.
La digitalización de nuestra sociedad puede decirse que es el resultado de una respuesta que trató de dar David Hilbert a una vieja pregunta filosófica.
Es decir, Turing inventó el computador a la luz de una pregunta acerca de los fundamentos de la matemática sobre la cual Hilbert prestó especial atención. Y, de una forma accidental e inesperada, eso condujo a la creación de los lenguajes de programación.
Fue Hilbert, un importante matemático alemán, el que a principios del siglo 20 propuso la formalización completa de todo el razonamiento matemático.
Pero resultó ser que era imposible mecanizar el razonamiento matemático, por lo que, en un sentido, su idea no prosperó. No obstante, en otro sentido, tuvo un gran éxito, pues el formalismo fue uno de los grandes legados que nos ha dejado el siglo 20 para la programación, para el cálculo y para la computación.
Russell, matemático y filósofo, constituye una figura clave en todo esto porque descubrió algunas paradojas muy interesantes en la lógica misma. Es decir, halló casos en los que algunos razonamientos, en apariencia impecables, conducen a contradicciones.
Las paradojas que Russell descubrió atrajeron la atención de varios matemáticos, como por ejemplo esta, que podríamos explicar con simpleza de la siguiente forma: la paradoja del barbero.
“Hace muchos años, en un lejano reino, había pocas personas que su oficio fuera ser barbero. Para solucionar el problema, el rey dictaminó que los barberos sólo podían afeitar a las personas que no podían afeitarse por sí mismas.
Uno de esos barberos era el único en su comarca y le entró la siguiente duda: como barbero no puedo afeitar al barbero de mi comarca, que soy yo, porque entonces podría afeitarme a mí mismo. Pero, entonces, algún barbero debe de afeitarme, pero como soy el único que hay, entonces no me puedo afeitar”. Lenguaje artificial
Una de las consecuencias que este tipo de paradojas produjo en la lógica fue la tentativa de Hilbert de eludirlas por medio de la mecaniza- ción de la matemática.
Si encontramos conflictos al seguir razonamientos que parecen correctos, la solución consiste en utilizar la lógica simbólica para crear un “lenguaje artificial” para generar matemáticas y ser muy cuidadosos al especificar sus reglas, de modo que no surjan contradicciones. Después de todo, el lenguaje cotidiano es bastante ambiguo.
La idea es la siguiente: se trata de producir matemática a partir de un lenguaje artificial propuesto por Hilbert, que establece un sistema axiomático completamente formal, y sus piezas serían símbolos en un papel, y consistiría en deducir teoremas de los axiomas.
Si se hace matemática es porque tiene significado. Pero si se desea estudiar la matemática utilizando métodos matemáticos, es necesario depurar el significado y limitarnos a examinar un lenguaje artificial con reglas bien precisas.
Pero otro matemático, Gödel, destruyó la visión de Hilbert en 1931. El descubrimiento de Gödel fue tremendo: Hilbert estaba totalmente equivocado; no hay modo de que exista un sistema axiomático para la totalidad de la matemática en el que quede claro si un enunciado es verdadero o no.
Muchos consideraron que el artículo de Gödel era absolutamente devastador. Toda la filosofía matemática tradicional acababa de quedar reducida a escombros.
Pero, según Hilbert, debía existir “un procedimiento mecánico” que decidiese si una demostración se atenía a las reglas o no. Hilbert no aclaró nunca qué entendía por procedimiento mecánico. Turing, en cambio, postuló que se trataba de una máquina, la que ahora conocemos como máquina de Turing. Esa máquina
El artículo original de Turing contiene un lenguaje de programación, lo mismo que el artículo de Gödel, o, mejor dicho, lo que hoy conocemos como un lenguaje de programación.
Pero esos dos lenguajes de programación son muy diferentes. El de Turing se trata más bien de lenguaje de máquina, el código “en crudo” formado por ceros y unos que se le suministra al CPU de un ordenador.
El invento de Turing de 1936 es, de hecho, un lenguaje de máquina demasiado complicado, que nadie querría utilizar hoy en día por ser muy rudimentario.
En su artículo de 1936, Turing afirma que una máquina tal debería ser capaz de efectuar cualquier cómputo mecánico que un ser humano pudiese realizar sin preocuparse demasiado por la formalización de la matemática en su conjunto.
Hilbert, en cambio, quiso ir hasta el fondo con la formalización y, por razones epistemológicas, generó una gran controversia sobre los fundamentos de la matemática. Y en un sentido su proyecto falló, básicamente por el trabajo de Gödel.
No obstante a ello, y luego de Turing, hoy utilizamos estas formalizaciones que son, nada más y nada menos, los lenguajes de programación que nos sirven para resolver un montón de otros problemas intermedios sin necesidad de llegar a las paradojas.
Es decir que el proyecto de Hilbert, para un propósito más mundano, funcionó perfectamente. Falló en el sentido teórico de querer llegar al límite de la formalización. Pero de hecho tuvo un éxito magnífico, no en la mecanización del razonamiento, sino en la mecanización de los algoritmos que han sido el gran avance tecnológico de nuestro tiempo : los lenguajes de programación para computadores.
La noción de Turing de una máquina que puede hacer lo que cualquier maquina calculadora puede hacer generó la idea actual de software, que se puede utilizar para un gran propósito general y en forma totalmente flexible.
Recapitulando un poco, en cierto sentido la computadora fue inventada para resolver un problema filosófico. Hilbert preguntó hace 100 años si se puede resolver toda pregunta matemática y no pudo hacerlo.
Es decir, las formalizaciones fracasaron en el mundo de las matemáticas, pero triunfaron en el mundo del cómputo.
No existe un sistema axiomático formal universal, teoría del todo, completo, pero sí existen lenguajes de programación universales, capaces de casi todo, de expresar casi cualquier algoritmo.
La pregunta que originó todo esto fue: ¿es la matemática mecánica o creativa? Gödel mostró que no puede ser mecánica, pero otros como Hilbert piensan que sí, porque ellos prefieren la certeza absoluta dada por el razonamiento mecánico al “misticismo” e incertidumbre de la creatividad.
¿Y en el medio de todo qué nos quedó? Nada menos que a Alan Turing y los ordenadores, que aparecen casi accidentalmente en la búsqueda de una respuesta a esta vieja pregunta filosófica.