Előszó
Ez a jegyzet a Deklaratív Programozás (korábban Programozási Paradigmák) tárgy logikai programozás részéhez készült oktatási segédanyag.
A logikai programozás (LP) alapgondolata, hogy programjainkat a (matematikai) logika nyelvén, állítások formájában írjuk meg. Míg a funkcionális nyelvek a matematikai függvényfogalomra, addig a logikai nyelvek a reláció fogalmára építenek. A legismertebb logikai programozási nyelv a Prolog (PROgramming in LOGic, azaz programozás logikában).
A logikai programozás ötlete Róbert Kowalskitól származik [3|. Az első Prolog megvalósítást Alain Colmerauer csoportja készítette el a Marseille-i egyetemen 1972-ben [7]. A Prolog Magyarországon is hamar elterjedt, talán azért is mert igény volt egy ilyen magasszintű programozási nyelvre, és a funkcionális nyelveknek nem volt olyan kultúrája, mint pl. az Egyesült Államokban. Az 1975-ben Szeredi Péter által elkészített Prolog interpreter [5] felhasználásával több tucat, igaz többnyire kísérleti jellegű Prolog alkalmazás készült Magyarországon [8]. A Prolog hatékony megvalósítási módszereinek kidolgozása Dávid H. D. Warren nevéhez fűződik, aki 1977-ben elkészítette a nyelv első fordítóprogramját (az ún. DEC-10 Prolog rendszert), majd 1983-ban kidolgozta a máig is legnépszerűbb megvalósítási modellt, a WAM-ot (Warren Abstract Machine) [9].
1981-ben a japán kormány egy nagyszabású számítástechnikai fejlesztési munkát indított el, az ún. „ötödik generációs számítógéprendszerek" projektet, amelynek alapjául a logikai programozást választották. Ez nagy lökést adott a terület kutató-fejlesztő munkáinak, és megjelentek a kereskedelmi Prolog megvalósítások is. Az 1980-as években Magyarországon is több kereskedelmi Prolog megvalósítás készült, az MProlog [1] és a CS-Prolog nyelvcsalád [2]. Bár a japán ötödik generációs projektben nem sikerült elérni a túlzottan ambiciózus célokat, és ez a 90-es évek elején a logikai programozás presztízsét is némileg megtépázta, mára a Prolog nyelv érett és világszerte elfogadott nyelvvé vált. 1995-ben megjelent a Prolog ISO szabványa is, és egyre több ipari alkalmazással is találkozhatunk.
Az elmúlt 10 évben a Prolog mellett újabb LP nyelvek is megjelentek, pl. az elsősorban nagyméretű, ipari alkalmazásokat megcélzó Mercury nyelv, továbbá a CLP (Constramt Logic Programming) nyelvcsalád, amely az operációkutatás ill. a mesterséges intelligencia eredményeit hasznosítva erősebb logikai következtetési mechanizmust biztosít.
A jegyzetben az ISO szabványt is támogató SICStus Prolog rendszert használjuk. A jegyzet első felében bemutatott nyelvi elemek azonban mind olyanok, amelyek más, az ún. Edinburgh-i tradíciót követő megvalósításokban is mind megtalálhatók. A hallgatók rendelkezésére bocsátott SICStus Prolog mellett így gyakorlásra használható a szabadon terjeszthető SWI Prolog illetve a GNU Prolog is.
Ezeknek a megvalósításoknak a kézikönyvei elérhetők a világhálón, mint ahogy számos további információforrás is. Ezekről az 1.1 táblázat ad áttekintést. A Prolog magyar nyelvű irodalma meglehetősen szerény, az MProlog rendszert ismertető |10] illetve a Prolog eset-tanulmányokat tartalmazó [4] áll rendelkezésre. Egy rövid Prolog fejezet szerepel a Mesterséges Intelligencia c. monográfiában is [6].
Vissza