Tudo é um DSL ...
Assembler: MOV R1 para R2
Compiladores: Instruções de atribuição - A = A + 1, condicionais - IF (TRUE) ..., Branch - RETURN
HTML: ... descreve uma estrutura aninhada
TCP / IP: descreva para / de endereços
PDF: descreva a colocação do texto / imagem no papel
Fontes: descreva os caracteres
Qualquer linguagem que usamos para descrever um processo específico é uma DSL. Infelizmente, faltam linguagens específicas de domínio para descrever até mesmo nossos processos mais básicos, então usamos as poucas linguagens que temos para descrever tudo o que fazemos. "Compactar todos os arquivos html em meu site" requer 300 linhas de 3 ou 4 idiomas diferentes para ser concluído.
Para construir uma DSL, determine o número mínimo de caracteres necessários para descrever um processo que você pode lembrar e não requer documentação. Lembre-se de que velocidade e facilidade de uso são os principais critérios de design. A análise é tão rápida que qualquer sintaxe que você usa é adequada, eu prefiro a linguagem natural como minha sintaxe na maioria dos casos, "Pagar funcionários no primeiro dia do mês", mas específico de domínio é apenas isso, específico de domínio, você determina a sintaxe que melhor se encaixa no problema.
Eu ficaria longe de usar outras soluções que poderiam ser convenientes, mas não se encaixam no problema, como HTML que foi usado para definir dados (XML). CSV é muito útil, ele se adapta à maioria dos problemas. JSON não se encaixa na parte de facilidade de uso, é um exagero adicionar complicações desnecessárias onde o CSV funciona para a maioria dos problemas. Usamos muito o EXCEL para DSL, ele funciona muito bem para descrever pequenos problemas, abaixo de 65K a 1M de linhas, como estruturas de árvore ou menus, a coluna A é o nível, outras colunas são ícones, cores, rótulos e outros (EXCEL é um CSV editável).
Descobri que o HTML não resolveu realmente o problema do layout da página, então me livrei dele e defini uma DSL que se encaixa. Eu defini 6 regiões na página, HEADER, BODY, FOOTER, LEFT / RIGHT MARGINS e LEFT / RIGHT FULL MARGINS. Eu poderia então dizer ao gerador de páginas para adicionar uma BARRA DE TÍTULO, BARRA DE STATUS, MENUS, TABELA, FORMULÁRIOS, ..., para células específicas. Cada uma dessas células pode ser dividida em linhas e colunas em qualquer profundidade. O layout da página leva segundos para qualquer estilo.
BODY contém uma tabela dos meus funcionários
HEADER contém uma legenda da barra de título 'Hello World' com login no software Collins
Um menu DSL não se encaixa no layout de página DSL, então eu construí um DSL exclusivo para menus.
Recurso Meu Menu Principal
* define: menu, m, Nível, Etiqueta, Ícone, Ação;
m, 0, arquivo;
m, 1, open, open.gif, Dialog Open File;
Cada problema é único, o computador pode usar qualquer formato, é o humano para o qual as DSLs foram projetadas, portanto, torne-o compreensível para os humanos, algo que eles possam digitar e fazer a linguagem de palavras reais; pois são pessoas, lugares e coisas reais que estamos descrevendo.