Tutto è un DSL ...
Assemblatore: MOV da R1 a R2
Compilatori: Assignment Statements - A = A + 1, Conditionals - IF (TRUE) ..., Branch - RETURN
HTML: ... descrive una struttura nidificata
TCP / IP: descrive a / da indirizzi
PDF: descrivere il posizionamento di testo / immagine su carta
Font: descrivere i caratteri
Qualsiasi linguaggio che utilizziamo per descrivere un processo specifico è un DSL. Sfortunatamente mancano linguaggi specifici del dominio per descrivere anche i nostri processi più elementari, quindi usiamo i pochi linguaggi che abbiamo per descrivere tutto ciò che facciamo. "Comprimi tutti i file html nel mio sito web" richiede 300 righe di 3 o 4 lingue diverse per essere completato.
Per costruire un DSL, determina il numero minimo di caratteri necessari per descrivere un processo che puoi ricordare e che non richiede documentazione. Ricorda che velocità e facilità d'uso sono i criteri di progettazione primari. L'analisi è così veloce che qualsiasi sintassi che utilizzi va bene, preferisco il linguaggio naturale come sintassi nella maggior parte dei casi, "Paga i dipendenti il primo del mese", ma specifico del dominio è proprio questo, specifico del dominio, sei tu a determinare la sintassi che meglio si adatta al problema.
Eviterei di utilizzare altre soluzioni che potrebbero essere convenienti ma non si adattano al problema, come l'HTML utilizzato per definire i dati (XML). CSV è molto utile, si adatta alla maggior parte dei problemi. JSON non si adatta alla parte di facilità d'uso, è eccessivo che aggiunge complicazioni inutili dove CSV funziona per la maggior parte dei problemi. Usiamo molto EXCEL per DSL, funziona alla grande per descrivere piccoli problemi, da 65K a 1M di righe, come strutture ad albero o menu, la colonna A è il livello, le altre colonne sono icone, colori, etichette e simili (EXCEL è un CSV modificabile).
Ho scoperto che l'HTML non risolveva davvero il problema del layout della pagina, quindi me ne sono sbarazzato e ho definito un DSL che si adattava. Ho definito 6 aree nella pagina, HEADER, BODY, FOOTER, LEFT / RIGHT MARGINS e LEFT / RIGHT FULL MARGINS. Potrei quindi dire al generatore di pagine di aggiungere una BARRA DEL TITOLO, BARRA DI STATO, MENU, TABELLA, MODULI, ..., a celle specifiche. Ciascuna di queste celle potrebbe quindi essere suddivisa in righe e colonne a qualsiasi profondità. Il layout della pagina richiede pochi secondi per qualsiasi stile.
BODY contiene una tabella dei miei dipendenti L'
INTESTAZIONE contiene una didascalia della barra del titolo "Hello World" con accesso a Collins Software
Un menu DSL non si adatta al layout di pagina DSL, quindi ho creato un DSL unico per i menu.
Risorsa Il mio menu principale
* definisce: menu, m, Livello, Etichetta, Icona, Azione;
m, 0, di file;
m, 1, open, open.gif, Finestra di dialogo Apri file;
Ogni problema è unico, il computer può utilizzare qualsiasi formato, è l'umano per cui sono progettati i DSL, quindi rendilo comprensibile agli umani, qualcosa che possono digitare e trasformare il linguaggio in parole reali; perché sono persone, luoghi e cose reali che stiamo descrivendo.