When and How to Develop Domain-Specific Languages

MARJAN MERNIK, University of Maribor

JAN HEERING, CWI

ANTHONY M. SLOANE, Macquarie University

Введение

В данной работе представлены подробный анализ и описание предметно-ориентированных языков (domain-specific language – DSL), продемонстрированы их преимущества перед универсальными языками программирования. Продемонстрированы абстракции, согласно которым конкретный язык программирования можно охарактеризовать как предметно-ориентированный или же, наоборот, как универсальный. Описаны модели предметно-ориентированных языков, приведена их детальная классификация.

Преимущества DSL

Утверждается, что наиболее очевидные преимущества DSL такие как: уменьшение ресурсо-затратности и трудоемкости разработки разнородных программных обеспечений могут быть не актуальны в связи с следующими недостатками, относящимися к проектированию DSL:

Обзор DSL

Согласно содержанию работы, любую модель языка программирования, характеризующуюся как DSL можно классифицировать по этапам их разработки: решение, анализ, имплементация, развертывание. По большей части, в работе рассмотрены первые три класса, которые относятся к вопросу и методах разработки, в то время как последний класс относится к области вопросов о конкретных случаях развертывания модели. Решение – процесс конкретизации целей разработки модели языка, к примеру: образец решения – API-to-DSL, область применения – цифровая обработка сигналов, DSL – SPL.

Анализ – есть этап разработки, за который идентифицируется и утверждается проблемная область, извлекаются «знания» – формализованные данные, характеризующие данную область. Т.е. те данные, которые, представленные в некой формализованной абстрактной форме, максимально характеризуют рассматриваемую проблемную область. Результатом анализа является предметная модель, состоящая из концептов, абстракции, субмоделей и терминологии. Авторы работы приводят описание методологии анализа предметной области FODA, приводят ее характеристики и основные свойства. Приводится пример предметной модели в области Web browsing.

Проектирование DSL проще всего осуществляется на основе существующих моделей предметно-ориентированных языков. Во-первых, в данном случае возможно комбинирование предметно-ориентированных признаков на базе существующей модели языка. Во-вторых, любую существующую модель можно расширить, дополнив признаки соответствующие интересующей предметной области. Примеры можно условно разделить на принципиально различающиеся либо по строению, либо по принципу проектирования: формальные и неформальные; разработка и эксплуатация моделируемого языка.

Авторами приводятся примеры имплементаций исполняемых DSL: компилятора (AL, ATMOL, ESP) – чтение и перевод конструкций DSL в машинные команды, интерпретатора (ASTLOG) – чтение и определение конструкций DSL методом «получить-декодировать-выполнить», препроцессора (S-XML) и др. Для примеров компилятора и интерпретатора приводятся преимущества:

И недостатки:

Тем не менее, практически все недостатки могут быть в какой-либо мере минимизированы, если наибольшая часть работ по имплементации языкового процессора автоматизирована. Приведено сравнение предложенной в работе системы классификации примеров с существующими. Рассмотрены общие и специфичные примеры. В результате отмечено наличие в исследуемой работе традиционных техник проектирования и имплементации, свойственных универсальным языкам. Наличие данных техник обусловлено их релевантностью не только к универсальным, но так же и к DSL.