Logikai és funkcionális programozás
Deklaratív programozási nyelvek
A programozási nyelveket általánosan fel lehet osztani imperatív és
deklaratív nyelvekre. Az imperatív programozási nyelvek -- például a
PASCAL, a C, FORTRAN -- esetében a számítógépnek minden
utasítást a programozónak kell megadnia. A deklaratív programok
esetében "magasabb szintű" programokat írunk. Vagyis, az immár
klasszikus szófordulattal élve, nem a feladat elvégzésének
hogyan-jával törődünk, hanem azt programozzuk, hogy MIT
szeretnénk a programmal elvégeztetni.
Ilyen programnyelveket általános feladatokra írni nehéz. A kurzus során
két programozási paradigmával ismerkedünk, melyekkel jól-definiált
feladatok osztályát lehet hatékonyan megoldani - azaz programozni.
Logikai programozás
A logikai programozás esetében a programokat relációkkal
specifikáljuk. A program futása az logikai következtetésen
alapszik.
A logikai programozás alapjai a tények és az ezeket jellemző
szabályok, melyeket együttesen tudásbázisnak nevezünk.
Programozás ebben a környezetben olyan
lekérdezések
megalkotása, melyek adott felhasználói kérdésre felelnek. Például
keressük azon személyeket, melyeknek
nincsenek ősei,
azaz az adatbázisban nincsenek predikátum, mely szülőt rendel az illető
személyhez (lásd
első feladatcsoport).
Funkcionális programozás
A funkcionális programozásban minden entitás függvény. A
program legfőbb jellemzője, hogy nincsenek benne változók - ez
nagyon megkönnyíti az illető programozási nyelven írt programok
helyességének a bizonyítását illetve megkönnyíti azt, hogy modulokból
bizonyítottan helyes programokat rakjunk össze.
A funkcionális programozás alap-tulajdonsága, hogy minden
entitás függvény. Egy programban előforduló konstansok is zéró-változós
függvényként léteznek.
Mivel a funkcionális nyelven írt programok rendkivül megbízhatóak, a
nagy kockázatú rendszereknél (pl. a párizsi metró irányító rendszerénél)
használják nagy előszeretettel.
A kurzus során a funkcionális programozás főbb jellemzőit ismertetem -
Horváth Zoltán jegyzeteire alapozva.
Az előadások során írt rövidke szösszenetek illetve egy korábbi feladatlap megtalálható alább:
A feladatok programozásánál igyekezzünk
tiszta és érthető
komment-eket írni és értelmezhető neveket adni a predikátumoknak. Egy
angol nyelvű útmutatót írt
Michael Covington, a
PDF formátum letölthető:
PDF
-
Logikai laborfeladatok:
-
Funkcionális feladatok:
A jegy a laborgyakorlatok és félév-végi laborvizsga eredménye.
A végső jegy:
-
laborfeladatokból (50%) és
-
félév-végi laborvizsgából (50%-a) áll.
A vizsgán való megjelenés feltétele a laborfeladatok leadása - ezek
alatt a logikai és funkcionális feladatcsoportok leadását értem: mindegyik feladatcsoportból 60
százalékot.
Vizsgaidőpont: 2010 január 16, 14
óra.
- Logikai programozás
Az SWI-prolog kompilátor és interpreter. A program honlapja: http://www.swi-prolog.org.
Install-programok:
Hasznos file-ok:
-
Hasznos editor Windows alá:
prolog_edit
-
A linux alatt az (X)emacs használható editornak, a prolog.el file-al indíthatjuk a
programot prolog módban.
- Funkcionális programozás
A Clean funkcionális programozási nyelv a hollandiai Nijmegen
egyetem fejlesztése. A program honlapja: CLEAN. Install-programok:
Levélcím: Lehel _dot_ Csato _at_ cs _dot_ ubbcluj _dot_ ro
Program = adatstruktúra + algoritmus