Regisztráció és bejelentkezés

Nyelv független könnyű bővítmény sablon műveletekkel

Napjainkra bebizonyosodott, hogy közel lehetetlen lenne az informatika szerteágazó tudományában minden kihívást csupán néhány programozási nyelvvel hatékonyan megoldani. Mai napig születnek új nyelvek több-kevesebb létjogosultsággal, pedig már eddig is létezik több tízezer. Számos olyan adatleíró-, programozási nyelv és nyelvtan létezik, amit csak egy-egy hasznos funkcionalitás miatt fejlesztettek ki. Ezekből a nyelvekből gyakran több, más nyelveknél megszokott, népszerű nyelvi elem hiányzik, ami azonban nem kizáró ok, mivel a speciális célterületen nagy hatékonysággal használhatóak. Ilyen célterület például a Natura Language Processing (NLP) területén a mondatok feldolgozása, fákká és egyéb szintaktikai és szemantikai reprezentációkká alakítása. Az IRTG (Interpreted Regular Tree Grammer) nyelvtan a szabályok deklarációja után számos formalizmus közötti kölcsönös konverzióra képes. Ez egy egyedülálló funkcionalitás, ami új reményt ad az NLP analitikus megközelítéséhez. Ugyanakkor ez a nyelvtan nem valósít meg ennél a funkcionalitásnál többet. Hiányzik az importálás, ciklusok, feltételes elágazások, de még a hagyományos értelemben vett változók sem léteznek benne. A korlátozás a nyelv széles körű, hétköznapi használatát teljesen ellehetetleníti.Egy másik példa az Android layout-ok esetén használt XML. Az XML-nél hiányzik a sablon használat, az include-olás és a hagyományos értelemben vett változó használat.

A korlátozott funkcionalitásból fakadó problémák az érintett nyelvek bővítésével könnyen megszüntethetőek. Nincs értelme azonban ezen általános problémák esetén nyelvspecifikus megoldásoknak, mivel a kibővített nyelvek fejlődésével a problémák megszűnhetnek, a kiegészítést feleslegessé téve. Az általános megoldáshoz sablonok segítségével jutunk el. A kiegészített nyelv jellegzetes, ismétlődő részeit sablonosítjuk úgy, hogy csak az alapértelmezettől eltérő adatokat kelljen újradefiniálni. Már eddig is számos hatékony megoldás létezik sablon kezelésre, de ezek többsége, egy adott nyelvre összpontosít. Éppen ezért a szintaxisukat is úgy alakítják, hogy ezt az egy nyelvet minél hatékonyabban tudják kezelni. Általában nem is önálló megoldások, hanem szükségük van egy magasabb szintű nyelvre, ami a sablon műveleteket vezérli. A kettős nyelvi megoldás miatt külön kell fordítani a sablonokat és az azokat kezelő kódot. Az időveszteség jelentősebb mennyiségű adaton már nem elhanyagolható.

Dolgozatomban egy általam kidolgozott új megoldást, a Language Independent Lite Extension by Templating Operationt (LILETO) mutatom be. A megoldás lényege, hogy egy olyan réteget képzünk az "alárendelt" nyelv fölé, ami lehetővé teszi az alapvető programozási módszertan használatát, miközben megtartja az eredeti nyelv hatékonyságát. Elérhetővé teszi a változók, a struktúra szintű típusok, a kollekciók, az importálás, a ciklusok és a feltételes elágazások használatát. A kibővített nyelv az "alárendelt" nyelvvé fordul, amit a saját fordítója fordít gépi kóddá, ami által a bővítmény fordítója független marad az "alárendelt" nyelv saját fordítójától.

A dolgozatomban bemutatom a LILETO koncepciót, a Lileto nyelv jelenlegi fázisát, közeli fázisait, felhasználását és párhuzamot vonok a Lileto és más hasonló megoldások között.

szerző

  • Holló-Szabó Ákos
    Mérnök informatikus szak, mesterképzés
    mesterképzés (MA/MSc)

konzulens

  • Dr. Mezei Gergely
    egyetemi docens, Automatizálási és Alkalmazott Informatikai Tanszék

helyezés

III. helyezett