¿Qué es el lenguaje Prolog?
Prolog es un lenguaje de programación de computadoras que se basa en la lógica. La mayoría de los lenguajes informáticos se basan en los pasos necesarios para resolver un problema. El lenguaje Prolog, por otro lado, es un lenguaje "declarativo" que indica las relaciones lógicas entre entidades. La forma de resolver el problema queda en la computadora. El nombre Prolog proviene del francés PROgrammation en LOGique, es decir, PROgramming LOGic.
El siguiente es un programa simple de Prolog:
ancestro (F, C): - padre (F, C)
ancestro (P, Q): - padre (P, R), ancestro (R, Q)
padre (juan, jim).
padre (jim, jerry)
padre (jerry, jason).
padre (jerry, jeff).
padre (jason, joshua).
El programa anterior indica truismos. Si F es el padre de C, entonces F es un antepasado de C. Si P es el padre de una persona R que es un antepasado de Q, entonces P es un antepasado de Q. Luego se dan una serie de hechos verdaderos, como John es el padre de Jim. Si se plantea una pregunta problemática sobre si John es un antepasado de Jeff, obtenemos la respuesta "Sí" de la siguiente manera:
? - antepasado (john, jeff).
si
Si los antepasados de Joshua son de interés, entonces el programa muestra todos los antepasados de la siguiente manera:
? - ancestro (A, joshua)
A = jason
A = jerry
A = jim
A = juan
Tenga en cuenta que en ambos casos anteriores, el programa no dijo cómo hacer la evaluación. Por ejemplo, no indicó si comenzar en la persona mayor y llegar a la persona más joven o viceversa. También intercambiando las partes de la siguiente manera:
ancestro (P, Q): - ancestro (R, Q), padre (P, R)
No haría ninguna diferencia para el programa, ya que ambas partes del lado derecho deben ser verdaderas para que el lado izquierdo sea verdadero.
El lenguaje Prolog se enfoca así en las relaciones y no en cómo resolver el problema. Durante la ejecución del programa, Prolog acumula una serie de declaraciones verdaderas, creando una base de conocimiento. En el ejemplo anterior, la base de conocimiento, sin ningún orden en particular, tendría ancestro (john, jim), ancestro (jim, jerry), ancestro (john, jerry), ancestro (jim, jason), ancestro (john, jason), y así. Esta base de conocimiento puede continuar desarrollándose a medida que se ejecuta el programa, y se puede buscar de manera eficiente para obtener soluciones. La ejecución puede usar procesamiento paralelo, ejecución simultánea por múltiples computadoras.
El lenguaje Prolog se usa en varias áreas. Comenzó en sistemas diseñados para idiomas naturales como el inglés; El lenguaje natural es una de las áreas de la Inteligencia Artificial. El lenguaje Prolog también se usa en matemática simbólica, incluido el álgebra. Se utiliza para probar teoremas, en sistemas expertos y en sistemas de control, entre muchas otras aplicaciones.