ProLog

De EcuRed
(Redirigido desde Prolog)
ProLog
Información sobre la plantilla

Lenguaje de programación lógico e interpretado.
CreadorAlain Colmerauer, Philippe Roussel
Lanzamiento inicialDécada del 70

ProLog. Lenguaje de programación diseñado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Los programas en ProLog responden preguntas sobre el tema del cual tienen conocimiento. ProLog es un lenguaje de programación especialmente indicado para modelar problemas que impliquen objetos y las relaciones entre ellos. Está basado en los siguientes mecanismos básicos: unificación, estructuras de datos basadas en árboles y backtracking automático. La sintaxis del lenguaje incluye la declaración de hechos, preguntas y reglas. La popularidad de este lenguaje se debe a su capacidad de deducción y además es un lenguaje fácil de usar por su semántica y sintaxis. Sólo busca relaciones entre los objetos creados, las variables y las listas, que son su estructura básica.

Contenido

Historia

Los inicios de la programación lógica se dan gracias a los primeros trabajos de inteligencia artificial. Los cuales originaron el primer lenguaje de programación que contempla los mecanismos de inferencia necesarios para la demostración automática de teoremas. El lenguaje de programación ProLog se originó del trabajo hecho por Robert A. Kowalski en la Universidad de Edinburgo (Escocia, Reino Unido) y Alain Colmerauer en la Universidad de Aix-Marseille (Francia) en los años 70. La investigación de Kowalski en el área de deducción automatizada, llevó al desarrollo con Colmerauer al uso formal de lógica como un lenguaje de programación. Kowalski proporcionó la base teórica y Colmerauer inició la programación de ProLog. Colmerauer y Philippe Roussel desarrollaron el primer intérprete, y David Warren de la Universidad de Edinburgh desarrolló el primer compilador ProLog. La mayoría de las implementaciones comerciales de ProLog usan la misma sintaxis desarrollada en Edimburgo. Su nombre proviene de las palabras en inglés Programming in Logics, que significan "programación lógica".

Descripción

ProLog es un lenguaje de programación simple, pero poderoso. Se basa en nociones matemáticas de relaciones de inferencia. Es un lenguaje declarativo e interpretado, esto quiere decir que el lenguaje se usa para representar conocimientos sobre un determinado dominio y las relaciones entre objetos de ese dominio.

Un programa en ProLog consiste de una base de hechos de relaciones lógicas y detalles que se cumplen para la aplicación. Dicha base de datos no tiene una estructura impuesta, ni un procedimiento o clase principal. Escribir un programa en ProLog consiste en declarar el conocimiento disponible acerca de los objetivos, además de sus relaciones y sus reglas. En lugar de correr en un programa para obtener una solución, se hace una pregunta, el programa revisa la base de datos para encontrar la solución a la pregunta. Si existe más de una solución, ProLog hace backtracking para encontrar soluciones distintas. El propio sistema es el que deduce las respuestas a las preguntas que se le plantean, dichas respuestas las deduce del conocimiento obtenido por el conjunto de reglas dadas. La ejecución de ProLog consiste en una búsqueda en profundidad de un árbol conteniendo todas las posibles soluciones. Para cada una de ellas se evaluará su validez. La estructura de un programa en ProLog es lógica y directa. Se explican cada una de sus partes y operadores disponibles a continuación.

Características del lenguaje ProLog

1) Basado en lógica y programación declarativa.
2) No se especifica cómo debe hacerse, sino qué debe lograrse.
3) Una característica importante en ProLog y que lo diferencia de otros lenguajes de programación, es que una variable sólo puede tener un valor mientras se cumple el objetivo.
4) El programador se concentra más en el conocimiento que en los algoritmos.
-¿Qué es conocido? (hechos, reglas)
-¿Qué preguntar? (Cómo resolverlo)
En ProLog, se llega a una solución infiriéndola desde algo ya conocido.

Predicados en ProLog

Los predicados son los elementos ejecutables en ProLog. En muchos sentidos se asemejan a los procedimientos o funciones típicos de los lenguajes imperativos. Una llamada concreta a un predicado, con unos argumentos concretos, se denomina objetivo. Todos los objetivos tiene un resultado de éxito o fallo tras su ejecución, indicando si el predicado es cierto para los argumentos dados, o por el contrario, es falso. Cuando un objetivo tiene éxito, las variables libres que aparecen en los argumentos pueden quedar ligadas. Estos son los valores que hacen cierto el predicado. Si el predicado falla, no ocurren ligaduras en las variables libres.

Se utilizan para expresar propiedades de los objetos, y relaciones entre ellos, predicados. En ProLog se conocen como hechos. Se debe tener en cuenta que:
-Los nombres de todos los objetos y relaciones deben comenzar con una letra minúscula.
-Primero se escribe la relación o propiedad: predicado
-Y los objetos se escriben separándolos mediante comas y encerrados entre paréntesis: argumentos.
-Al final del hecho debe ir un punto (".")

Variables

Las variables se utilizan para representar objetos cualesquiera del Universo u objetos desconocidos en ese momento, es decir, son las incógnitas del problema. Se diferencian de los átomos en que empiezan siempre con una letra mayúscula o con el signo de subrayado (_). Así, se debe ir con cuidado, ya que cualquier identificador que empiece por mayúscula, será tomado por ProLog como una variable. En una consulta simple, las variables nos pueden servir para que ProLog encuentre un dato. Por ejemplo: 'tiene' (persona, libro) devuelve en la variable 'persona' el nombre de la que tiene un libro (o de las personas que lo tienen, si hay más de una).

Estructura del programa

El hecho de programar en ProLog consiste en dar al ordenador un Universo finito en forma de hechos y reglas, proporcionando los medios para realizar inferencias de un hecho a otro. La programación en ProLog consiste en:

-Declarar algunos HECHOS sobre los objetos y sus relaciones.
-Definir algunas REGLAS sobre los objetos y sus relaciones, y
-Hacer PREGUNTAS sobre los objetos y sus relaciones.

Programa ProLog: Conjunto de afirmaciones (hechos y reglas) representando los conocimientos que poseemos en un determinado dominio o campo de nuestra competencia. La estrategia de resolución particular que utiliza ProLog es una forma de resolución de entrada lineal (árbol de búsqueda estándar). Para la búsqueda de cláusulas alternativas para satisfacer el mismo objetivo, ProLog adopta una estrategia de primero hacia abajo (recorrido del árbol en profundidad). Por todo esto, el orden de las cláusulas (hechos y reglas) de un determinado procedimiento es importante en ProLog, ya que determina el orden en que las soluciones serán encontradas. Una cláusula de Horn es una regla de inferencia lógica con una serie de premisas (cero, una o más), y un único consecuente. Las cláusulas de Horn son las instrucciones básicas del lenguaje de programación ProLog. La sintaxis de una cláusula de Horn en ProLog tiene el siguiente aspecto: dividir (X, Y):-par(X), suma (X,Y).

Enlaces externos

Fuentes