PROGRAMOVÁNÍ V LOGICE - PROLOG
Vznikl bez velkého rozruchu v roce 1973 v Marseille jako prostředek který
měl usnadnit dorozumění s počítačem v přirozeném jazyce, ve francouzštině. Během
sedmdesátých let se rozšířil na řadu evropských univerzit. Vedle specialistů na
matematickou informatiku jej začali používat i v humanitních oborech, jazykovědě
psychologii a medicíně. Akademické prostředí však neopustil. Senzaci a velkou
vlnu zájmu vyvolala až v osmdesátých letech skutečnost, že byl vybrán jako jazyk
centrální jednotky v japonském projektu počítačů páté generace. Dnes je znám
také svým uplatněním ve výuce podporované počítačem v expertních systémech a v
oboru umělé inteligence.
Mezi uživateli osobních počítačů není tento jazyk příliš znám, přestože
existují implementace na téměř všechny typy osobních počítačů. Tento nezájem je
zřejmě způsoben jistou odlišností od konvenčních jazyků jako je Pascal, C,
Basic. Presto však Prolog není jen zajímavou hračkou, o čemž vás možná přesvědčí
následující fakta.
Prolog je výsledkem mnohaleté výzkumné práce na poli tzv. logického
programování, jak plyne již z názvu Prolog: PROgramming in LOgic. Na poli
expertních systémů a umělé inteligence dosahuje oproti jiným programovacím
jazykům nesporných výsledků - programy jsou kratší, přehlednější, vytvoření
programu jehož běh vyžaduje nesrovnatelně kratší čas. Dále bylo v Prologu
napsáno několik známých expertních systémů jako např. APES, ESP/Advisor a Xi.
Z uvedených faktů vyplývá, že zabývat se alespoň chvíli Prologem nemusí být
neužitečné. Naopak programování v Prologu může být zdrojem zábavy, nebo naopak
přímou cestou k řešení problémů v ostatních jazycích neřešitelných.
Čím se tedy Prolog liší? Na rozdíl od většiny programovacích jazyků po nás
Prolog nechce vědět přesně slovo od slova co má udělat, ale zajímají ho definice
objektů s nimiž bude pracovat. Dále ho zajímají vztahy mezi objekty a podle
jakých pravidel má při řešení problému postupovat. Pak stačí zadat problém a
Prolog ho vyřeší (samozřejmě jen pokud je to na základě jeho vědomostí možné).
Zní to slibně avšak bez předchozí zkušenosti s Prologem značně nepředstavitelně.
Mým cílem však není naučit vás programovat v Prologu, chci jen jemně upozornit
na programovací jazyk, který možná jednou splní sen všech uživatelů - mít v
počítači nejen pomocníka, ale i inteligentního partnera.
Jak se tedy v Prologu vlastně programuje? Jde o dialog mezi uživatelem a
počítačem. Můžeme se nacházet v jednom ze dvou módů, a to buď módu vkládání, kdy
počítači vysvětlujeme a on bedlivě sleduje, nebo módu otázek, kdy se uživatel
ptá a počítač odpovídá. Ještě podrobně rozlišeno: při programování provádíme tři
hlavní činnosti: zadávání faktů o objektech a vztazích mezi nimi, definování
pravidel podle nichž lze nové fakty o objektech a vztazích odvodit a kladení
otázek o objektech a jejich vztazích.
Jako první zadáváme do našeho programu fakty. Rozeznáváme v podstatě dva druhy
faktů a to, že objekt má nějakou vlastnost (např. fakt, že Petr je muž se zapíše
muž (Petr)), a nebo že více objektů je v nějakém vztahu (relaci). Fakt, že n
objektů je v nějaké relaci vyjádříme zápisem: název relace(1.objekt,
2.objekt,..., n.objekt).
Dalším krokem je definice pravidel, podle nichž Prolog odvodí přímo nezadané
vztahy. Pomocí pravidel a podmíněných výrazů můžeme ovlivňovat rozhodování a
průběh programu. Používá se zde řada operátorů jako např.: : pro implikaci, ","
logické and, a == přiřazení.
Kladení otázek je poslední fází programování. Otázce předchází znak "?" a
spouští prohledávání a vyhodnocování dat v programu. Odpovědí může být slovo
"no" (Prolog neuspěl, nebo v datech tento fakt či relace není uvedena) slovo
"yes" (relace či fakt je znám a je pravdou), nebo seznam možných odpovědí.
Nyní bychom si měli objasnit, jak prolog vlastně přemýšlí. Prolog pracuje podle
našich otázek Otázka většinou požaduje současné splnění určitých podmínek,
kterým se Prolog snaží vyhovět. Přitom využívá informací, které jsou obsaženy v
databázi. Fakt může otázku zodpovědět okamžitě, pravidlo ji pouze převede na
několik podotázek. Nemůže-li být podmínkám vyhověno, dojde k navrácení, které
sestává z nového přezkoumání toho, co bylo dosud uděláno, a ze snahy najít jiné
řešení, které již bude vyhovovat podmínce, na níž dříve snaha ztroskotala.
V Prologu je možno naprogramovat např. inteligentní zápisník, který bude
zpracovávat zápisky a dávat je k dispozici, aktivně připomínat doby jednání a
navrhovat pořadí činností. Nebo může umožnit komunikaci se systémem v běžné řeči
- je možno dotazovat se např.: Kdy jsem naposledy použil program DeluxePaint
apod.
Prolog je jazykem v němž se může programátor soustředit na to, co chce
naprogramovat a ne na problém jak to má naprogramovat, kam uložit výsledky atd.
Samozřejmě nebylo možné vás v tomto článku naučit programovat v Prologu, ale
doufám, že se u tohoto jazyka někdy shledáme. Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|