DSL
27 décembre 2007
Qu’est-ce qu’ un DSL (Domain Specific Language ou Langage Dédié pour les intimes) ? Le dernier buzz word à la mode dans la communauté MD ! Si des gens aussi estimables que Martin Fowler prennent la peine d’écrire un livre sur le sujet, ça doit être un peu plus que ça.
J’ai glané quelques définitions sur le web (les traductions sont personnelles) :
« Description concise, précise et manipulable d’un point de vue, d’un problème ou d’un aspect d’un système dans une notation qui convienne aux personnes qui spécifient ce point de vue, ce problème ou cet aspect. » Markus Völter
« Langage de programmation informatique d’expressivité limitée, dédié à un domaine particulier. » Martin Fowler
« Langage de programmation conçu pour, et destiné à être utile pour un type spécifique de tâche. » Wikipedia
« Un langage dédié est créé pour résoudre certains problèmes spécifiques dans un domaine particulier, et n’a en principe pas vocation à résoudre des problèmes en dehors de ce contexte. » (Wikipedia en français, qui, par ailleurs, définit un DSL de manière négative, par opposition à un langage généraliste)
Qui a déjà vu un DSL en vrai ? Vous, certainement : les DSL sont partout ! En fait, le concept est tellement imprécis qu’on peut y faire rentrer un peu n’importe quoi : Wikipedia (français) donne Excel comme exemple de DSL.
En fait, les exemples de Wikipedia (anglais) sont les plus parlants : les grammaires YACC, les langages de Regexp, Graphviz, les macros Excel… Ce sont tous des exemples de langages textuels. J’y ajouterais, pour compléter quelques langages plus graphiques : BPMN, SYSML pour citer les plus connus.
Si on continue sur les langages graphiques, on peut dire que que dès qu’on utilise un profil UML on a un bon candidat DSL. Ajouter une sémantique à UML le fait passer du statut de généraliste à celui de spécifique.
Me revient à la mémoire ce qui semblait un fait acquis lors du MD Day : « pour faire du MDA/MDD, UML est mort, car trop complexe, il faut utiliser des DSL ».
C’est un tour de passe-passe !
La réalité c’est : on a besoin d’un sous-ensemble d’UML (diagramme de classes minimum + éventuellement, diagramme d’états voire d’activité) auquel on ajoute DES profils (un pour la modélisation du domaine, un pour la modélisation applicative par exemple). Et hop ! Voilà deux DSL :-)
UML, pas mort !
Finalement, nous sommes nombreux à être les M. Jourdain des DSL…