Attila Góbi edited modszerek.tex  about 8 years ago

Commit id: 8239dd3f6cc3a9be09d586d247b33fe0e6a4509f

deletions | additions      

       

\section{Alkalmazott módszerek}  Munkám során igyekeztem a legkülönbözőbb területekről a legkorszerűbb technológiákat és kutatási eredményeket felhasználni, így szükségesnek érzem egy szakaszt szentelni a felhasznált eszközök és módszerek rövid bemutatására. Ebben bemutatom mit nevezünk funkcionális nyelvnek, mik ezeknek a nyelveknek a jellemző típusrendszereik, és ezekkel milyen programtulajdonságokat lehet ellenőrizni. Ezután röviden ismertetem az absztrakt interpretációt, mint alternatívát. A fenti módszerek implementációjában felhasznált beágyazás zártja az alkalmazott módszerek ismeretetését.  A kutatás során  elsősorban funkcionális nyelvek elemzésével foglalkoztam. Funkcionális nyelvek alatt azokat a programozási nyelveket nevezzük, amelyek támogatják a funkcionális programozási paradigmát. Ez egy olyan deklaratív programozási stílus, amelyben eljárások helyett mellékhatásmentes függvényeket adunk meg, és olyan adatszerkezeteket használunk, amelyek nem módosíthatóak. Az ilyen nyelvekben a függvények első rendű elemként jelennek meg, és jellemző a magasabb rendű függvények használata, valamint a fejlett típusrendszer is.   A funkcionális nyelvek között kiemelkedő helyet foglalnak el a tisztán funkcionális nyelvek. Ezek a nyelvek nem támogatnak mellékhatásokat, és teljesül rájuk a hivatkozási helyfüggetlenség. Ez azt jelenti, hogy ha egy függvényt kétszer meghívok ugyanazzal a paraméterezéssel, az eredmény ugyanaz lesz. Ezeken a nyelvek nem támogatnak változókat és állapotokat, valamint a mellékhatásokat (fájlrendszer használat, képernyőkezelés) is közvetett módon oldják meg. Egy ilyen elterjedt megoldás a monádok használata (pl. Haskell), ahol a monádok ábrázolják a külső vagy belső állapottal végezhető műveleteket, és a programunkat ezeknek a műveleteknek a segítségével építhetjük fel anélkül, hogy a hivatkozási helyfüggetlenség sérülne. 

A fenti példa azt mutatja, hogy tetszőleges programtulajdonság vizsgálható és bizonyítható megfelelő típusrendszerrel. A programok statikus elemzésére egy másik módszer a programok absztrakt interpretációja. Ebben a módszerben a program viselkedését közelítjük úgy, hogy tulajdonképpen egy absztrakt állapottéren futtatjuk le. Ezt a megoldás gyakran használják fordítóprogramok a programok elemzésére (a control-flow és data-flow elemzés mellett).  Egy ilyen absztakt állapottér lehet a méretek felső korlátja. Ekkor az interpretáló függvényünk listákhoz a listák méretét rendeli. Elágazás esetén a  A fejlett típusrendszerek lehetővé teszik, hogy egy gazdanyelv segítségével megfogalmazzunk egy olyan programozási nyelvet, amelyet a gazdanyelv eszközeivel írunk le és a gazdanyelv típusrendszere ellenőriz.