A DSL az angol Domain Specific Language kifejezés rövidítése. A DSL egy olyan nyelv, amelyen egy adott feladatkör problémáinak megoldását lehet elkódolni olyan formában, hogy a számítógép azt meg tudja oldani.
Sokféle feladatkört el lehet képzelni. Például feladat egy áramkör alaprajzának megtervezése, egy honlap megjelenítése, vagy éppen egy sor program futtatása annak érdekében, hogy a forráskódokból egy futtatható állomány jöjjön létre.
A DSL-nek persze nem kell egy teljesen független nyelvnek lennie. Sőt, a legsikeresebb DSL eszközök közül sok valamilyen általános programozási nyelvből indultak ki. Először a nyelven belül léteztek, mint önálló modul, majd idővel olyannyira kifinomult eszközökké fejlődtek, hogy őket használva teljesen más szemszögből látjuk a problémát, mint ha a kiindulási nyelvben programoznánk.
Ez persze elég tág definíció. Arról is beszélhetnénk, hogy mi nem DSL. Nem DSL egy program, ami egy adott problémát old meg, még akkor sem, ha elég széleskörűen paraméterezhető. Azonban egy program végrehajthatja a DSL kódot, ahogy például a böngésző megjelenít egy weboldalt. Nem DSL az UML sem, mert nem problémát old meg, hanem rendszereket modellez. Nem DSL a Java, a C++, vagy más általános programozási nyelv.
Persze a világ nem fekete-fehér, sok esetben nem egyértelműen dönthető el, hogy egy adott nyelv DSL, általános programozási nyelv, vagy csak egy jól felszerelt programmodul.
DSL példák: