Szépkúti István: A LISP programozási nyelv értelmező programjának megvalósítása C nyelven
[ Translate ]
1. BEVEZETÉS
Vizsgamunkám egy LISP értelmezőprogram C nyelven való megvalósításával foglalkozik.
Miért esett a választásom éppen a LISP-re, erre a nálunk kevésbé elterjedt nyelvre? Erre próbálok választ adni a következőkben.
A LISP (LISt Processing language - lista feldolgozó nyelv) a mesterséges intelligencia kutatásának legrégebbi, máig jelentős szerepet látszó nyelve. A nyelvet az ’50-es évek végén a Massachusetts Institute of Technology munkatársai hozták létre John McCarthy vezetésével. Tervezésénél alapvető szempont volt, hogy:
- olyan nyelvet hozzanak létre, amely szimbolikus kifejezésekkel végzett műveletekre alkalmas;
- a LISP létrejöttét a számítógépes algebrai problémák megoldási igénye is ösztönözte (pl.: matematikai kifejezéseket formálisan differenciáló program, stb.);
- és nem utolsó sorban, hogy egy következtetésekre képes, „Advice taker” (Tanácsadó) nevű programot készítsenek.
John McCarthy egyébként az ALGOL 60 kidolgozásában is részt vett, pedig a két nyelv olyannyira különböző, hogy Jean E. Sammet (az IBM egyik vezető munkatársa) 1970 táján még így osztályozta a programozási nyelveket: „A programozási nyelveket két csoportra oszthatjuk: az egyik csoportba tartozik a LISP, a másikba az összes többi nyelv.”
A LISP interpreter az adatokat és a programokat egységesen (S-kifejezés formájában) tárolja. Így LISP programok létrehozhatnak és végrehajthatnak más LISP programokat (erre egy egyszerű példát be is mutatok a 2.2.3.-as fejezetben), vagy a LISP programok önmagukat is módosíthatják.
A mesterséges intelligencia kutatáson belül a számítógépes nyelvészetben hosszú ideig a LISP volt az egyeduralkodó programozási nyelv. Komoly vetélytársa csak a - 70-es évek végén megjelent - PROLOG nyelv. A PROLOG ugyan nem tekinthető a LISP leszármazottjának, de átvette a LISP-ből a lista fogalmát.
A mesterséges intelligencia egy régi, Turingtól származó definíciója: „Intelligens a gép akkor, ha két terminál között párbeszéd folyik, és az ember nem tudja eldönteni, hogy a két terminál közül melyik a gép.”
Egy - ilyen értelemben - intelligens program készítése volt a célja Joseph Weizenbaumnak, amikor megírta ELIZA nevű programját 1964-ben. Ennek egy némileg módosított változata futtatható IBM PC-n is muLISP-ben, DOCTOR néven.
A számítógéppel segített tervezésre használható AutoCAD rendszer hatékonyságát új parancsok bevezetésével növelhetjük. Ezt az AutoLISP segítségével tehetjük meg.
John Allen-nek, az Anatomy of LISP című könyv szerzőjének véleménye szerint az algoritmusok és az adatstruktúrák leírásának legtermészetesebb módja a LISP használata.
Sok szakember úgy gondolja, hogy az elkövetkező években az applikatív nyelvek - mint pl. a LISP - felé fordul az érdeklődés, mert ezek a nyelvek alkalmasabbak az új, olcsó hardware által nyújtott hatalmas számítási képesség kiaknázására. Az imperatív nyelvek ugyanis nem teszik lehetővé, hogy a számítógép párhuzamos számítási lehetőségeit kihasználjuk.
Az utóbbi években tereztek és forgalomba hoztak olyan számítógépeket, amelyeknek hardware felépítése a LISP nyelv szerkezetéhez alkalmazkodik.
A LISP nyelvnek számtalan, egymástól többé-kevésbé eltérő nyelvjárása van, sőt még szabvány sem létezik rá, ellentétben sok más nyelvvel. Ezért vizsgamunkámban alapvetően Zimányi Magdolna - Kálmán László - Fadgyas László: A LISP programozási nyelv című könyvére támaszkodtam. Ez a könyv egy „fiktív” LISP változatot ismertet, amely az INTERLISP-hez áll legközelebb. Azért választottam ezt a könyvet, mert az általam ismert magyar nyelű könyvek közül ez tárgyalja legrészletesebben a LISP-et.
Természetesen nem vállalkozhattam egy teljes LISP rendszer megírására. Már csak a szabvány nem létezése miatt sem. Célom egy használható LISP interpreter elkészítése volt. A fontosabb, még meg nem valósított függvényekre dolgozatom 4.1. fejezetében külön kitérek.
Vizsgamunkám a bevezetést követően a LISP programozási nyelv alapjait ismerteti néhány példaprogrammal. Ezután a programleírás és a felhasználói kézikönyv következik. A felhasznált irodalmak jegyzékét az 5. fejezet tartalmazza. A programot teljes egészében a mellékelt programlista mutatja be.
Home | Papers | Contact | My Father's Site