Prolog
HISTORIA
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. Su nombre proviene de las palabras en inglés Programming in Logics, que significan "programación lógica".
CARACTERISTICAS
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.
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.
El patrón de programación lógica:
Algoritmo + lógica + control
La programación lógica involucra:
El uso de hechos y reglas y la construcción de deducciones para procesar consultas.
EJEMPLOS
Construir en Prolog consultas con operadores AND(,), OR(;) y NOT(not) de la siguiente forma:
legusta(pepe,pesca).
legusta(maria,bailar).
legusta(ana,pesca).
legusta(pepe,musica).
legusta(maria,musica).
legusta(ana,bailar).
Se pueden realizar las siguientes preguntas sobre la base de información:
- ¿Le gusta la música a Pepe y a Maria? :
?-legusta(pepe,musica),legusta(maria,musica).
- ¿Le gusta bailar a Pepe o a Maria le gusta la música?:
?-legusta(pepe,musica);legusta(maria,musica).
- ¿Le gusta bailar a Pepe y a Maria no le gusta la música?:
?-legusta(pepe,musica),not(legusta(maria,musica)).
legusta(juan,dinero)
alto(juan)
viaja(juan,Madrid,tren)