Szakterületi nyelv-, és környezet fejlesztése
Az informatikában igen gazdag a választék a programozási, specifikációs és adatleíró nyelvek terén. A nyelvek evolúciójuk során egyre kényelmesebbé, produktívabbá váltak adaptálódva a modern kor igényeihez. Az általános célokra, változatos környezetekben felhasználható programozási/specifikációs nyelvek mellett egyre nagyobb igény mutatkozik olyan nyelvekre, amelyek csak egy adott célra készülnek, de azon a területen minden más megoldásnál hatékonyabbak tudnak lenni. Ezeket a speciális nyelveket a szakirodalomban szakterületi nyelveknek (Domain-Specific Language, DSL) nevezik. A szakterületi nyelv jellemzője a nagyfokú tömörség, a lényegre törő leírás és a teljes mértékben testreszabható szintaxis, ami könnyen a szakértők bevett szakzsargonjához illeszthető. Az így kialakított nyelv használata által a legtöbb tipikus hiba elkerülhető, hiszen már nyelvi szinten ki tudjuk szűrni a hibás mintákat. A szakterületi nyelvek további előnye, hogy kódgenerálás segítségével támogatják a natív platformfüggetlenséget is. Egy jól kidolgozott, a tématerülethez megfelelőképpen illesztett szakterületi nyelv ugrásszerűen képes megnövelni a produktivitást.
Felmerülhet a kérdés, hogy hol lehet szükség ilyen megoldásokra? A gyártás automatizálás (főként IoT eszközparkok üzemeltetése), a telekommunikációs hálózatok, a munkafolyamatok automatizálása csupán néhány példa. Sok esetben szükség van egy adatleíró nyelvre, amelynek leírásaiból különféle vékony-, ill. vastagkliens interfészek implementációja, protokollok közti konverziója legenerálható. A szakterületi nyelvek segítségével ez nem okoz problémát, ahogy az sem, ha egyszerre több platformot is támogatni kell. Egy másik tipikus, gyakran felmerülő kihívás a legacy kód kezelése és migrációja, ami legtöbbször nagyon sok manuális munkát igényel. Ez történhet egyik, vagy mindkét irányban, tehát legacy kód migrációja egy modernebb nyelvre, vagy pedig – amennyiben nem megoldható a régi infrastruktúra cseréje – a modern nyelven írt kód transzformációja egy legacy nyelvre. A kódmigráció egyszerűen megoldható egy magasszintű, köztes nyelvvel, amely a két nyelv közti átjárást biztosítja.
Csapatunk az elmúlt években részt vett számos szakterületi nyelv kidolgozásában. Tapasztalatainkra alapozva segítséget nyújtunk a nyelvtervezés kérdéseiben, ill. kihívásaiban biztos kézzel vezetve a megrendelőt, hogy a folyamat végén olyan nyelvet kapjon, amely valóban az ő igényeihez illeszkedik. Együttműködésünk során első lépésként a megrendelővel együttműködve feltérképezzük a szakterület határait, jellemző fogalmait, valamint azok közti kapcsolatokat. Második lépésként megtervezzük a nyelv szintaxisát és szemantikáját, majd harmadik lépésként megvalósítjuk a nyelv feldolgozását, ill. kódgenerálást a felhasználási minták alapján. Munkánk során kiemelt prioritással kezeljük a kidolgozott megoldás meglévő céges környezetbe való beillesztését, azaz a szakterületi leírásokból olyan állományokat, programkódokat generálunk, amelyek közvetlenül felhasználhatóak. Fontos megemlíteni, hogy önmagában a nyelv a legtöbbször még nem elegendő, szükség van egy kényelmes környezetre is, amelyben a szakterületi leírások megadhatóak. Csapatunk olyan környezetet képes biztosítani, amely támogatja többek közt a szintaxis kiemelést, a kódkiegészítést, ill. a szakterület-specifikus refaktorálásokat is. Ilyen környezeteket meglévő nyelvekhez is tudunk biztosítani. A fordítóprogramok sajátosságai miatt megoldásaink könnyen és jól illeszthetőek szinte bármilyen meglévő eszközhöz, programozási nyelvtől, ill. platformtól függetlenül.
Rubik kocka állapot és algoritmust leíró nyelveket készített a hallgató, illetve integrált egy létező szimulátort is a frontendbe. Go nyelven készült a compiler:
Projektben szereplő tanszéki kutatók, a vezető kutató és elérhetősége:
Projektben résztvevő hallgatók:
- Somogyi Norbert
- Gembela Gergely
Projekthez kapcsolódó publikációk:
- K. Farkas, Z. Pödör, G. Mezei, and F. Somogyi, “Data interoperability across IoT domains,” INTERNATIONAL JOURNAL OF COMPUTERS, vol. 12, pp. 60–65, 2018.
- N. Somogyi, G. Mezei, " The Challenges of Defining and Parsing Multi-Layer DMLA Models" in Proceedings of the 10th International Conference on Model-Driven Engineering and Software Development (MODELSWARD 2022) pp. 358-363
- doi: 10.5220/0010918900003119
- P. Lenkefi, G. Mezei, „Connections between Language Semantics and the Query-based Compiler Architecture” in Proceedings of the 17th International Conference on Software Technologies ICSOFT - Volume 1, pp. 167-174, 2022 , Lisbon, Portugal