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