Alles ist ein DSL ...
Assembler: MOV R1 zu R2
Compiler: Zuweisungsanweisungen - A = A + 1, Bedingungen - IF (TRUE) ..., Branch - RETURN
HTML: ... beschreiben eine verschachtelte Struktur
TCP / IP: beschreiben zu / von Adressen
PDF: Text- / Bildplatzierung auf Papier
beschreiben Schriftarten: Zeichen beschreiben
Jede Sprache, mit der wir einen bestimmten Prozess beschreiben, ist DSL. Leider fehlt es an domänenspezifischen Sprachen, um selbst unsere grundlegendsten Prozesse zu beschreiben. Daher verwenden wir die wenigen Sprachen, die wir benötigen, um alles zu beschreiben, was wir tun. "Alle HTML-Dateien auf meiner Website komprimieren" erfordert 300 Zeilen mit 3 oder 4 verschiedenen Sprachen.
Um ein DSL zu erstellen, legen Sie die Mindestanzahl von Zeichen fest, die zur Beschreibung eines Prozesses erforderlich sind, an den Sie sich erinnern können und für den keine Dokumentation erforderlich ist. Denken Sie daran, dass Geschwindigkeit und Benutzerfreundlichkeit die Hauptkriterien für das Design sind. Das Parsen ist so schnell, dass jede von Ihnen verwendete Syntax in Ordnung ist. In den meisten Fällen bevorzuge ich die natürliche Sprache als meine Syntax "Mitarbeiter am ersten des Monats bezahlen", aber domänenspezifisch ist genau das, domänenspezifisch. Sie bestimmen die Syntax, die am besten ist passt zum Problem.
Ich würde mich von anderen Lösungen fernhalten, die praktisch sein könnten, aber nicht zu dem Problem passen, wie z. B. HTML, das zum Definieren von Daten (XML) verwendet wurde. CSV ist sehr nützlich, es passt zu den meisten Problemen. JSON passt nicht zum benutzerfreundlichen Teil, es ist ein Overkill, der unnötige Komplikationen hinzufügt, wenn CSV für die meisten Probleme funktioniert. Wir verwenden EXCEL häufig für DSL. Es eignet sich hervorragend zur Beschreibung kleiner Probleme unter 65 KB bis 1 Million Zeilen, z. B. Baumstrukturen oder Menüs. Spalte A ist die Ebene, andere Spalten sind Symbole, Farben, Beschriftungen usw. (EXCEL ist eine bearbeitbare CSV).
Ich stellte fest, dass HTML das Problem des Seitenlayouts nicht wirklich löste, also habe ich es beseitigt und ein DSL definiert, das passt. Ich habe 6 Regionen auf der Seite definiert: HEADER, BODY, FOOTER, LEFT / RIGHT MARGINS und LEFT / RIGHT FULL MARGINS. Ich könnte dann den Seitengenerator anweisen, bestimmten Zellen eine TITELLEISTE, eine STATUSLEISTE, ein MENÜ, eine TABELLE, FORMEN usw. hinzuzufügen. Jede dieser Zellen kann dann bis zu einer beliebigen Tiefe in Zeilen und Spalten aufgeteilt werden. Das Seitenlayout dauert für jeden Stil Sekunden.
KÖRPER enthält eine Tabelle meiner Mitarbeiter
HEADER enthält eine Titelleistenbeschriftung "Hallo Welt" mit Login bei Collins Software
Ein Menü-DSL passt nicht zum Seitenlayout-DSL, daher habe ich ein einzigartiges DSL für Menüs erstellt.
Ressource Mein Hauptmenü
* definieren: Menü, m, Ebene, Beschriftung, Symbol, Aktion;
m, 0, Datei;
m, 1, open, open.gif, Dialog Open File;
Jedes Problem ist einzigartig, der Computer kann jedes Format verwenden, es ist der Mensch, für den DSLs entwickelt wurden. Machen Sie es für den Menschen verständlich, etwas, das er eingeben kann, und machen Sie die Sprache aus echten Wörtern. denn es sind reale Menschen, Orte und Dinge, die wir beschreiben.