Logika towarzyszyła komputerom niemal od ich początku jako narzędzie
wyrażające ich własności i umożliwiające dowodzenie tych własności. Idea
użycia logiki jako samodzielnego języka programowania narodziła się nieco
poźniej: w latach siedemdziesiątych XX wieku. Można ją podsumować za pomocą
następujących ,,rownań'':
program = zbior aksjomatow obliczenie = budowanie dowodu wynikania pewnego
twierdzenia z tego zbioru aksjomatow
Pierwszy realizujący tę ideę system automatycznego dowodzenia twierdzeń został
nazwany Prologiem (od Programmation en Logic), od czasu jego powstania wiele
zespołow badawczych pracowało nad uczynieniem z Prologu rzeczywiście
przydatnego języka programowania, ktory umożliwiałby szybkie pisanie
efektywnych aplikacji związanych ze sztuczną inteligencją, badaniami
operacyjnymi, rozpoznawaniem językow naturalnych, translacją, automatycznym
dowodzeniem twierdzeń i bazami danych.
Podczas wykładu zostaną przedstawione teoretyczne podstawy programowania
logicznego (powiemy między innymi o takich zagadnieniach jak operacyjna,
teoriomodelowa i stałopunktowa semantyka programow logicznych), omowimy
rownież Prolog, ze wszystkimi jego cechami wykraczającymi poza ideę czystego
programowania w logice, umożliwiającymi pisanie efektywniejszych programow (w
tej części wykład będzie krotką powtorką i rozszerzeniem materiału uczonego na
Programowaniu oraz Metodach programowania). Sporo uwagi będzie poświęcone
pragmatyce programowania logicznego i jego przykładowym zastosowaniom (ze
szczegolnym uwzględnieniem sztucznej inteligencji).
Omowimy bazujące na Prologu języki Mercury (jedna z najszybszych mutacji
Prologa) oraz Goedel (jeden z wariantow Prologu z typami). Przedstawimy
roznież sposoby łączenia językow logicznych z obiektowymi, funkcjonalnymi,
wspołbieżnymi i imperatywnymi.
Omowimy rownież podstawy programowania z więzami, paradygmatu, ktory z jednej
strony sprawił, że programowanie logiczne zaczęło być używane w aplikacjach
przemysłowych (w dziedzinie badań operacyjnych), a z drugiej daje wielkie
możliwości pisania dużo efektywniejszych rozwiązań "łamigłowkowych" zadań, z
ktorymi mieliście do czynienia na pracowni z programowania.
Wykładowi będą towarzyszyć ćwiczenia połączone z pracownią.
**UWAGA** Wykład najprawdopodobniej będzie odbywał się co dwa lata, ostatnia
edycja była w roku akademickim 2005/2006.
**Wymagania:** Programowanie lub Metody programowania, Logika dla informatyk
ow