Hola Platzinauta. 👋
Te comparto mis apuntes para que #NuncaParesDeAprender. 👀✍
¿Qué es la programación lógica?
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.
Áreas de aplicación
- NLP (Procesamiento de lenguaje natural)
- Recuperación de información en BBDD
- Aplicaciones matemáticas
Cláusula de Horn
La programación lógica se basa en las clausulas de Horn las cuales 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.
H= Hecho/Head of the rule.
P= Predicado/Body
Ejemplo:
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© ← lluvia©, frío©
Origen
Se origina en los 60’s cuando Cordell Green propuso el uso de cláusulas en programas a finales de los 60.
Prolog impulsó este paradigma.
Lenguajes
- Prolog
- Alf
- Fril
- Mercury
- Oz
- Visual Prolog
- XSB
No es muy frecuente este paradigma de programación en la industria, se usa más para investigación y cuestiones académicas, dada su naturaleza.
% Hola mundo
?- write('Hello World!'), nl
> Hello World!
> true
En este ejemplo podemos ver 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)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?