¿Qué significa exactamente una “computadora de quinta generación”?

Habitualmente se dice que las computadoras “no piensan”, tarea reservada al sistema máquina-programa-programador. Sin embargo, el periodismo suele difundir informaciones acerca de la llamada “quinta generación de computadoras”, de las que podría esperarse tal grado de perfección que las harían realmente “inteligentes”. ¿Qué significa exactamente una “computadora de quinta generación”? ¿Qué se puede esperar de ella?

José Luis Graña, Capital Federal

lector

Para contestar esta pregunta debemos definir, ante todo, qué entendemos por “máquina”. Por lo común cuando una persona no es especialista en el área y habla de una máquina, se refiere a la máquina física, a lo que en la jerga se conoce como hardware, es decir, el conjunto de circuitos y dispositivos que componen un computador. El concepto de máquina, para un especialista, es algo diferente. Una máquina, desde este punto de vista, es el conjunto formado por el hardware y ciertos programas (software) que el especialista “ve” en el nivel en que está trabajando. Por ejemplo, un matemático que cuenta con un computador “cargado” con un programa para resolver ecuaciones puede “ver” al conjunto como una máquina que la resuelve. En cambio, un jefe de personal que utiliza en el mismo computador un programa de liquidación de haberes “ve” una máquina que efectúa liquidaciones. Supongamos ahora que alguien construye, utilizando el programa que resuelve ecuaciones, un nuevo programa para calcular trayectorias de proyectiles; dicha persona “verá” una maquina distinta, formada a su vez por otras tres: la física, la que resuelve ecuaciones y la que calcula trayectorias.

Una de las razones que se aducen más frecuentemente para afirmar que las máquinas no piensan es el hecho de que la máquina física es muy tonta, pues sólo puede ejecutar un reducido conjunto de operaciones muy elementales y alguien debe cargar en ella un programa, es decir, una receta que la instruya sobre qué operaciones debe realizar. Sin embargo, ésta no es una razón válida, dado que es plausible imaginar que un programador muy inteligente podría escribir un programa sumamente complicado que hagq que la máquina (formada por el hardware y este programa) piense. Invocar esta razon es semejante a afirmar que el ser humano es un mecanismo poco relevante dado que está formado por una combinación de átomos que ni siquiera incluye a todos los de la tabla periódica.

La pregunta debe ser, entonces, ¿se puede escribir un programa tal que, en conjunto con un hardware determinado, constituya una máquina que piense? Dicho metafóricamente, ¿podría Dios escribir un programa que haga que una máquina piense? La formulación es excesivamente ambigua. ¿Qué entendemos en este contexto por pensar? Evidentemente la respuesta escapa no sólo al ámbito de esta explicación, sino también al de la informática. Sin embargo, podemos arriesgar, no una definición de pensar, sino la connotación que generalmente se da a este término cuando se lo aplica a máquinas. Diremos, a modo de propuesta, que “pensar” es poder resolver cualquier problema. Un problema es, aquí, una relaciónentre datos y resultados. Por ejemplo, la frase “¿cuáles son las raíces del polinornio x2 -a = 0 ?” es el enunciado de un problema. En este contexto resolverlo significa dar la expresión de una o varias funciones que permitan calcular los resultados. En nuestro ejemplo, las funciones son las soluciones.

A la luz de estas definiciones restringidas de “pensar” y “problerna”, la pregunta en cuestión se puede expresar de la siguiente manera: ¿es posible escribir un programa tal que, dado cualquier problema, pueda construir y computar sus soluciones? Esta es una pregunta sin ambigüedades y aun aquellos que no acepten las definiciones restringidas de los términos “pensar? y “problema” concordarán en que, si la respuesta a la misma es negativa, lo seguirá siendo cualesquiera sean las definiciones en cuestión.

Reformulada la pregunta del lector, para poder darle una respuesta deberemos analizar unos pocos conceptos básicos de la teoría de la computación.

