Возможности и проблемы использования современного языкового инструментария в разработке на предметно-ориентированных языках программирования
Бесплатный доступ
В статье кратко рассматриваются общие для различных современных программных средств возможности, которые позволяют создавать и поддерживать предметно-ориентированные языки программирования. Среди возможностей рассматриваются возможности среды создания предметно-ориентированных языков и среды редактирования программ на таких языках. При рассмотрении возможностей сред редактирования основное внимание уделяется описанию проекционных сред редактирования, которые используются в современных языковых инструментальных средствах и позволяют привнести возможности интеллектуальных редакторов современных интегрированных сред разработки. В качестве вывода в данном кратком сообщении приводятся проблемы использования современных языковых инструментальных средств и разработки в языково-ориентированном стиле без их применения. Основное внимание в заключении уделено проблеме представления семантики предметно-ориентированных языков и отображения семантики на синтаксис. Делается предположение о возможности использования различных способов представления знаний для описания семантических моделей предметноориентированных языков.
Предметно-ориентированный язык программирования, языковой инструментарий, языково-ориентированное программирование, семантическая модель, проекционный редактор
Короткий адрес: https://sciup.org/147154889
IDR: 147154889
Текст краткого сообщения Возможности и проблемы использования современного языкового инструментария в разработке на предметно-ориентированных языках программирования
Сегодня в промышленной разработке программного обеспечения крайне важную роль в повышении производительности труда программистов играют интеллектуальные интегрированные среды разработки. При активном применении в процессе разработки языково-ориентированного стиля программирования, который основывается на использовании предметно-ориентированных языков программирования (domain-specific language, DSL), эффективность работы разработчиков также будет зависеть от наличия программных средств для создания и поддержки предметноориентированных языков. Такие средства называют языковым инструментарием (языковыми инструментальными средствами, language workbench [1]).
Среди возможностей современных языковых средств, которые могут быть различными по особенностям реализации и предоставляемой функциональности, можно выделить следующие:
-
1. Возможности среды создания DSL:
-
a. Определение семантической модели.
-
b. Определение синтаксиса.
-
c. Определение правил отображения семантики на синтаксис.
-
2. Возможности среды редактирования программ на DSL (и возможности создания таких сред для разрабатываемых DSL).
Возможности среды создания DSL
В данном пункте наиболее подробно остановимся на проблеме определения семантической модели, как наиболее сложной и важной составляющей DSL.
М. Фаулер [1], говоря об определении семантической модели предметно-ориентированных языков, разделяет определение схемы семантической модели (структуры данных семантической модели, статической семантики) и поведения семантической модели, то есть того, каким образом будет выполняться семантическая модель, наполненная данными из конкретного сценария на DSL. Выполнение семантической модели может быть реализовано как непосредственно, само-
Возможности и проблемы использования современного языкового инструментария в разработке на предметно-ориентированных языках программирования стоятельно (по аналогии с интерпретацией), так и путем генерации выполняемого кода (например, на некотором скриптовом языке – по аналогии с компиляцией).
Важно отметить, что так как структура семантической модели определяется предметной областью предметно-ориентированного языка, то в основе ее может лежать альтернативная модель вычисления [1] или парадигма программирования (альтернативная императивной парадигме языка программирования общего назначения, на котором разрабатывается программная система). В качестве альтернативных вычислительных моделей и парадигм программирования могут выступать, например, модель конечного автомата, таблицы решений, системы правил вывода ЕСЛИ...ТО, сеть зависимостей, декларативное описание конфигурации и т. д.
Возможности среды редактирования программ на DSL
Важной особенностью сред редактирования сценариев на создаваемых DSL является использование проекционной системы редактирования , а не редактирования непосредственно исходных текстов [1]. При редактировании на основе исходных текстов редактируемое текстовое представление не привязано к инструментарию и в качестве редактора сценариев на DSL, по сути, можно использовать любой текстовый редактор, а редактируемое представление совпадает с хранимым (текстовый файл). При проекционном редактировании хранимое представление семантической модели для конкретного сценария редактируется с помощью специального инструментария, причем для разных элементов сценария могут быть использованы различные проекции (представления). Они могут быть как в привычном текстовом виде, так и в виде графов, форм, таблиц, схем и т.д. Каждый вид представления отражает один из конкретных синтаксисов созданного DSL.
При проекционном редактировании сам предметно-ориентированный язык и среда редактирования сценариев на DSL представляют собой единое неразрывное целое. В качестве примера систем проекционного редактирования, рассчитанных на конечных пользователей, можно рассматривать инструментарий для работы с базами данных Microsoft Access или редактор электронных таблиц Microsoft Excel. В качестве примера полноценного языкового инструментария можно рассматривать программный продукт JetBrains MPS [2]. Он предназначен для создания DSL, а для разработки программ на DSL в нем используется проекционный редактор, который представляет сценарий на DSL как синтаксическое дерево. Такой подход к редактированию позволяет разрешить проблемы неоднозначности редактирования синтаксических конструкций, которые могут возникнуть при расширении текстовой грамматики языка или при совмещении нескольких расширений [3]. Стоит отметить, что инструментарий JetBrains MPS ориентирован на программистов, а не на конечных пользователей.
Проекционный редактор позволяет привнести возможности интеллектуальных редакторов (автодополнение, генерация кода, средства рефакторинга, отладки, управления версиями и т. д.), делая процесс создания программ на DSL максимально легким, быстрым и удобным для программистов или экспертов в предметной области. Кроме того, так как каждое представление связано с одним из синтаксисов DSL, то среда редактирования сценариев на DSL должна реагировать на изменение DSL, разрабатываемого в языковом инструментарии, и перестраиваться в соответствии с изменениями конкретных синтаксисов языка.
Заключение
Перечислим проблемы использования современных языковых инструментальных средств и разработки в языково-ориентированном стиле без их применения:
-
1. Высокие затраты на разработку «вручную» (без языкового инструментария) DSL (в первую очередь внешних DSL), замкнутость и нерациональность их повторного использования в смежных предметных областях.
-
2. Сложность использования (освоения) существующих языковых инструментариев.
-
3. Сложность организации собственного языкового инструментария – интегрированной среды для создания и поддержки DSL не только на уровне синтаксиса, но и на уровне семантики.
-
4. Отсутствие в современных языковых инструментариях средств представления семантической модели языка и отображения семантики языка на синтаксис (за исключением Intentional Workbench (Knowledge Workbench) – разработки компании Intentional Software [4]).
Говоря о проблеме представления семантики предметно-ориентированных языков в языковом инструментарии, можно отдельно отметить, что альтернативные вычислительные модели, примеры которых приводились выше, зачастую сходны со способами представления знаний. Так, например, семантика сети зависимостей может быть представлена в виде семантической сети, сис-
Д.С. Ботов тема правил вывода ЕСЛИ...ТО – в виде системы продукций. Поэтому можно предположить, что эффективные методы представления семантики предметно-ориентированных языков и их реализация в языковом инструментарии могут быть созданы на стыке прикладного программирования и программной инженерии, с одной стороны (в качестве практической реализации и приложения), и с другой стороны, инженерии знаний (как теоретической основы).
Список литературы Возможности и проблемы использования современного языкового инструментария в разработке на предметно-ориентированных языках программирования
- Fowler, M. Domain Specific Languages/M. Fowler. Addison-Wesley Professional, 2010. 640p.
- JetBrains MPS, MetaProgramming System. -http://www.jetbrains.com/mps/
- Соломатов, К. Как система JetBrains MPS позволяет достичь более широкого использование DSL-ей (языков специфичных для предметной области)/К. Соломатов. -http://habrahabr.ru/post/66094/
- Knowledge Workbench, Intentional Software. -http://www.intentsoft.com