AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Amiga na PC     Amiga Forever  

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


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )