Powstał w latach 50' na MIT. Autor: John McCarthy. Powstał w wyniku zamierzenia, żeby język programowania był uporządkowany (!). Chodziło o pewien rygorystyczny język, w którym nie byłoby zbyt dużo dowolności. Powstał język programowania oparty na teorii matematycznej funkcji rekurencyjnych Church'a. Czynnikiem rozwojowym dla LISP były początki badań nad sztuczną inteligencją. LISP był pod ręką i doskonalono go pod kątem sztucznej inteligencji. Wszystkie struktury zdecydowano się implementować w oparciu o listy {LISt Processing). Zaczęły powstawać także procesory LISPowe, dostosowane do przetwarzania struktur listowych w pamięci. Wszystko razem komponowało się w sprawnie działającą całość. W efekcie, LISP jeszcze przed narodzinami PROLOGu stał się językiem dominującym w dziedzinie Al.
Na poziomie podstawowym języka nie ma procedur sprawnego przeszukiwania przestrzeni rozwiązań. Wypracowano natomiast odpowiednie biblioteki zawierające procedury przeszukiwania wprzód, w tył i mieszane. Zastosowanie bibliotek umożliwia sprawne kodowanie zagadnień sztucznej inteligencji. Dla porównania, mechanizmy tego typu są wbudowane w PROLOGu na poziomie podstawowym.
Przykładowy program to prezentowany w zeszłym tygodniu program planowania akcji w świecie klocków.
plan (State, Goals, [], State) goals_achieved(Goals, State) plan(lnitState, Goals, Plan, FinalState) ...
PROLOG w porównaniu z LISP jest językiem deklaratywnym. Zapisujemy tylko to, co ma zostać rozwiązane, a nie to, jak ma to być rozwiązane.
1) 2) == zachodzi 1) gdy 2), lub 1) wynika z 2). Jest to odwrotny zapis implikacji,
odpowiednie reguły wnioskowania zapisujemy i dajemy je maszynie wnioskującej z wbudowanymi mechanizmami przeszukiwania, wnioskowania.
Przeszukiwanie grafu. Graf jest zdefiniowany przez szereg definicji łuków skierowanych:
arc(a,b).
arc(a,c).
arc(b,c).
arc(b,d).
arc(c,d).
Zdania prologowe są wyrażeniami rachunku predykatowego, pierwszego rzędu. Pierwszy symbol to symbol predykatowy p(a,b). p ma wartość T tylko wtedy, gdy zachodzi dla a i b.
Najprostsza konstrukcja w prologu jest to zdanie predykatowe (ważna kropka!). Bez kropki jest to tylko formuła (WFF - Weil Formed Formula). W taki sposób wpisane proste zdania rachunku predykatów to FAKTY.
Co to znaczy, że istnieje ścieżka w grafie? Jest to pewien związek: path (X, Y, [X,Y]):-arc(X,Y).
Pierwszy argument to początek ścieżki, drugi koniec, trzeci to sama ścieżka. Czyli jeżeli istnieje łuk od X do Y, To istnieje ścieżka o początku X, końcu Y, ścieżce [X,Yj.