domain-specific language

Üdvözlöm, Ön a domain-specific language szó jelentését keresi. A DICTIOUS-ban nem csak a domain-specific language szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a domain-specific language szót egyes és többes számban mondani. Minden, amit a domain-specific language szóról tudni kell, itt található. A domain-specific language szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Adomain-specific language és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

domain-specific language (tsz. domain-specific languages)

  1. (informatika) A domain-specific language (röviden: DSL) olyan programozási vagy leíró nyelv, amelyet egy adott probléma- vagy alkalmazási terület (ún. domain) megoldására terveztek. Szemben az általános célú programozási nyelvekkel (például C++, Python vagy Java), a DSL-ek szűkebb körű feladatokra fókuszálnak, és kifejezetten ezek hatékony, expresszív és olvasható kezelésére szolgálnak.



1. DSL típusai

a) Leíró DSL-ek (declarative DSL)

Ezeket arra használják, hogy leírják egy rendszer viselkedését, szerkezetét vagy konfigurációját anélkül, hogy konkrét utasításokat adnánk a végrehajtásra.

Példák:

  • HTML – a weboldalak szerkezetének leírására szolgál.
  • SQL – adatbázis-lekérdezésekre.
  • CSS – stílusok leírására.

b) Eljárásorientált DSL-ek (imperative DSL)

Itt a hangsúly a műveletek sorrendiségén van: hogyan hajtsunk végre bizonyos lépéseket.

Példák:

  • Makefile – fordítási szabályok meghatározása.
  • Gradle DSL – Java projekt fordítási lépéseinek definiálása.



2. DSL vs Általános célú nyelvek (GPL)

Jellemző DSL GPL
Cél Egy adott feladatra Széleskörű programozási célokra
Tanulási görbe Alacsony, a domain ismeretében Magasabb
Rugalmasság Korlátozott Magas
Kifejezőkészség a domainre Nagyon jó Általános



3. DSL példák különböző területeken

Terület DSL példa Funkció
Web HTML, CSS Struktúra és stílus
Adatbázis SQL Adatlekérdezés és -manipuláció
Build rendszerek Makefile, Gradle, Ant Fordítás, csomagolás
Hálózat Cisco IOS CLI, Junos CLI Eszközkonfiguráció
Hardver VHDL, Verilog Hardvertervezés
Machine Learning Keras DSL (Python belül) Modellek deklarálása



4. DSL-ek előnyei

  • Egyszerűség: A célközönség (nem programozók is) számára is érthető lehet.
  • Expresszivitás: A DSL nyelvi elemei gyakran megfelelnek a domain fogalmainak, így könnyen olvasható és írható.
  • Hatékonyság: Gyors fejlesztést tesz lehetővé egy szűk feladatra.
  • Kevés hiba: A korlátozott nyelvi eszköztár csökkenti a hibázás lehetőségét.



5. DSL-ek hátrányai

  • Korlátozott felhasználhatóság: Általában nem alkalmasak más feladatokra.
  • Fenntarthatóság: Egy saját DSL hosszú távú karbantartása költséges lehet.
  • Tanulási igény: Bár egyszerűek, új szintaxisok megtanulását igényelhetik.
  • Integráció: Külső rendszerekkel való összekapcsolása nehézkesebb lehet.



6. Internal vs External DSL

a) Internal DSL

Egy meglévő általános célú nyelv (például Python, Ruby, Scala) szintaxisán belül valósítja meg a DSL-t.

Példa:

# példa belső DSL-re (DSL a Pythonban)
from sqlalchemy import Table, Column, Integer
user = Table('user', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String))

b) External DSL

Saját szintaxisú, önálló nyelv. Külön parserrel, fordítóval vagy interpreterrel rendelkezik.

Példa:

SELECT name FROM users WHERE age > 18;

7. DSL-ek megvalósítása

a) Interpreter

A DSL közvetlen értelmezése (pl. regex motor, SQL interpreter).

b) Fordító (compiler)

A DSL programot lefordítja egy másik nyelvre (pl. JavaScript generátor egy sablon DSL-ből).

c) Parser generátorok

Lex/Yacc, ANTLR, vagy más parsergenerátorok segítségével könnyen létrehozhatók saját DSL-ek.



8. Mikor érdemes DSL-t használni?

  • Ha a célcsoport nem programozó (pl. doménszakértők).
  • Ha a feladat jól körülhatárolt és gyakran ismétlődik.
  • Ha fontos az olvashatóság és egyszerűség.
  • Ha egy komplex rendszer egy részét le akarjuk választani és izolálni.



9. DSL-ek a gyakorlatban

  • Terraform (DSL a felhőinfrastruktúra kezelésére):
resource "aws_instance" "web" {
  ami = "ami-123456"
  instance_type = "t2.micro"
}
  • Dockerfile (konténer konfiguráció DSL):
FROM python:3.8
COPY . /app
RUN pip install -r requirements.txt
CMD 
  • GraphQL lekérdezések (DSL az API kommunikációhoz):
query {
  user(id: "123") {
    name
    email
  }
}

10. DSL-ek jövője

A modern szoftverfejlesztés egyre inkább specializálódik. A Low-code / No-code irányzatok terjedésével egyre több domain-specifikus megoldás jelenik meg, sokszor DSL formájában – akár vizuálisan is. A DSL-ek kulcsszerepet játszanak a model-driven development, a configuration-as-code és a declarative programming területein.



Összefoglalás

A domain-specific language egy olyan nyelv, amelyet egy konkrét alkalmazási területre terveztek. Hatékonyabbá, olvashatóbbá és fenntarthatóbbá teszi a fejlesztést ezen a szűk területen. Bár korlátozottabb, mint egy általános célú nyelv, előnyei ott érvényesülnek igazán, ahol a célterület jól definiált, és ismétlődő vagy konzisztens logikát kíván meg. A jövő szoftveres architektúráiban a DSL-ek valószínűleg még hangsúlyosabb szerepet kapnak – különösen az automatizálás és infrastruktúra menedzsment területein.