Un DSL (Domain-Specific Language, langage dédié) est un langage volontairement restreint, conçu pour exprimer les règles d'un domaine précis : formules de calcul, règles de complétude, requêtes, configuration. À l'opposé d'un langage généraliste qui sait tout faire, un DSL ne sait faire qu'une chose — et c'est précisément ce qui le rend sûr, lisible et accessible à des non-développeurs.
Parler La Langue Du Métier
Un bon DSL manipule les concepts de ses utilisateurs — attribut, canal, seuil — jamais ceux de la base de données. Son vocabulaire est une API produit : chaque fonction ajoutée est une décision pesée, documentée et rétrocompatible. Le métier exprime ses règles lui-même, sans ticket ni déploiement ; les développeurs gardent la main sur ce que ces règles peuvent atteindre.
La Force Est Dans L'Interdit
La sécurité d'un DSL vient de ce qu'il ne permet pas : pas d'accès aux fichiers, pas de requêtes arbitraires, pas d'effets de bord cachés. Le piège classique est l'inverse — écrire son propre parseur ou évaluer du code généraliste restreint après coup. Mieux vaut un composant éprouvé (Symfony ExpressionLanguage, CEL…) étendu fonction par fonction qu'un langage maison à maintenir pendant des années.
Un DSL réussi trace une frontière entre deux vitesses d'évolution : les règles, que le métier change seul, et le vocabulaire, qui évolue au rythme des releases sous revue de code.