Предметно-ориентированный язык программирования | это... Что такое Предметно-ориентированный язык программирования? (original) (raw)
Предметно-ориентированный язык программирования (англ. domain-specific programming language, domain-specific language, DSL) — язык программирования, специально разработанный для решения определённого круга задач, в отличие от языков программирования общего назначения, таких, как Си, или языков моделирования общего назначения наподобие UML и др.
В рамках таких языков, как Forth и Lisp, всегда существовала, но не всегда использовалась возможность создания DSL-языков.
Языки программирования предметной области, дополненные технологиями метапрограммирования, являются эффективным средством автоматизации разработки программного обеспечения и в настоящий момент находят широкое применение в области информационных технологий.
Примерами предметно-ориентированных языков могут служить:
- Адаптивные объектные модели — это модели, которые строятся специально для определённой предметной области на объектно-ориентированных языках общего назначения.
- Файлы XML, используемые в современных проектах для конфигураций программных каркасов.
- Электронные документы с формальным описанием логики работы приложения.
Предметно-ориентированные языки разделяют на внешние и внутренние. Внешние — это языки, написанные на языке, отличном от основного языка программирования. Примерами такого типа могут служить конфигурационные XML-файлы. Внутренние языки, напротив, реализованы на языке программирования общего назначения. В качестве примера можно назвать адаптивные объектные модели.
Процесс создания предметно-ориентированного языка
Процесс создания нового предметно-ориентированного языка состоит из трёх шагов:
- Определение абстрактного синтаксиса.
- Определение конкретного синтаксиса.
- Определение правил трансформации.
Абстрактный синтаксис описывает понятия, используемые в языке, в виде, пригодном для машинной обработки. Существует два способа задания абстрактного синтаксиса — в виде метамодели и в виде КС-грамматики. Конкретный синтаксис — это представление понятий абстрактного синтаксиса, которыми может манипулировать пользователь. Представление может быть текстовым, графическим или симбиозом двух первых. Правила трансформаций — это правила, по которым абстрактное представление транслируется в исполнимое. Различают два типа трансформаций — горизонтальные и вертикальные. Примером горизонтальной трансформации может служить автоматический рефакторинг, предоставляемый современными средствами разработки. Примером вертикальной трансформации может служить генерация байт-кода Java из исходного кода программ на Java.
Ссылки
- Lisp — первый язык программирования общего назначения со встроенными возможностями разработки DSL-ей (макросистемой).
- Nemerle — современный мульти-парадигмальный язык со встроенной поддержкой разработки DSL-ей (макросистемой).
- Factor — современный Forth-подобный язык.
- Дмитрий Кириллов. Ориентация на язык. Компьютерра (14 марта 2006). Проверено 5 мая 2006.
- Сергей Дмитриев. Языково-ориентированное программирование
- Игорь Тамащук. Domain Specific Language в своём приложении — это просто. ??? (22 октября 2008). Архивировано из первоисточника 12 февраля 2012. Проверено 24 октября 2008.
Литература
- Мартин Фаулер Предметно-ориентированные языки программирования = Domain Specific Languages (Addison-Wesley Signature Series) (Hardcover). — М.: «Вильямс», 2011. — 576 с. — ISBN 978-5-8459-1738-6