O que é a linguagem Prolog?
Prolog é uma linguagem de programação de computador baseada na lógica. A maioria das linguagens de computador é baseada nas etapas necessárias para resolver um problema. A linguagem Prolog, por outro lado, é uma linguagem "declarativa" que indica os relacionamentos lógicos entre entidades. A maneira de resolver o problema é deixada para o computador. O nome Prolog vem do francês PROgrammation en LOGique, ou seja, PROgramming LOGic.
A seguir, um programa Prolog simples:
antepassado (F, C): - pai (F, C)
ancestral (P, Q): - pai (P, R), ancestral (R, Q)
pai (john, jim).
pai (jim, jerry).
pai (jerry, jason).
pai (jerry, jeff).
pai (jason, joshua).
O programa acima indica truques. Se F é pai de C, então F é um ancestral de C. Se P é o pai de uma pessoa R que é um ancestral de Q, P é um ancestral de Q. Vários fatos verdadeiros são dados, como john sendo o pai de jim. Se for feita uma pergunta problemática sobre se john é um ancestral de jeff, obteremos a resposta "Sim", conforme abaixo:
? - antepassado (john, jeff).
sim
Se os ancestrais de joshua forem de interesse, o programa exibirá todos os ancestrais da seguinte maneira:
? - ancestral (A, joshua)
A = jason
A = jerry
A = jim
A = john
Observe que nos dois casos acima, o programa não informou como fazer a avaliação. Por exemplo, não indicava se deveria começar na pessoa mais velha e seguir seu caminho até a pessoa mais jovem ou vice-versa. Também trocando as peças como abaixo:
ancestral (P, Q): - ancestral (R, Q), pai (P, R)
Não faria diferença para o programa, pois ambas as partes do lado direito precisam ser verdadeiras para que o lado esquerdo seja verdadeiro.
A linguagem Prolog, portanto, concentra-se nos relacionamentos, e não em como resolver o problema. Durante a execução do programa, o Prolog cria várias instruções verdadeiras, criando uma base de conhecimento. No exemplo acima, a base de conhecimento, em nenhuma ordem específica, teria ancestral (john, jim), ancestral (jim, jerry), ancestral (john, jerry), ancestral (jim, jason), ancestral (john, jason), e assim por diante. Essa base de conhecimento pode continuar crescendo à medida que o programa é executado e pode ser pesquisada com eficiência para obter soluções. A execução pode usar processamento paralelo, execução simultânea por vários computadores.
A linguagem Prolog é usada em várias áreas. Começou em sistemas voltados para idiomas naturais como o inglês; a linguagem natural é uma das áreas da inteligência artificial. A linguagem Prolog também é usada em matemática simbólica, incluindo álgebra. É usado para provar teoremas, em sistemas especialistas e em sistemas de controle, entre muitas outras aplicações.