Rozdział 1
Już sama nazwa języka - Prolog - niesie w sobie informację o jego przeznaczeniu. Słowo „prolog” pochodzi bowiem od sformułowania programmation en logique co w języku francuskim oznacza właśnie programowanie w logice. Prolog został stworzony w 1971 roku przez Alaina Colmeraurera i Phillipe’a Roussela. Choć jego teoretyczne podstawy stanowi rachunek predykatów pierwszego rzędu, to jednak ogranicza się tylko do klauzul Horna (o czym więcej powiemy w rozdziale ??). Jeszcze w pierwszych latach XXI wieku był bardzo chętnie używany w wielu programach związanych z
• logiką matematyczną (automatyczne dowodzenie twierdzeń);
• przetwarzaniem języka naturalnego;
• symbolicznym rozwiązywaniem równań;
• sztuczną inteligencją;
• przechowywaniem i przetwarzaniem danych.
I choć powoli jego miejsce zajmują wygodniejsze narzędzia jak na przykład silniki regu-łowe (o czym powiemy w rozdziale ??), to wciąż stanowi wspaniały model dydaktyczny.
Najważniejszą i zarazem często najbardziej zaskakującą i zdumiewającą rzeczą związaną z Prologiem jest to, że
Pisanie programu w Prologu nie polega na opisywaniu algorytmu!
Jak to? Przecież od lat, z mozołem i w wielkim trudzie wpajano nam do głowy, że zanim zaczniemy pisać program to musimy ułożyć odpowiedni algorytm. Gdy się już tego nauczyliśmy i przyjęliśmy za pewnik, nagle okazuje się, że wcale tak nie musi być. Niestety bardzo trudno jest przestać myśleć algorytmicznie o problemie. Jest to silniejsze od nas, bo tak nas nauczono. Tym czasem w Prologu istotne jest coś zupełnie innego. Oto bowiem zamiast opisywać algorytmu, opisujemy obiekty związane z problemem i relacje pomiędzy tymi obiektami. Stąd właśnie Prolog często bywa określany jako język opisowy i deklaratywny. Oznacza to, że implementując rozwiązanie jakiegoś problemu nie podajemy jak go rozwiązać (jak to ma miejsce w imperatywnych językach programowania tj. C lub Java) ale określamy czego on dotyczy używając do tego faktów i reguł. Rolą Prologu jest wywnioskowanie rozwiązania na podstawie podanych przez nas informacji.
Programowanie w logice. Prolog ©2007-2009 by P. Fulmański (ostatnia modyfikacja: 18 maja 2009)