Prolog programok fordítási idejű transzformációja

OData támogatás
Konzulens:
Dr. Szeredi Péter
Számítástudományi és Információelméleti Tanszék

Összefoglaló

A diplomaterv témája Prolog programok fordítási idejű transzformációja.

A programok fordítási idejű transzformációját annak érdekében végezzük, hogy egy tömörebb és átláthatóbb kódból egy azonos működésű, bonyolultabb, de hatékonyabb (tehát gyorsabban futó) programváltozat álljon elő. Diplomatervemben erre a célra a széles körben használt részleges kiértékelés technikáját alkalmazom.

A részleges kiértékelés egy tetszőleges programozási nyelvre általánosan alkalmazható algoritmus, aminek két bemenete van: egy program és annak néhány bemenő adata, és egy kimenete, ami egy (úgynevezett fennmaradó) program. A részleges kiértékelő által előállított fennmaradó program az eredeti program maradék bemeneti adatával ugyanazt eredményezi, mint az eredeti program az összes bemenettel.

Dolgozatomban a Prolog nyelvre vonatkozó részleges kiértékelést egy korábban kidolgozott ún. Inline modul segítségével valósítom meg.

Diplomatervemben először bemutatom a Prolog nyelvet, majd a részleges kiértékelés általános tulajdonságait és Prologra való alkalmazhatóságát. Ezután ismertetem a Prolog nyelvhez korábban készített Inline modul nevű segédprogramot, illetve megvizsgálom, hogy az mennyiben alkalmas a fordítási időben történő részleges kiértékelés támogatására. Bemutatom, hogy milyen előfeldolgozás szükséges az Inliner használata előtt ahhoz, hogy az elő tudja állítani a részlegesen kiértékelt programváltozatot.

Ezt követően specifikálom a részleges kiértékelés támogatására szolgáló ParEval modult, aminek a neve az angol partial evaluation (részleges kiértékelés) kifejezésre utal. A részleges kiértékelés pontos algoritmusának megadása és a támogatandó részleges kiértékelések kijelölése után a részleges kiértékelést visszavezetem a korábban ismertetett Inline modul funkcióira.

A diplomatervben ezek után a programfejlesztés főbb lépéseit bemutatva ismertetem a megvalósítás menetét, a felmerült problémákat és az alkalmazott megoldásokat. Végül értékelem az eredményül kapott modult és bemutatom működését.

Letölthető fájlok

A témához tartozó fájlokat csak bejelentkezett felhasználók tölthetik le.