Introducción a la Programación Lógica y sus Aplicaciones

Clase 10 de 21Curso de Historia de la Programación: Lenguajes y Paradigmas

Resumen

La programación lógica es un paradigma declarativo que expresa los objetivos como una colección de afirmaciones o reglas acerca de los resultados y restricciones en lógica matemática. Entre sus áreas de aplicación encontramos el NLP (Procesamiento de lenguaje natural), la recuperación de información en bases de datos y aplicaciones matemáticas.

Cláusulas de Horn

La programación lógica se basa en las Cláusulas de Horn. Estas son preposiciones definidas por predicados, donde tenemos un hecho (algo que damos por sentado) y tenemos uno o varios predicados. Lo correcto sería tener por lo menos 2, para poder determinar si algo es verdadero o falso, también se les conoce como cuerpo/body. Las cláusulas de Horn están relacionadas con las tablas de verdad.
Cláusula de horn

H= Hecho/Head of the rule.
P= Predicado/Body

Ejemplo de cláusula de Horn

Podemos decir que es verdadero que está nevando en la ciudad, C es el nombre de la ciudad. Si está lloviendo y hace frío, entonces es verdadero que está nevando. Y, por el contrario, si quisiéramos negar que está lloviendo, pero hace frío, entonces es falso que está nevando. Esto tiene una estrecha relación con las tablas de verdad.

nevando(C) ← lluvia(C), frío(C)

Origen de la programación lógica

La programación lógica viene de los años 60, cuando Cordell Green propuso el uso de cláusulas en programas a finales de los 60. El lenguaje Prolog impulsó este paradigma. Otros lenguajes lógicos son Alf, Fril ,Mercury, Oz ,Visual Prolog y XSB.

No es muy frecuente el uso de programación lógica en la industria. Se usa más en investigación y ámbitos académicos.

Ejemplos de Prolog

Este es un ejemplo de “hola mundo” en Prolog. Nótese que al final se imprime true.

% Hola mundo

?- write('Hello World!'), nl
> Hello World!
> true

En el siguiente ejemplo vemos como le indicamos que hay personas que hablan un lenguaje, hacemos la evaluación de la persona 1 con la persona 2 y cuál es el resultado. Luego hacemos también la evaluación, preguntando “Quién habla francés” El resultado retornado debería ser “Juan”.

speaks(juan, french)
speaks(isabel, english)
speaks(eduadro, french)
speaks(eduardo, english)

talkswith(Person1, Person2) :-
speaks(Person1, L),
speaks(Person2, L),
Person1 \= Person2

?- speaks(Who, French)

Conclusión

La programación lógica es un paradigma utilizado sobre todo en entornos académicos. Se basa en el uso de Cláusulas de Horn, y tiene una relación estrecha con las tablas de verdad.

Contribución creada por: Ciro Villafraz con los aportes de Valentina Barrios.