Historie logického programování a Prologu
JIHOČESKÁ UNIVERZITA v ČESKÝCH BUDĚJOVICÍCH PEDAGOGICKÁ FAKULTA – KATEDRA INFORMATIKY
Od Aristotela k Prologu
František Sedláček 2010
František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích
Historie logického programování a Prologu
Obsah:
Logika .......................................................................................................................3 Výroková logika ......................................................................................................3 Predikátová logika ..................................................................................................4
Logické programování ............................................................................................4 Prolog .......................................................................................................................5 Použité zdroje ..........................................................................................................6
František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích
2
Historie logického programování a Prologu
Logika Počátky logiky nalézáme již v antických dobách, kdy se v podstatě logika začínala vyvíjet jako součást filozofie. Za zakladatele této matematické disciplíny jsou označováni řečtí filozofové Sokrates, Platon a především Aristoteles, nejvýznamnější žák Platona. Aristoteles se narodil v roce 384 př.n.l. a během života se věnoval nejrůznějším vědám. Mezi ně patřila i logika, které věnoval několik svých spisů jako například: O sofistických důkazech, O vyjadřování, První analytiky, Druhé analytiky, Topiky. Podle dochovaných fragmentů lze Aristotela označit přímo za zakladatele predikátové logiky, který tvořil jakousi opozici vůči stoikům, kteří v té době zkoumali výrokovou logiku. Od antických dob pak byla logika dlouhé věky částečně skryta ve stínu filozofie nebo též mylně uváděna jako její součást. Predikátová logika podle Aristotela byla vyučována ještě v 19. století. Již od 14. století se však začaly objevovat počátky symbolické logiky. Jedním z hlavních představitelů je britský matematik George Boole, který žil v 19. století, a podle kterého je pojmenována Booleovská algebra. Díky tomu je dnes považován za jednoho ze zakladatelů informatiky. Více pozornosti se logice začalo dostávat až na konci 19. a na začátku 20.století, kdy již mluvíme o matematické logice. Velikánem novodobé logiky je Kurt Goedel, matematik rakouského původu, který v roce 1930 publikoval větu o úplnosti predikátové logiky prvního řádu a hned rok poté učinil zásadní objev – forumuloval dvě důležité matematické věty o neúplnosti axiomatických formálních systémů s aritmetikou čímž ukončil dlouholeté snahy logiků i matematiků úplně formalizovat matematiku. Následující odstavce popisují význam termínů „výroková logika“ a „predikátová logika“.
Výroková logika Základem výrokové logiky je výrok. Výrokem můžeme označit každou oznamovací větu, u které lze jednoznačně určit její pravdivostní hodnotu. Z jednotlivých výroku je pak možné vytvářet složené výroky pomocí logických spojek. Existují čtyři základní logické spojky: negace, konjunkce, disjunkce, implikace a ekvivalence. I u složených výroků můžeme zkoumat jejich pravdivostní hodnotu. Ta se samozřejmě liší v závislosti na použitých logických spojkách.
František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích
3
Historie logického programování a Prologu Predikátová logika Predikátová logika je rozšířením výrokové logiky, která není plně schopna vyjadřovat složitější tvrzení o matematických strukturách. Místo termínu výrok se používá slovo predikát. Ten se může obecně týkat více objektů. Proto má každý predikát svou aritu což je vlastně počet objektů (parametrů), kterých se týká. Po dosazení konkrétních hodnot do predikátu se musí jednat o výrok. Příkladem predikátu může být Q(x, y) = x2 < y. Predikátový počet je navíc rozšířen o logické symboly – existenční kvantifikátor a obecný kvantifikátor.
Logické programování Pojem logické programování lze chápat jako používání predikátové logiky při konstrukci programů. Deklarativní programy se liší od imperativních tím, že programátor deklaruje, co je vstupem a výstupem, ale nezabývá se tím, jak vlastní výpočet probíhá. Řešení problému je rozděleno mezi programátora a tzv. dokazovač vět. Za počátek éry logického programování lze považovat přelom 50. a 60. let 20. století, kdy logika v programování začínala sloužit pro deklarativní reprezentaci přirozeného jazyka. V roce 1958 americký počítačový odborník John McCarthy vytvořil hypotetický počítačový program, který nesl název „Advice taker“ což byl jakýsi předchůdce programovacího jazyku Prolog. Z historického pohledu je vidět, že se logické programování vyvinulo v samostatnou vědní disciplínu díky vzrůstajícímu zájmu o umělou inteligenci. Tento zájem souvisel s povahou doby 50. a 60. let, kdy se přední světové velmoci snažily „dohnat budoucnost“ ve vznikajících počítačových oborech. Během 60. let se objevilo několik implementací deklarativních systémů odpovídajících na dotazy. Tyto systémy byly právě založeny na návrhu Advice takeru. Prvním významným jazykem logiky se stal Planner, který byl vyvinut technologickým institutem v Massachusetts v roce 1960. Šlo o jazyk pro logické programování, který však obsahoval výrazný procedurální přístup. Jeho nejznámější implementací se stal systém MicroPlanner, který byl jakousi podmnožinou jazyka Planner. Nasazení Micro-planneru se týkalo porozumění přirozenému jazyku pomocí Winogradova programu. Roky trvající debaty mezi zastánci deklarativního a procedurálního přístupu k programování podpořily rozvoj logického – deklarativního programování, které vyústilo až v moment, kdy byl na začátku 70. let vytvořen programovací jazyk Prolog. František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích
4
Historie logického programování a Prologu
Prolog Prolog je programovacím jazykem, který byl vytvořen pro účely logického programování s výrazným deklarativním přístupem. Prolog byl vytvořen francouzským informatikem Alainem Colmerauerem v roce 1972. Název „Prolog“ vymyslel jeho kolega Philippe Roussel. Slovo Prolog je tady zkratka francouzského výrazu „PROgrammation en LOGique“ (Programování v logice). Jazyk byl produktem spolupráce mezi Colmerauerem z Univerzity v Marseille a Robertem Kowalskim z Edinburské univerzity a vytvořen na základě procedurálního výkladu Hornovy klauzule právě podle Roberta Kowalského. Prolog byl původně navržen především pro zpracovávání přirozeného jazyka. Syntaxe jazyka byla vytvořena velice jednoduchá a snadno použitelná proto, že Prolog byl původně určen pro lingvisty a ne pro počítačové odborníky. Prolog je označován jako programovací jazyk 4. generace. Je založen na predikátové logice prvního řádu a běh programu je tvořen aplikací dokazovacích technik na zadané klauzule. Predikátová logika prvního řádu je taková predikátová logika, která dovoluje používání kvantifikovaných tvrzení typu „pro každé x platí...“, pokud je x individuem a ne predikátem. V roce 1981 se Prolog stal vývojovým jazykem pro japonský projekt počítačů 5. generace. To mělo za následek značný nárůst popularity Prologu. Logické programování se tak spolu s Prologem dostalo do širšího povědomí odborné veřejnosti. Prolog se začal postupně rozdělovat na různé větve jazyka, které se lehce lišily v syntaxi i sémantice. V roce 1983 vytvořil profesor David Scott Warren z Newyorské univerzity nový abstraktní model překladače Prologu nazvaný Warren Abstract Machine. Ten se stal základem pro moderní komerčně úspěšné generace překladačů jako LPA Prolog či Arity Prolog. V druhé polovině osmdesátých let představila svojí objektově-orientovanou variantu Prologu také, tehdy populární, kalifornská firma Borland. Jejich překladač nesl název Turbo Prolog a patřil do skupiny překladačů s vlastním propracovaným uživatelským rozhraním, kterým se firma Borland v osmdesátých letech proslavila. V roce 1995 se Prolog dočkal standardizace ISO, která definovala pevné jádro jazyka, které by nemělo být v různých mutacích měněno. V dnešní době je Prolog využíván pro tvorbu nejrůznějších expertních systémů, v oboru umělé inteligence a v počítačové lingvistice. Mezi nejznámější případy použití patří využití v NASA, kdy byl Prolog použit při vytvoření systému, který kosmonautům umožňuje ovládat počítač hlasem.
František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích
5
Historie logického programování a Prologu
Použité zdroje -
ROSEBRUGH, Robert. Mount Allison University [online]. 2005 [cit. 2010-12-20]. A brief history of Prolog. Dostupné z WWW:
.
-
FALTÝNEK, Lukáš. Linux expres [online]. 21.2.2006 [cit. 2010-12-20]. Prolog, Linux expres. Dostupné z WWW: .
-
Knol - a unit of knowledge [online]. 2009 [cit. 2010-12-27]. Middle history of logic programming. Dostupné z WWW: .
-
Wikipedia, the free encyclopedia [online]. 2010 [cit. 2010-12-27]. Logic programming. Dostupné z WWW: .
-
CS381 Discrete Structures/Discrete Mathematics Web Course Material [online]. 2008, last updated 2009-02-08 [cit. 2010-12-30]. Dostupné z WWW: .
-
CARRIGAN, PH.D., Cky J. On Truth [online]. 1996 [cit. 2010-12-29]. THE ORIGIN OF ARISTOTLE'S LOGIC. Dostupné z WWW: .
František Sedláček, Pedagogická fakulta Jihočeská Univerzita v Č.Budějovicích
6