Solo perché Wikipedia non lo menziona non significa che non esiste :) Generalmente uso il termine DSL per le lingue incorporate in una particolare lingua (e per me, questo include printf e regex). Mi piace il termine "piccolo linguaggio" per i linguaggi vincolati che non hanno tutta la potenza di un linguaggio di programmazione, ma possono comunque richiedere la tokenizzazione e l'analisi. Ma il linguaggio specifico del dominio è il termine giusto per l'arte, indipendentemente dal fatto che la tua lingua sia costruita utilizzando le caratteristiche della tua lingua o se stai costruendo una lingua completamente nuova.
Utilizzerei anche il termine DSL in senso lato, per linguaggi di programmazione completi che affrontano problemi in un determinato dominio, ma ho principalmente creato DSL con l'aiuto delle lingue esistenti, ovvero Boo e Ruby. Se la tua lingua supporta la metaprogrammazione o astrazioni funzionali, di solito è possibile senza un grande sforzo costruire un DSL all'interno o intorno alla lingua. (In Boo, di solito costruisco un DSL come estensione della lingua usando le caratteristiche della pipeline del compilatore e la sintassi della semantica della macro).
Se hai meno controllo sull'albero di sintassi o la sintassi della chiamata al metodo è meno flessibile, puoi utilizzare il concatenamento di metodi per creare un'interfaccia fluente, che è un sottoinsieme di ciò che pensiamo sia un DSL.
Le DSL sono ben supportate nei linguaggi ispirati al Lisp, in cui essenzialmente stai creando una DSL ogni volta che scrivi il codice.
Per inciso, Donald Knuth ha anche usato il termine literate programming per uno stile di programmazione che si auto-documenta perché il codice funge da documento leggibile.