Prolog to język programowania komputerowego oparty na logice. Większość języków komputerowych opiera się na krokach niezbędnych do rozwiązania problemu. Z kolei język Prolog jest językiem „deklaratywnym”, który wskazuje logiczne relacje między bytami. Sposób rozwiązania problemu pozostawia się komputerowi. Nazwa Prolog pochodzi od francuskiego PROgrammation en LOGique, czyli PROgramming LOGic.
Poniżej znajduje się prosty program Prolog:
przodek(F, C) :- ojciec(F, C)
przodek(P, Q) :- ojciec(P,R), przodek(R,Q)
ojciec(Jan, Jim).
ojciec (Jim, Jerry).
ojciec (jerry, jason).
ojciec(Jerry, Jeff).
ojciec (jason, joshua).
Powyższy program wskazuje na truizmy. Jeśli F jest ojcem C, to F jest przodkiem C. Jeśli P jest ojcem jakiejś osoby R, która jest przodkiem Q, to P jest przodkiem Q. Następnie podaje się szereg prawdziwych faktów, takich jak John jest ojcem jima. Jeśli wtedy pojawi się problematyczne pytanie, czy John jest przodkiem Jeffa, otrzymamy odpowiedź „Tak” jak poniżej:
?- przodek(Jan, Jeff).
tak
Jeśli zainteresowani są przodkami Jozuego, program wyświetla wszystkich przodków w następujący sposób:
?- przodek(A, joshua)
A = jason
A = Jerry
A = jim
A = jan
Zwróć uwagę, że w obu powyższych przypadkach program nie powiedział, jak przeprowadzić ewaluację. Na przykład nie wskazywał, czy zacząć od osoby starszej, a następnie przejść do osoby młodszej, czy odwrotnie. Również zamiana części jak poniżej:
przodek(P, Q) :- przodek(R, Q), ojciec(P, R)
Nie miałoby to żadnego znaczenia dla programu, ponieważ obie te części po prawej stronie muszą być prawdziwe, aby lewa strona była prawdziwa.
Język Prologu skupia się zatem na relacjach, a nie na tym, jak rozwiązać problem. Podczas wykonywania programu Prolog buduje szereg prawdziwych stwierdzeń, tworząc bazę wiedzy. W powyższym przykładzie baza wiedzy, w dowolnej kolejności, miałaby ancestor(john, jim), ancestor(jim, jerry), ancestor(john, jerry), ancestor(jim, jason), ancestor(jan, jason), i tak dalej. Ta baza wiedzy może być rozbudowywana w miarę działania programu i można ją skutecznie przeszukiwać w celu uzyskania rozwiązań. Wykonanie może korzystać z przetwarzania równoległego, jednoczesnego wykonywania przez wiele komputerów.
Język Prolog jest używany w wielu obszarach. Zaczęło się w systemach nastawionych na języki naturalne, takie jak angielski; język naturalny jest jednym z obszarów Sztucznej Inteligencji. Język Prolog jest również używany w matematyce symbolicznej, w tym w algebrze. Jest używany między innymi do dowodzenia twierdzeń, w systemach ekspertowych i systemach sterowania.