Les langages spécifiques au domaine (DSL) existent depuis que je suis dans l’informatique, mais il est difficile de trouver beaucoup d’informations sur la façon de travailler avec eux. Les DSL sont de petits langages, axés sur un aspect particulier d’un système logiciel. Vous ne pouvez pas construire un programme entier avec un DSL, mais vous utilisez souvent plusieurs DSL dans un système principalement écrit dans un langage à usage général.
Les DSL se présentent sous deux formes principales : externe et interne. Un DSL externe est un langage qui est analysé indépendamment du langage général hôte : les expressions régulières et les CSS en sont de bons exemples. Les DSL externes ont une forte tradition dans la communauté Unix. Les DSL internes sont une forme particulière d’API dans un langage hôte à usage général, souvent appelée interface fluide. La façon dont les bibliothèques de simulacre, telles que JMock, définissent les attentes pour les tests en est un bon exemple, tout comme de nombreux mécanismes utilisés par Ruby on Rails. Les DSL internes ont également une longue tradition d’utilisation, notamment dans la communauté Lisp.
Les gens trouvent les DSL précieux parce qu’un DSL bien conçu peut être beaucoup plus facile à programmer qu’une bibliothèque traditionnelle. Cela améliore la productivité des programmeurs, ce qui est toujours précieux. En particulier, il peut également améliorer la communication avec les experts du domaine, ce qui est un outil important pour s’attaquer à l’un des problèmes les plus difficiles du développement logiciel. CSS est un excellent exemple de cela, la plupart des personnes qui programment CSS ne se considèrent pas comme des programmeurs. Malgré cela, je ne pense généralement pas que les utilisateurs finaux écrivent directement dans les DSL – c’est l’amélioration de la communication qui est importante.
Bien que les DSL existent depuis longtemps, le manque de connaissances sur la façon de programmer avec eux est un obstacle important – c’est exactement pourquoi j’ai travaillé sur ce livre. Le livre fournit des techniques pour développer des DSL internes et externes, vous donnant à la fois les informations pour choisir entre les deux et un bon paquet d’informations pour commencer votre travail. J’insiste également sur l’importance de superposer un DSL à une bibliothèque, de sorte que vous construisez généralement les deux ensemble. Il y a aussi du matériel sur la génération de code, qui est une partie occasionnellement essentielle du travail avec un DSL.
Comme P de EAA ce livre est un livre duplex, fournissant à la fois un récit pour apprendre sur les DSL et un livre de référence pour les détails, donc ne soyez pas effrayé par le nombre élevé de pages. Vous pouvez avoir une bonne maîtrise du sujet en lisant la section narrative (142 pages) et utiliser le reste comme une référence dans laquelle vous pouvez plonger quand vous en avez besoin.
Des copies électroniques de ce livre sont disponibles. Amazon propose une version pour kindle. InformIT a des versions epub et pdf. Apple dispose d’une version epub dans l’ibookstore.