this is for holding javascript data
Attila Góbi edited modszerek.tex
about 8 years ago
Commit id: 8239dd3f6cc3a9be09d586d247b33fe0e6a4509f
deletions | additions
diff --git a/modszerek.tex b/modszerek.tex
index d0d8428..27839c5 100644
--- a/modszerek.tex
+++ b/modszerek.tex
...
\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.