====== Laboratorium z języka Prolog ====== ===== Cele ===== * Przedstawienie najważniejszych elementów programowania w Prologu. * Adresatami są głównie studenci kierunków informatycznych. * Laboratorium jest realizowane w 2 częściach: 6 zajęć na najważniejsze tematy + 4-6 zajęć na tematy fakultatywne --- //[[gjn@agh.edu.pl|Grzegorz J. Nalepa]] 2008/11/03 12:24// ===== Autorzy ===== - lab 1-6 (c) 2005-2009 by [[gjn@agh.edu.pl|Grzegorz J. Nalepa]] - poprawki, uwagi, rozszerzenia, wstępna wiki-fikacja, lab 6-7 (c) 2007-2009 by [[wojnicki@agh.edu.pl|Igor Wojnicki]] - poprawki, pomysły, reorganizacja (c) 2008-2009 by Weronika Furmańska i Piotr Hołownia ===== Przypowieść ===== Jak odpowiedzą programiści pytani o drogę: * Piszący w C++: Pójdzie pan do tego skrzyżowania, skręci pan w prawo, potem prosto, prosto, prosto, w lewo i już pan jest na miejscu. * Piszący w Pascalu: Pójdzie pan do tego skrzyżowania, skręci pan w prawo w ulice: Mickiewicza, dalej ulica: Prusa, a potem skręci pan w lewo w: Żeromskiego i już pan jest na miejscu. * Piszący w Asemblerze: Pójdzie pan do tego kiosku, kupi pan bilet za złotówkę, pójdzie pan na tamten przystanek i wsiądzie pan do autobusu, wysiądzie na trzecim przystanku, przejdzie pan przejściem podziemnym i już pan jest na miejscu. * Piszący w Prologu: Widzi pan tamten wysoki budynek z wielkim czerwonym szyldem? To tam. * Piszący w Lispie: Dojdzie pan do tego skrzyżowania, a dalej się pan zapyta. ===== Tematy ===== ==== Część główna ==== - [[.:prolog_lab:wprowadzenie|Wprowadzenie]] - [[.:prolog_lab:programy|Podstawy programowania]] - [[.:prolog_lab:listy1|Praca z listami (cz. 1)]] - [[.:prolog_lab:listy2|Praca z listami (cz. 2)]] - [[.:prolog_lab:reprezentacja_wiedzy|Reprezentacja wiedzy]] - [[.:prolog_lab:prolog_lab_metaprog|Meta programowanie]] ==== Część fakultatywna ==== * [[.:prolog_lab:prolog_lab_system|Integracja z systemem operacyjnym]] (**O**) * [[.:prolog_lab:prolog_lab_xpce|Tworzenie GUI w XPCE]] (**P**) * [[.:prolog_lab:prolog_lab_graphsearch|Planowanie tras przejazdu]] (**L**) * [[.:prolog_lab:prolog_lab_http|Integracja z HTTP/WWW]] (**H**) <- //uwaga: wymaga O// * [[.:prolog_lab:prolog_lab_dcg|Definite Clause Grammars]] (**D**) * [[.:prolog_lab:prolog_lab_semweb|Integracja z SemWeb]] (**S**) <- //przydatna wiedza z O (graphviz)// * [[.:prolog_lab:constraint_satisfaction_problems|Opisywanie problemów za pomocą ograniczeń]] (**C**) ---- Wersje robocze lab, dla zainteresowanych. * [[.:prolog_lab:prolog_lab_rdbms|Integracja z RDBMS]] (**R**) * ([[.:prolog_lab:prolog_lab_ansic|Integracja z C]] (C)) * [[.:prolog_lab:prolog_lab_java|Integracja z Java]] (**J**) <- //uwaga: wymaga O// ==== Prolog a uczenie maszynowe ==== * [[.:prolog_lab:ml:prolog_lab_uczenie|Podstawy uczenia maszynowego]] (**ML**) ===== Przydatne materiały ===== ==== Biblioteka programów w Prologu ==== W [[prolog:pllib:start|dostępnej tutaj]] bazie przykładów zebrano ponad 300 przykładów programów w Prologu ilustrujących różne techniki programistyczne i rozwiązania istotnych problemów. ==== Podręczniki wprowadzające ==== * [[http://www.ailab.si/ivan|I. Bratko]], //[[http://www.amazon.com/Programming-Artificial-Intelligence-International-Computer/dp/0321417461/ref=dp_ob_title_bk|Prolog Programming for Artificial Intelligence]]//, 4th ed, Addison-Wesley, 2011. * Dave Stuart Robertson, //[[http://www.dai.ed.ac.uk/groups/ssp/bookpages/quickprolog/quickprolog.html|Quick Prolog]]// * Patrick Blackburn, Johan Bos, Kristina Striegnitz, //[[http://www.learnprolognow.org/|Learn Prolog Now!]]// * J. R. Fisher, //[[http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/contents.html|Prolog Tutorial]]// * Colin Barker, //[[http://perso.orange.fr/colin.barker/lpa/lpa.htm|LPA Examples]]// ==== Książki o Prologu, SE, LP ==== * Dennis Merritt, //[[http://www.amzi.com/AdventureInProlog|Adventure In Prolog]]// * Dennis Merritt, //[[http://www.amzi.com/ExpertSystemsInProlog|Building Expert Systems in Prolog]]// * Ulf Nilsson and Jan Małuszyński, //[[http://www.ida.liu.se/~ulfni/lpp|Logic, Programming and Prolog]]// (2ed). * Michael Covington et. al., //[[http://web.ncf.ca/andre/publications/PPID.pdf|Prolog Programming in Depth]]//. ==== Kompilatory Prologu ==== * Jan Wielemaker et. al., [[http://www.swi-prolog.org|SWI-Prolog]] * Universidade de Porto, [[http://www.dcc.fc.up.pt/~vsc/Yap/|YAP Prolog]] * [[http://xsb.sourceforge.net/|XSB]] * Daniel Diaz, [[http://gnu-prolog.inria.fr|GNU-Prolog]] ==== Standardy pisania kodu w Prologu ==== * MICHAEL A. COVINGTON, ROBERTO BAGNARA, RICHARD A. O’KEEFE, JAN WIELEMAKER, SIMON PRICE, //[[http://www.ai.uga.edu/mc/plcoding.pdf|Coding guidelines for Prolog]]//, Cambridge University Press, 2011.