This site is being addressed mainly to students with which I have classes therefore will be written only in Polish.

PROLOG (KRÓTKIE WPROWADZENIE) 

 

1. Istota programowania deklaratywnego

Istota programowania deklaratywnego polega na opisie problemów, na zasadzie co zrobic a nie jak zrobić. Nie tworzy sie zatem jawnego opisu algorytmu, a konstruuje się jedynie wiedzę o problemie wyrażoną w języku logiki. W ten sposób znika rola sterowania, dzięki czemu program staje sie w wielu przypadkach bardziej zwięzy i czytelny. Stąd programowanie deklaratywne jest przeciwieństwem programowania imperatywnego, które kojarzymy z programowaniem algorytmicznym lub proceduralnym. Przykładami tego ostatniego podejścia są języki takie jak Pascal, C, C++, C# i wiele innych.

N. Wirth ujął kiedyś klasyczne programy (imperatywne) w postaci wyrażenia:

Program = struktury danych + sterowanie,

R. Kowalski ujmuje to w odniesieniu do programowania w logice (a jego przykładem jest język Prolog) następująco:

 
Algorytm = Logika + sterowanie
 zatem:    
Program = struktury danych + logika.
 
Programowanie w logice (PL) obok funkcyjnego (np. języki Lisp, F#) stanowią przykłady podejści deklaratywnego.
 
 
 2. Krótki słownik terminów

Lista – struktura danych składająca się z dowolnej liczby elementów. Struktury listowe mogą być tworzone dynamicznie w trakcie pracy programu, czym różnią się od tablic. Wyróżnia się dwa podstawowe rodzaje struktur listowych: jednokierunkowe i dwukierunkowe.

Term – w programowaniu w logice – stała, zmienna lub struktura, będąca argumentem predykatu lub struktury.

Wnioskowanie wstecz – (ang. Top-down inference) rodzaj wnioskowania stosowanego w Prologu, w którym proces dedukcji rozpoczyna się od celu i zmierza poprzez reguły do faktów. W tym sensie jest odwrotnością wnioskowania do przodu. Podstawowym krokiem wnioskowania jest tu reguła modus tollens.

Nawracanie – (ang. Backtracking) – mechanizm zastosowany w Prologu, umożliwiający odnajdywanie wszystkich dających się logicznie uzasadnić rozwiązań danego problemu.