Una de las preocupaciones ms tempranas de la computacin de los aos cincuenta fue la
posibilidad de hacer programas que llevaran a cabo demostraciones automticas de teoremas. As empezaron los primeros trabajos de inteligencia artificial que ms de veinte aos despus dieron lugar al primer lenguaje de programacin que contempla, como parte del intrprete, los mecanismos de inferencia necesarios para la demostracin automtica. Este primer lenguaje est basado en el formalismo matemtico de la Lgica de Primer Orden y ha dado inicio a un nuevo y activo campo de investigacin entre las matemticas y la computacin que se ha denominado la Programacin Lgica. Estos mecanismos de prueba fueron trabajados con mucho entusiasmo durante una poca, pero, por su ineficiencia, fueron relegados hasta el nacimiento de PROLOG, ocurrido en 1970 en la Universidad de Marsella, Francia, en el seno de un grupo de investigacin en el campo de la Inteligencia Artificial. La Programacin Lgica tiene sus orgenes ms cercanos en los trabajos de prueba automtica de teoremas de los aos sesenta. J. A. Robinson propone en 1965 una regla de inferencia a la que llama resolucin, mediante la cual la demostracin de un teorema puede ser llevada a cabo de manera automtica. La resolucin es una regla que se aplica sobre cierto tipo de frmulas del Clculo de Predicados de Primer Orden, llamadas clusulas y la demostracin de teoremas bajo esta regla de inferencia se lleva a cabo por reduccin al absurdo. Actualmente, la programacin lgica ha despertado un creciente inters que va mucho ms all del campo de la Inteligencia Artificial(IA) y sus aplicaciones. Los japoneses, con su proyecto de mquinas de la quinta generacin, dieron un gran impulso a este paradigma de programacin. Sin embargo, antes que ellos existan ya en Estados Unidos y en Europa grupos de investigacin en este campo, en pases como Inglaterra, Holanda, Suecia y, desde luego, Francia. A principios de los aos ochentas los japoneses comienzan a invertir recursos en un proyecto que denominan la Quinta Generacin, para lucrar con la buena fama de los 4GL. Con este ambicioso proyecto Japn busca obtener el liderazgo en computacin, usando como base la Programacin Lgica y la Inteligencia Artificial. PROLOG es un lenguaje de programacin declarativo. Los lenguajes declarativosse diferencian de los lenguajes imperativos o procedurales en que estn basados en formalismos abstractos (PROLOG est asado en la lgica de predicados de primer orden y LISP, otro lenguaje de programacin declarativa, en lambda calculo), y por tanto su semntica no depende de la mquina en la que se ejecutan. Las sentencias en estos lenguajes se entienden sin necesidad de hacer referencia al nivel mquina para explicar los efectos colaterales. Por tanto, un programa escrito en un lenguaje declarativo puede usarse como una especificacin o una descripcin formal de un problema. Otra ventaja de los programas escritos en lenguajes declarativos es que se pueden desarrollar y comprobar poco a poco, y pueden ser sintetizados o transformados sistemticamente.
PROLOG es un lenguaje de programacin muy til para resolver problemas que implican objetos y relaciones entre objetos.
Programacin declarativa.- La lgica de predicados, tal como est diseada en PROLOG, es un lenguaje de programacin declarativo, en donde el programador slo necesita preocuparse del Varela Gonzlez Vctor Hugo TAREA 9
conocimiento expresado en trminos del operador de implicacin y los axiomas. El mecanismo deductivo de la lgica de predicados llega a una respuesta (si esto es factible), utilizando un proceso exhaustivo de unificacin y bsqueda. A pesar que la bsqueda exhaustiva puede ser apropiada en muchos problemas, tambin puede introducir ineficiencias durante la ejecucin. Para lograr un cierto control en el proceso de bsqueda, PROLOG ofrece la operacin de corte, CUT. Cuando no se utiliza el CUT, PROLOG se convierte en un lenguaje puramente declarativo. Manejo de incertidumbre.- Una de las mayores desventajas de la lgica de predicados es que slo dispone de dos niveles de veracidad: verdadero y falso. Esto se debe a que la deduccin siempre garantiza que la inferencia es absolutamente verdadera. Sin embargo, en la vida real no todo es blanco y negro. En cierta forma el PROLOG ha logrado mitigar esta desventaja, permitiendo la inclusin de factores de certeza.
Razonamiento monotnico.- La lgica de predicados al ser un formalismo de razonamiento monotnico, no resulta muy adecuada para ciertos dominios del mundo real, en los cuales las verdades pueden cambiar con el paso del tiempo. El PROLOG compensa esta deficiencia, proporcionando un mecanismo para remover los hechos de la base de datos. Por ejemplo, en TURBO PROLOG se tiene la clusula retractall. Inteligencia Artificial: La resolucin de juegos y la planificacin as como la construccin de agentes inteligentes constituyen amplios campos que abarca la rama de la Inteligencia Artificial. Esto nos aporta una gran ventaja a la hora de realizar el desarrollo de la aplicacin una vez analizado el problema y diseada su solucin.
Sistemas Expertos: Los agentes y sistemas expertos se pueden considerar entes capaces de actuar como lo hara un experto humano en la resolucin de un determinado problema. Pueden percibir el ambiente mediante sensores y actan sobre ese ambiente por medio de efectores. En los agentes hardware, los sensores son sustituidos por cmaras y telmetros y los efectores son reemplazados mediante motores. En los agentes software, las percepciones y acciones vienen a ser las cadenas de bits codificados.
Compiladores: La comprensin del lenguaje natural y la construccin de compiladores e intrpretes son campos de desarrollo muy adecuados para Prolog. En Prolog se puede especificar un autmata finito mediante tres hechos, simplemente. El predicado inicial, inicial(Q), es true si Q es el estado inicial. El predicado final(Q) es true si Q es el estado final. Y el predicado delta(Q, X, Q1) que funciona del siguiente modo: es true si el autmata cambia del estado Q al estado Q1 al recibir el smbolo X. El autmata recibe una cadena de smbolos del alfabeto S *. El autmata reconoce el lenguaje si comenz en el estado inicial y acab en el estado final tras seguir las transiciones especificadas por d.
Miscelnea: Prolog se puede adaptar a la resolucin de casi cualquier tipo de problema con gran facilidad. Aunque, en mi opinin, es ideal como lenguaje de implementacin de aplicaciones provenientes del campo de la Inteligencia Artificial.