DSL
En d'autres termes
Domain-Specific Language
Définition
Un DSL est un "petit" langage, pas nécessairement complet au sens de Turing, et qui facilite la réalisation d'une classe de tâches particulières au détriment de la généralité. Il peut aussi bien être un langage déclaratif, comme HTML SVG ou le langage de GraphViz, que destiné à l'exécution, comme celui des expressions régulières (voir regexp).
Ainsi, les expressions régulières consituent un DSL implémenté dans de nombreux autres langages, de même que SQL, qui illustre qu'un DSL n'est pas nécessairement petit dans l'absolu, dans la mesure où sa spécification complète est volumineuse, mais petit par rapport aux langages de développement d'applications au sein desquels il est invoqué.
Bien que le concept soit ancien, dans la mesure ou de nombreux L3G incluent un accès à SQL ou aux expressions régulières, la formalisation du concept est apparue dans le monde Ruby, facilité par le "poetry mode" de la grammaire Ruby, et notamment popularisée par Martin Fowler, auteur d'un livre de référence sur les DSL.
Internal DSL / External DSL
Un DSL peut être "interne" (internal DSL) lorsqu'il est entièrement défini dans la grammaire d'un autre langage, comme c'est le cas de Rake, ou "externe" (external DSL) lorsqu'il dispose de sa grammaire propre, comme CSS, qui définit un langage et une logique de formatage orthogonale aux langages dans lesquels il est référencé, et en particulier HTML et SVG.