| Next revision | Previous revision |
| mdd:dsl_develop [2014/06/02 00:21] – created golovanov_sergey | mdd:dsl_develop [2026/08/29 07:59] (current) – external edit 127.0.0.1 |
|---|
| | **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 гораздо больше, нежели универсальных языков; |
| | * увеличение сложности задач стандартизации и поддержки языка в зависимости от масштабов работ приводит к увеличению временных затрат на разработку. |
| | |
| | **Обзор DSL** |
| | |
| | Согласно содержанию работы, любую модель языка программирования, характеризующуюся как DSL можно классифицировать по этапам их разработки: решение, анализ, имплементация, развертывание. По большей части, в работе рассмотрены первые три класса, которые относятся к вопросу и методах разработки, в то время как последний класс относится к области вопросов о конкретных случаях развертывания модели. Решение – процесс конкретизации целей разработки модели языка, к примеру: образец решения – API-to-DSL, область применения – цифровая обработка сигналов, DSL – SPL. |
| | |
| | Анализ – есть этап разработки, за который идентифицируется и утверждается проблемная область, извлекаются «знания» – формализованные данные, характеризующие данную область. Т.е. те данные, которые, представленные в некой формализованной абстрактной форме, максимально характеризуют рассматриваемую проблемную область. Результатом анализа является предметная модель, состоящая из концептов, абстракции, субмоделей и терминологии. Авторы работы приводят описание методологии анализа предметной области FODA, приводят ее характеристики и основные свойства. Приводится пример предметной модели в области Web browsing. |
| | |
| | Проектирование DSL проще всего осуществляется на основе существующих моделей предметно-ориентированных языков. Во-первых, в данном случае возможно комбинирование предметно-ориентированных признаков на базе существующей модели языка. Во-вторых, любую существующую модель можно расширить, дополнив признаки соответствующие интересующей предметной области. Примеры можно условно разделить на принципиально различающиеся либо по строению, либо по принципу проектирования: формальные и неформальные; разработка и эксплуатация моделируемого языка. |
| | |
| | Авторами приводятся примеры имплементаций исполняемых DSL: компилятора (AL, ATMOL, ESP) – чтение и перевод конструкций DSL в машинные команды, интерпретатора (ASTLOG) – чтение и определение конструкций DSL методом «получить-декодировать-выполнить», препроцессора (S-XML) и др. Для примеров компилятора и интерпретатора приводятся преимущества: |
| | |
| | * предметно-специфичный анализ, оптимизация, верификация, параллелизация и преобразование. |
| | |
| | И недостатки: |
| | |
| | * высокие трудозатраты в связи с имплементацией сложного языкового процессора; |
| | * не все языки спроектированы таким необходимым образом, что имеются возможности их расширить или дополнить. |
| | |
| | Тем не менее, практически все недостатки могут быть в какой-либо мере минимизированы, если наибольшая часть работ по имплементации языкового процессора автоматизирована. Приведено сравнение предложенной в работе системы классификации примеров с существующими. Рассмотрены общие и специфичные примеры. В результате отмечено наличие в исследуемой работе традиционных техник проектирования и имплементации, свойственных универсальным языкам. Наличие данных техник обусловлено их релевантностью не только к универсальным, но так же и к DSL. |