Tout est un DSL...
Assembleur : MOV R1 à R2
Compilateurs : Instructions d'affectation -- A = A + 1, conditionnelles -- IF (TRUE) ..., branche -- RETURN
HTML : ... décrire une structure imbriquée
TCP/IP : décrire les adresses de départ et d'arrivée
PDF : décrire l'emplacement du texte/de l'image sur le papier
Polices : décrire les caractères
Tout langage utilisé pour décrire un processus spécifique est un DSL. Malheureusement, il n'y a pas assez de langages spécifiques à un domaine pour décrire même nos processus les plus élémentaires, de sorte que nous utilisons les quelques langages dont nous disposons pour décrire tout ce que nous faisons. "Pour zipper tous les fichiers html de mon site web, il faut 300 lignes de 3 ou 4 langages différents.
Pour construire un DSL, déterminez le nombre minimum de caractères nécessaires pour décrire un processus dont vous pouvez vous souvenir et qui ne nécessite pas de documentation. N'oubliez pas que la rapidité et la facilité d'utilisation sont les principaux critères de conception. Je préfère le langage naturel comme syntaxe dans la plupart des cas, "Payer les employés le premier du mois", mais un domaine spécifique est justement un domaine spécifique, vous déterminez la syntaxe qui correspond le mieux au problème.
Je m'abstiendrais d'utiliser d'autres solutions qui pourraient être pratiques mais qui ne correspondent pas au problème, comme le HTML qui a été utilisé pour définir les données (XML). CSV est très utile, il répond à la plupart des problèmes. JSON n'est pas adapté à la facilité d'utilisation, c'est une surenchère qui ajoute des complications inutiles là où CSV fonctionne pour la plupart des problèmes. Nous utilisons beaucoup EXCEL pour le DSL, il fonctionne très bien pour décrire les petits problèmes, moins de 65K à 1M lignes, comme les structures arborescentes ou les menus, la colonne A est le niveau, les autres colonnes sont les icônes, les couleurs, les étiquettes et autres (EXCEL est un CSV éditable).
J'ai constaté que le HTML ne résolvait pas vraiment le problème de la mise en page, alors je l'ai supprimé et j'ai défini un DSL qui convient. J'ai défini 6 régions sur la page, HEADER, BODY, FOOTER, LEFT/RIGHT MARGINS, et LEFT/RIGHT FULL MARGINS. Je pourrais ensuite demander au générateur de pages d'ajouter une BARRE DE TITRE, une BARRE D'ÉTAT, des MENUS, des TABLEAUX, des FORMULAIRES,..., à des cellules spécifiques. Chacune de ces cellules peut ensuite être divisée en lignes et en colonnes, selon la profondeur souhaitée. La mise en page ne prend que quelques secondes, quel que soit le style.
BODY contient un tableau de mes employés
HEADER contient un titre de barre de titre "Hello World" avec login à Collins Software
Un DSL de menu ne correspond pas au DSL de mise en page, c'est pourquoi j'ai construit un DSL unique pour les menus.
Ressource Mon menu principal
*define:menu,m,Level,Label,Icon,Action ;
m,0,fichier ;
m,1,open,open.gif,Boîte de dialogue Ouvrir un fichier ;
Chaque problème est unique, l'ordinateur peut utiliser n'importe quel format, c'est pour l'homme que les DSL sont conçus, il faut donc les rendre compréhensibles par l'homme, quelque chose qu'il peut taper, et faire en sorte que le langage soit composé de vrais mots, car ce sont des personnes, des lieux et des choses réels que nous décrivons.