Prolog (programovací jazyk)
Z Wikipedie, otevřené encyklopedie
Prolog je logický programovací jazyk. Název Prolog pochází z francouzského programmation en logique („logické programování“). Byl vytvořen Alainem Colmerauerem v roce 1972 jako pokus vytvořit programovací jazyk, který by umožňoval vyjadřování v logice místo psaní počítačových instrukcí. Prolog patří mezi tzv. deklarativní programovací jazyky, ve kterých programátor popisuje pouze cíl výpočtu, přičemž přesný postup, jakým se k výsledku program dostane, je ponechán na libovůli systému.
Prolog je využíván především v oboru umělé inteligence a v počítačové lingvistice (obzvláště zpracování přirozeného jazyka, pro nějž byl původně navržen). Syntaxe jazyka je velice jednoduchá a snadno použitelná pravě proto, že byl původně určen pro počítačově nepříliš gramotné lingvisty.
Prolog je založen na predikátové logice prvního řádu; konkrétně se omezuje na Hornovy klauzule. Běh programu je pak představován aplikací dokazovacích technik na zadané klauzule. Základními využívanými přístupy jsou unifikace, rekurze a backtracking.
[editovat] Základní principy
Programování v Prologu se výrazně liší od programování v běžných procedurálních jazycích jako např. C. Základem Prologu je databáze faktů a pravidel, nad kterými je možno klást dotazy formou tvrzení, u kterých Prolog zhodnocuje jejich pravdivost (dokazatelnost z údajů obsažených v databázi).
Například lze do databáze uložit fakt, že Monika je dívka:
dívka(monika).
Poté lze dokazatelnost tohoto faktu prověřit otázkou, na kterou Prolog odpoví yes (ano):
?- dívka(monika). yes.
Také se lze zeptat na všechny objekty, o kterých je známo, že jsou dívky:
?- dívka(X). X = monika; no.
Pravidla (závislosti) se zapisují pomocí implikací, např.
syn(A,B) :- rodič(B,A), muž(A).
Tedy: pokud B je rodičem A a zároveň je A muž, pak A je synem B.
[editovat] Příklad
Typickou ukázkou základů programování v Prologu jsou rodinné vztahy.
sourozenec(X,Y) :- rodič(Z,X), rodič(Z,Y). rodič(X,Y) :- otec(X,Y). rodič(X,Y) :- matka(X,Y). muž(X) :- otec(X,_). žena(X) :- matka(X,_). matka(marie,monika). otec(jiří,monika). otec(jiří,marek). otec(michal,tomáš).
[editovat] Externí odkazy
- SWI-Prolog – implementace Prologu pod GNU licencí
- Strawberry Prolog – implementace Prologu
- Tutoriál k Prologu (anglicky, Caly Poly Pomona)
- Bartákův tutoriál k Prologu (anglicky, KTIML MFF UK)
- Úvod do programování v Prologu (česky, KSVI MFF UK)
- Manuál Prologu s řešenými příklady (česky, FIM UHK)
Programovací jazyky | |||
ABAP | Ada | AWK | Assembler | C | C++ | C# | COBOL | ColdFusion | Clean | D | Eiffel | Erlang | Flex | Fortran | JADE | Java | JavaScript | Lisp | Lua | Oberon | Object Pascal | Objective-C | Pascal | Perl | PHP | Python | REALbasic | REBOL | RPG | Ruby | SQL / PL/SQL | Tcl / Tcl/Tk | Visual Basic / VBScript | VB.NET | Visual FoxPro
|