En la década de 1930, quince años antes de la aparición del computador, el matemático inglés A.M. Turing diseñóuna máquina capaz de computar cierto tipo de funciones, las llamadas funciones recursivas. A los fines de la explicación que sigue no es importante entender de qué funciones se trata y basta saber que una máquina de Turing computa sólo un cierto tipo de funciones que denominaremos Turing-computables. Aquí máquina significa “mecanismo abstracto de computación” y no algo palpable con teclas, circuitos, etc.

¿Cuál es el interés de una máquina de Turing para el problema que nos ocupa? Este deriva de unatesis enunciadaporel matemático estadounidense A. Church y que establece: cualquiera sea el mecanismo de computación que se construya, éste tendrá la misma potencia de computación que una máquina de Turing, es decir, sólo podrá computar funciones Turing ?computables. Las consecuencias de la tesis de Church son terminantes: sea cual fuere la máquina que construyamos mediante un programa y un hardware cualquiera, sólo computará funciones Turing-computables.

Esto no significa que no tenga sentido construir máquinas complejas, ya que a nadie se le ocurriría liquidar sueldos o resolver intrincadas ecuaciones mediante una máquina de Turing. De la misma manera la química orgánica tiene un status epistemológico propio aun cuando los fenómenos con los que trata puedan ser explicados en términos de partículas subatómicas.

El valor de la máquinade Turing y de latesis de Church es el de imponer un límite teórico alapotencia de computación de una máquina, del mismo estilo que algunos que encontramos en la física, como, por ejemplo, la imposibilidad de alcanzar la velocidad de la luz o de violar el principio de la conservación de la carga eléctrica. En términos de nuestra metáfora: si Dios escribiera un programa tan complicado como quisiera, por más sofisticado que fuera el mismo, sólo podría computar funciones Turing-computables. Decíamos que existen funciones no Turing-computables; por lo tanto aquellos problemas que sólo tengan soluciones no Turing?computables no son tratables mediante ninguna máquina.

El alcance de la tesis de Church es más grande de lo que podría parecer. Supongamos que construimos una máquina capaz de computar todas las funciones Turingcomputables, es decir, capaz de computar todos los programas escribibles. Aun así, esta máquina no sería capaz de resolver cualquier problema que posea soluciones Turing-computables. De la misma manera, la biblioteca de Babel del cuento homónimo de Borges contiene en sus volúmenes todas las palabras que pueden ser escritas mediante el alfabeto arábigo (y por lo tanto contiene toda la literatura universal, tanto la ya escrita como aquella por escribirse) y sin embargo uno no puede leer en ella Hamlet sin saber a priori qué dice Hamlet. En el caso de una máquina, el problema reside en lo que ha dado en llamarse “decidibilidad”: la capacidad de establecer por medios mecánicos si un objeto tiene o no una propiedad dada. Como el lector ya estará sospechando, existen propiedades no decidibles. En particular, la propiedad de un problema de tener soluciones Turing-computables es no decidible. Aun cuando se pudiera escribir un programa capaz de producir automáticamente soluciones de problemas (programas) para aquellos que admitan soluciones Turing-computables, no podría escribirse un programa capaz de decidir ante cualquier problema si este admite o no soluciones Turing-computables.

De lo dicho aquí podemos deducir que la respuesta a la pregunta: ” ¿se puede escribir un programa que, en conjunto con un hardware determinado, constituya una máquina tal que dado cualquier problema pueda construir y computar una solución para el mismo?” es no. Más aún, no importa cuánto restrinjamos nuestra definición de “pensar”, dicho pensamiento, si se trata de “pensamiento automático”, estará limitado por la Turing-computabilidad. Si Dios decidiera escribir un programa “inteligente”, dicha “inteligencia” quedaría restringida por la misma razón. Contestada esta parte de la pregunta pasemos a tratar, ahora, la segunda, es decir, ¿qué es una computadora de quinta generación? Para poder hacerlo deberemos hablar un poco sobre programación. Todo programa es una descripción de una función Turing-computable, o de un conjunto de ellas. Sin embargo, ya vimos que existen diferencias importantes entre un programa escrito directamente utilizando los comandos de una máquina de Turing y uno escrito utilizando los “comandos” de una máquina que resuelve ecuaciones complejas. De la misma manera, a pesar de que todo programa es simplemente la descripción de funciones que son Turing-computables, existen varios? paradigmas ” de programación. Para nuestro propósito no necesitaremos discutir todos los existentes y nos limitaremos a tratar de explicar en qué consiste el paradigma imperativo y el inferencial.

Un programa imperativo es un conjunto de órdenes para una máquina dada que hacen que ésta realice una computación determinada . Por ejemplo, un programa imperativo escrito en un lenguaje ad hoc, que lea pares de números a,b e imprima a si a es mayor que b, en caso contrario imprima b, de ser iguales imprima a=b y pare inmediatamente luego de leer un b nulo, tendría la forma:

* Lea a,b
* [Si a es mayor que b entonces imprima a, si no
Si b es mayor que a entonces imprima b, si no imprima
a = b y lea a, b]
* Repita lo encerrado entre corchetes hasta que b = 0
* Pare

Como puede observarse, el programador que escribió este programa tuvo que inferir todas las posibles contingencias a partir de la relación “menor o igual” entre dos números y escribir luego un programa para computarlas en una máquina determinada.c

En cambio, un programa inferencial consta de un conjunto de aserciones. La máquina para la que este programa fue escrito provee: una regla de inferencia, una estrategia de aplicación de esa regla y un mecanismo (denominado de “unificación”) que permite aplicar la regla de inferencia a las aserciones. Aun siendo esta descripción por demás simplificada, el lector no iniciado se estará preguntando en este punto: ¿qué cosa es un programa inferencial? Un ejemplo aclarará la cuestión.

Supongamos que la regla de inferencia sea el conocido “modus ponens” (en realidad se utiliza otra regla conocida como “principio de resolución”, pero a los fines de esta explicación no es necesario complicar más las cosas). El mismo afirma “p q ^ p entonces q”. En otras palabras, si la proposición p implica la proposición q, y se da p, entonces se dará q. Por ejemplo, el razonamiento: “si la temperatura es inferior a cero grado el agua se congelará; la temperatura es inferior a cero grado; entonces el agua se congelará” es un ejemplo de modus ponens. Supongamos que nuestro conjunto de aserciones está conformado solamente por las aserciones: “si la temperatura es inferior a cero grado el agua se congelará” y “la temperatura es inferior a cero grado” . Si el mecanismo de unificación de la máquina permite identificar a p con “la temperatura es inferior a cero grado”, a q con “el agua se congelará” y a p q con “si la temperatura es inferior a cero grado el agua se congelará”, es evidente que dicha máquina podrá, aplicando el modus ponens, inferir que “el agua se congelará”. Dado que este ejemplo es muy simple no necesitamos aplicar ninguna estrategia de búsqueda de aserciones.

Como ya dijimos, tanto un programa inferencial como uno imperativo sólo son descripciones de funciones Turingcomputables. Sin embargo, parece ser más simple escribir una colección de aserciones que llevar a cabo todas las inferencias necesarias para poder escribir un programa no inferencia).

Uno de los obstáculos con que se encuentra la programación inferencia) es la velocidad de los computadores. La aplicación de una estrategia de búsqueda, un mecanismo de unificación y la regla de inferencia, constituye un proceso mucho más complejo que el simple hecho de tomar la próxima instrucción y ejecutarla, que es todo lo que tiene que hacer una máquina no inferencia). Podría pensarse, entonces, que la solución es hacer un gran esfuerzo tecnológico y aumentarla velocidad de los computadores hasta que sea posible utilizar programación inferencia) con comodidad. E1 problema reside en el hecho de que la velocidad de los computadores está limitada teóricamente por la velocidad de los electrones en un conductor, y la velocidad de cálculo de los computadores actuales está muy cerca de ese límite.

