domain-specific language (tsz. domain-specific languages)
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:
Itt a hangsúly a műveletek sorrendiségén van: hogyan hajtsunk végre bizonyos lépéseket.
Példák:
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 |
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 |
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))
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;
A DSL közvetlen értelmezése (pl. regex motor, SQL interpreter).
A DSL programot lefordítja egy másik nyelvre (pl. JavaScript generátor egy sablon DSL-ből).
Lex/Yacc, ANTLR, vagy más parsergenerátorok segítségével könnyen létrehozhatók saját DSL-ek.
resource "aws_instance" "web" { ami = "ami-123456" instance_type = "t2.micro" }
FROM python:3.8
COPY . /app
RUN pip install -r requirements.txt
CMD
query { user(id: "123") { name email } }
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.
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.