Notasbit

Las mejores noticias de tecnología en un sólo lugar

Publicado por: UnoCero

Publicado en: 18/11/2015 11:10

Escrito por: Manuel López Michelone

Para quien quiera programar en Prolog…

Prolog (PROgramming in LOGic) es un lenguaje funcional, declarativo, que a diferencia de los lenguajes de programación imperativos, en este caso lo que hace es describir el problema y Prolog, a través de su mecanismo de inferencia (implementado por Robinson en 1968), da los resultados a la problemática definida. Parece magia en algún sentido porque ¿cómo puede ser que un programa mecánico llegue a una conclusión en base a inferencias? Pues no lo es tanto. Prolog usa hechos y reglas para llegar a conclusiones. Por ejemplo, podemos definir los siguientes hechos: padre(juan,manuel). padre(pedro,manuel). En este caso leemos “manuel es el padre de juan” y “manuel es el padre de pedro”. ¿Cómo podríamos hacer la inferencia evidente de que son hermanos? Muy fácil, creando la siguiente regla: hermanos(X,Y) :- padre(X,Z), padre(Y,Z), X=\=Y. Lo cual se lee: X y Y son hermanos SI el padre de X es Z, el padre de Y es también Z y X no es Y. Tenemos que aclarar esto último -que X no es Y- pues sino, el programa reportaría que juan es hermano de sí mismo o que pedro es hermano de sí mismo, lo cual lógicamente no tiene sentido. Y quizás estamos abreviando (demasiado) lo que puede hacer Prolog, pero la idea es ésa: poder hacer inferencias y llegar a resultados. Es interesante aclarar que en un lenguaje como estos, muchas veces caemos en el no determinismo, es decir, no podemos saber qué clase de respuestas entregará el programa y si éste entregará acaso …

Top noticias del 18 de Noviembre de 2015