Tout est un DSL ...
Assembleur: MOV R1 à R2
Compilateurs: instructions d'assignation - A = A + 1, conditionnelles - IF (TRUE) ..., Branch - RETURN
HTML: ... décrire une structure imbriquée
TCP / IP: décrire vers / depuis adresses
PDF: décrire le placement du texte / de l'image sur le papier
Polices: décrire les caractères
Tout langage que nous utilisons pour décrire un processus spécifique est un DSL. Malheureusement, il y a un manque de langages spécifiques au domaine pour décrire même nos processus les plus basiques, nous utilisons donc les quelques langages dont nous disposons pour décrire tout ce que nous faisons. "Compresser tous les fichiers html de mon site Web" nécessite 300 lignes de 3 ou 4 langues différentes pour compléter.
Pour créer 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. L'analyse est si rapide que toute syntaxe que vous utilisez est correcte, je préfère le langage naturel comme syntaxe dans la plupart des cas, "Payer les employés au premier du mois", mais le domaine spécifique est juste que, spécifique au domaine, vous déterminez la syntaxe qui convient le mieux correspond au problème.
Je resterais loin 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 convient à la plupart des problèmes. JSON ne correspond pas à la facilité d'utilisation, c'est exagéré qui ajoute des complications inutiles si CSV fonctionne pour la plupart des problèmes. Nous utilisons beaucoup EXCEL pour DSL, cela fonctionne très bien pour décrire de petits problèmes, sous 65K à 1M lignes, comme une arborescence ou des menus, la colonne A est le niveau, les autres colonnes sont des icônes, des couleurs, des étiquettes et autres (EXCEL est un CSV modifiable).
J'ai trouvé que HTML ne résolvait pas vraiment le problème de la mise en page, alors je m'en suis débarrassé et j'ai défini un DSL qui convient. J'ai défini 6 régions sur la page, EN-TÊTE, CORPS, PIED DE PIED, MARGES GAUCHE / DROITE et MARGES PLEINES GAUCHE / DROITE. Je pourrais alors dire au générateur de page d'ajouter une BARRE DE TITRE, UNE BARRE D'ÉTAT, DES MENUS, UN TABLEAU, DES FORMULAIRES, ..., à des cellules spécifiques. Chacune de ces cellules pourrait ensuite être divisée en lignes et colonnes à n'importe quelle profondeur. La mise en page prend quelques secondes pour n'importe quel style.
BODY contient une table de mes employés
HEADER contient une légende de la barre de titre «Hello World» avec connexion à Collins Software
Un menu DSL ne correspond pas à la mise en page DSL, j'ai donc créé un DSL unique pour les menus.
Ressource Mon menu principal
* définir: menu, m, niveau, étiquette, icône, action;
m, 0, fichier;
m, 1, open, open.gif, Dialog Open File;
Chaque problème est unique, l'ordinateur peut utiliser n'importe quel format, c'est l'humain pour lequel les DSL sont conçus, alors rendez-le compréhensible par les humains, quelque chose qu'ils peuvent saisir, et faire le langage de vrais mots; car ce sont de vraies personnes, des lieux et des choses que nous décrivons.