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


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

Akademické: APL / J | Baltazar | Baltík | Karel | OCaml | Haskell | Scheme | Smalltalk | Logo | MATLAB | Mathematica | ML | Prolog

Ostatní: ALGOL | BASIC | Clipper | Forth | Goedel | Limbo | Miranda | Modula-2 / Modula-3 | MUMPS | PL/1 | Simula 67 | Whitespace