Todo es un DSL ...
Ensamblador: MOV R1 a R2
Compiladores: Declaraciones de asignación - A = A + 1, Condicionales - IF (TRUE) ..., Branch - RETURN
HTML: ... describe una estructura anidada
TCP / IP: describe hacia / desde direcciones
PDF: describe la ubicación del texto / imagen en papel
Fuentes: describe los caracteres
Cualquier lenguaje que usemos para describir un proceso específico es un DSL. Desafortunadamente, hay una falta de lenguajes específicos de dominio para describir incluso nuestros procesos más básicos, por lo que usamos los pocos lenguajes que tenemos para describir todo lo que hacemos. "Comprimir todos los archivos html en mi sitio web" requiere 300 líneas de 3 o 4 idiomas diferentes para completar.
Para crear un DSL, determine la cantidad mínima de caracteres necesarios para describir un proceso que pueda recordar y que no requiera documentación. Recuerde que la velocidad y la facilidad de uso son los principales criterios de diseño. El análisis es tan rápido que cualquier sintaxis que use está bien, prefiero el lenguaje natural como mi sintaxis en la mayoría de los casos, "Pague a los empleados el primer día del mes", pero el dominio específico es solo eso, específico del dominio, usted determina la sintaxis que mejor encaja con el problema.
Me mantendría alejado de usar otras soluciones que podrían ser convenientes pero que no se ajustan al problema, como HTML que se usó para definir datos (XML). CSV es muy útil, se adapta a la mayoría de los problemas. JSON no se ajusta a la parte de facilidad de uso, es exagerado que agrega complicaciones innecesarias donde CSV funciona para la mayoría de los problemas. Usamos mucho EXCEL para DSL, funciona muy bien para describir pequeños problemas, menos de 65K a 1M filas, como estructuras de árbol o menús, la columna A es el nivel, otras columnas son iconos, colores, etiquetas y demás (EXCEL es un CSV editable).
Descubrí que HTML no solucionaba realmente el problema del diseño de página, así que me deshice de él y definí un DSL que encajaba. Definí 6 regiones en la página, ENCABEZADO, CUERPO, PIE DE PIE, MÁRGENES IZQUIERDA / DERECHA y MÁRGENES COMPLETOS IZQUIERDA / DERECHA. Entonces podría decirle al generador de páginas que agregue una BARRA DE TÍTULO, BARRA DE ESTADO, MENÚS, TABLA, FORMULARIOS, ..., a celdas específicas. Cada una de estas celdas se podría dividir en filas y columnas a cualquier profundidad. El diseño de la página toma unos segundos para cualquier estilo.
BODY contiene una tabla de mis empleados
HEADER contiene un título de la barra de título 'Hola mundo' con inicio de sesión en Collins Software
Un menú DSL no encaja en el diseño de página DSL, así que construí un DSL único para menús.
Recurso Mi menú principal
* define: menú, m, nivel, etiqueta, icono, acción;
m, 0, archivo;
m, 1, open, open.gif, Diálogo Abrir archivo;
Cada problema es único, la computadora puede usar cualquier formato, es el humano para el que están diseñados los DSL, así que hágalo comprensible para los humanos, algo que ellos puedan escribir, y haga el lenguaje de palabras reales; porque son personas, lugares y cosas reales lo que estamos describiendo.