¿Significa esto que debemos resignarnos a no poder utilizarla programación inferencial más allá de los límites de nuestros laboratorios? No necesariamente. Existe otra forma de aumentar la velocidad de un computador. Un computador clásico es una máquina secuencial, es decir realiza una operación después de otra. Supongamos que el tiempo que insume una máquina determinada en sumar dos números es t1; entonces,para efectuarla suma a + b + c + d, que gracias a la propiedad asociativa de esta operación podemos expresar como [(a+b) +c)] +d,insumirá [(t1) + t1] + t1 = 3 t1. Supongamos ahora que contamos con una máquina compuesta por dos máquinas en paralelo capaces de realizar dos operaciones al mismo tiempo. Si reescribimos nuestra suma de la forma (a+ b ) + (c+ d ) podremos hacer que la operación (a+ b ) sea ejecutada por la primera máquina; al mismo tiempo la segunda ejecutará (c+ d ) y luego cualquiera de ellas sumará ambos resultados. El tiempo insumido será, obviamente, t1+ t1 = 2t1 (en realidad existe siempre un pequeño tiempo suplementario insumido por operaciones tales como dar control a una máquina, pero en esta discusión podemos ignorarlo). Es evidente que ” paralelizar” la computación reduce el tiempo de cálculo,aunque desgraciadamente no todoslos problemas son tan fácilmente paralelizables como la computación de una suma y actualmente se sabe poco sobre cómo programar en paralelo.

Otro problema que presenta la utilización extendida e intensiva de computadores estriba en la dificultad de comunicarse con ellos. Se hace, entonces, necesario desarrollar una “interfaz” hombre-máquina sencilla, que apoyada en paradigmas potencialmente poderosos de programación -como por ejemplo, el inferencial- permitan la utilización del computador por técnicos en lugar de especialistas altamente capacitados. Por otra parte, una interfaz “amigable” como la pretendida debe basarse en iconos, esquemas de programas, gráficos, comunicación oral con el computador.

La propuesta de los expertos japoneses para la quinta generación de computadores es el desarrollo de máquinas inferenciales basadas en computadores altamente paralelizados y que provean una interfaz extremadamente amigable con el hombre. El lanzamiento del proyecto de quinta generación a principios de los años ochenta fue uno de los ejemplos más interesantes de ” marketing ” científico. Por entonces se estaba en plena tercera generación de computadores y en crisis respecto de la producción de programas. Dado que la mayor concentración de industrias de alta tecnología y de centros de investigación de alto nivel en disciplinas afines con la informática se encontraba en los Estados Unidos, cualquier resultado de investigación sobre el tema era un aporte a la ciencia y la tecnología informáticas norteamericanas, aunque dicho resultado hubiera sido conseguido en Zurich, Tokio, Buenos Aires o Entebe. Los estrategas tecnológicos japoneses pensaron, entonces, que la única forma de competir como país en la carrera informática era investigando la informática de la próxima década, ya que la de hoy sería producto de quizás diez años de investigación. Así, lanzaron su propuesta de la quinta generación para una década después: quinta, por el hecho de que seguramente habría de existir una cuarta en el ínterin. En 1980, cuando se lanzó el proyecto de quinta generación -como, en menor escala, hoy muchos de los fundamentos del proyecto estaban poco estudiados. Se sabía, por ejemplo, muy poco sobre la programación inferencial, menos aún paralela, o sobre el desarrollo de una comunicación hombre máquina amigable, etc. Sin embargo, la propuesta fue un éxito como paradigma: en la actualidad no importa de qué nacionalidad sea el científico que logre un resultado importante sobre alguno de los temas que hemos mencionado para que dicho resultado se convierta en un aporte al proyecto japonés de quinta generación.

Finalmente, podrá parecer que una máquina inferencial de muy alta velocidad, dotada de una interfaz basada en el lenguaje natural (y no en uno abstruso, compuesto por fórmulas lógicas),en íconos e imágenes gráficas, en el análisis y la síntesis de la voz humana, en suma, una máquina de quinta generación, piensa. Sin embargo, no debemos olvidar que aun así la máquina llevará el estigma de la tesis de Church y que, por lo tanto, estará limitada por la Turing-computabilidad.

Armando Haeberer

Escuela Superior Latinoamericana de Informática.

Artículos relacionados