Все это DSL ...
Ассемблер: MOV R1 до R2
Компиляторы: операторы присвоения - A = A + 1, условные выражения - IF (TRUE) ..., ветвь - RETURN
HTML: ... описать вложенную структуру
TCP / IP: опишите до / от адреса
PDF: описание размещения текста / изображения на бумаге
Шрифты: опишите символы
Любой язык, который мы используем для описания конкретного процесса, является DSL. К сожалению, не хватает специфичных для предметной области языков, чтобы описать даже самые базовые процессы, поэтому мы используем несколько языков, которые нам нужны для описания всего, что мы делаем. Для «сжатия всех html-файлов на моем веб-сайте» требуется 300 строк из 3 или 4 разных языков.
Чтобы создать DSL, определите минимальное количество символов, необходимое для описания процесса, который вы можете запомнить и не требует документации. Помните, что скорость и простота использования являются основными критериями дизайна. Синтаксический анализ выполняется настолько быстро, что любой синтаксис, который вы используете, подходит. Я предпочитаю естественный язык в качестве синтаксиса в большинстве случаев «Оплачивать сотрудников в первый день месяца», но для конкретного домена, именно для конкретного домена, вы определяете синтаксис, который лучше подходит к проблеме.
Я бы не стал использовать другие решения, которые могли бы быть удобными, но не подходят для такой проблемы, как HTML, который использовался для определения данных (XML). CSV очень полезен, он подходит для большинства задач. JSON не подходит для части простоты использования, это излишне добавляет ненужные сложности, когда CSV работает для большинства проблем. Мы часто используем EXCEL для DSL, он отлично подходит для описания небольших проблем: строки размером от 65K до 1M, такие как древовидные структуры или меню, столбец A - это уровень, другие столбцы - значки, цвета, метки и т. Д. (EXCEL - это редактируемый CSV).
Я обнаружил, что HTML на самом деле не решает проблему разметки страницы, поэтому я избавился от нее и определил подходящий DSL. Я определил 6 областей на странице: заголовок, тело, нижний колонтитул, левые / правые поля и левые / правые поля. Затем я мог бы сказать генератору страниц добавить TITLE BAR, STATUS BAR, MENUS, TABLE, FORMS, ..., к определенным ячейкам. Каждая из этих ячеек может быть разделена на ряды и столбцы на любую глубину. Макет страницы занимает секунды для любого стиля.
ТЕЛО содержит таблицу моих сотрудников
Заголовок содержит заголовок строки заголовка «Hello World» с логином в Collins Software
Меню DSL не соответствует разметке страницы DSL, поэтому я создал уникальный DSL для меню.
Ресурс Мое главное меню
* Определить: меню, м, уровень, Этикетка, Icon, Action;
м, 0, файл;
m, 1, open, open.gif, диалог открытия файла;
Каждая проблема уникальна, компьютер может использовать любой формат, для человека, для которого предназначены DSL, поэтому сделайте его понятным для людей, что-то, что они могут напечатать, и сделать язык из реальных слов; ибо это реальные люди, места и вещи, которые мы описываем.