Che cos'è il linguaggio Prolog?
Prolog è un linguaggio di programmazione basato sulla logica. La maggior parte dei linguaggi informatici si basa sui passaggi necessari per risolvere un problema. Il linguaggio Prolog, d'altra parte, è un linguaggio "dichiarativo" che indica le relazioni logiche tra entità. Il modo per risolvere il problema è lasciato al computer. Il nome Prolog deriva dal francese PROgrammation en LOGique, ovvero PROgramming LOGic.
Quello che segue è un semplice programma Prolog:
antenato (F, C): - padre (F, C)
antenato (P, Q): - padre (P, R), antenato (R, Q)
padre (john, jim).
padre (jim, jerry).
padre (jerry, jason).
padre (jerry, jeff).
padre (jason, joshua).
Il programma sopra indica verità. Se F è padre di C, allora F è un antenato di C. Se P è il padre di una persona R che è un antenato di Q, allora P è un antenato di Q. Vengono quindi forniti alcuni fatti reali, come John è il padre di Jim. Se poi viene posta una domanda sul problema se John è un antenato di Jeff, otteniamo la risposta "Sì" come di seguito:
? - antenato (john, jeff).
sì
Se gli antenati di Giosuè sono interessanti, il programma visualizza tutti gli antenati come segue:
? - antenato (A, joshua)
A = jason
A = jerry
A = jim
A = john
Si noti che in entrambi i casi precedenti, il programma non ha spiegato come eseguire la valutazione. Ad esempio, non ha indicato se iniziare dalla persona anziana e arrivare alla persona più giovane o viceversa. Anche scambiando le parti come di seguito:
antenato (P, Q): - antenato (R, Q), padre (P, R)
Non farebbe alcuna differenza per il programma, poiché entrambe le parti sul lato destro devono essere vere affinché la parte sinistra sia vera.
Il linguaggio Prolog si concentra quindi sulle relazioni e non su come risolvere il problema. Durante l'esecuzione del programma, Prolog crea una serie di affermazioni vere, creando una base di conoscenza. Nell'esempio sopra, la base di conoscenza, in nessun ordine particolare, avrebbe antenati (john, jim), antenati (jim, jerry), antenati (john, jerry), antenati (jim, jason), antenati (john, jason), e così via. Questa base di conoscenza può continuare ad accumularsi durante l'esecuzione del programma e può essere cercata in modo efficiente per ottenere soluzioni. L'esecuzione può utilizzare l'elaborazione parallela, l'esecuzione simultanea da più computer.
Il linguaggio Prolog è utilizzato in diverse aree. È iniziato con sistemi orientati alle lingue naturali come l'inglese; il linguaggio naturale è una delle aree dell'intelligenza artificiale. Il linguaggio Prolog è anche usato nella matematica simbolica, inclusa l'algebra. È usato per dimostrare teoremi, in sistemi esperti e in sistemi di controllo, tra molte altre applicazioni.