Surányi Gábor Mihály:
OCCAM fordítóprogram készítése Prolog nyelven
(TDK dolgozat összefoglalója a jelentkezéshez)
Századunk végére rendkívül sokféle programozási nyelv alakult ki. Hasonló tulajdonságaik alapján generációkba soroljuk őket. Manapság a negyedik generáció terjed, hiszen ezek elégítik ki a jelenlegi elvárásokat. Az ide tartozó eszközökre – hiszen itt már nem csak “csupasz” fordító- és szerkesztőprogramokról van szó, hanem komplett környezetekről – jellemző, hogy igyekeznek használójukat megszabadítani a programozás gyakran ismétlődő feladataitól. (A “hogyan” helyett a “mit” lebeghet folyamatosan a programozó előtt.) Ez természetesen együtt jár bizonyos objektum-orientáltsággal ill. grafikus vizuális felülettel. Hogy ennek ellenére miért foglalkozunk a régebbi nyelvekkel is? Egyszerűségük valamint bizonyos feladatokhoz való jó alkalmazhatóságuk miatt.
Az occam nyelv olyan számítógépek (ún. transzputerek) elterjedt nyelve, amelyekben a feladatot sok-sok (jelentősen hasonló ill.) azonos, konkurensen működő elemi rész oldja meg. A nyelv az egységek kommunikációját is beépítetten támogatja. A gyakorlati megvalósításokban általában több transzputert alkalmaznak és ezek igen gyakran céleszközök, tehát a fejlesztés platformja ettől eltér.
A TDK témájául szolgáló projektben egy olyan fordítóprogram megvalósítását tűztük ki célul, amelynek mind saját, mind célplatformja is Win32 lenne. Ezt a Microsoft operációs rendszereinek elterjedtsége, a valódi párhuzamos futtatás lehetősége (CPU-skálázhatóság) és a rendelkezésre álló magasszintű kommunikációs és szinkronizációs lehetőségek indokolták. A rendszer lehetőségeit C/C++-ból használjuk, ez adja a futási idejű környezetet. (A jelenlegi megvalósításban a fordítóprogram kimenete is C++ nyelvű.)
A Prologot pedig szintén a feladathoz választottuk: mivel nem más, mint Programming in logic, érvényesül benne a “WHAT rather than HOW”. Beépített visszalépéses keresése és mintaillesztése kitűnően alkalmazható a forrás elemzésére. Az implementáció során egy – eredetileg a 2000. évvel kapcsolatos feladatok megoldására kifejlesztett – programcsomag elemzőjét idomítottuk az occamhez. Ha pedig a forrás faszerkezete Prologban áll elő, miért ne ezen a magasszintű nyelven generáljuk a kódot?
Az elkészült szoftver – reményeink szerint – jól alkalmazhatónak bizonyul a leendő és a jelenlegi szoftver-mérnökök számára az occamben való programozás elsajátításához, továbbá a későbbiekben a valós élet feladatainak gyorsabb és hatékonyabb megoldására.