DSL

Версия от 14:39, 14 января 2016; Admin (обсуждение | вклад) (Новая страница: «'''Предметно-ориентированный язык''' или '''предметно-специфичный язык''' (англ. Domain Specific langua…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)

Предметно-ориентированный язык или предметно-специфичный язык (англ. Domain Specific language, DSL — «язык, специфичный для предметной области») — язык программирования, специализированный для конкретной области применения (в противоположность языку общего назначения, применимому к широкому спектру областей и не учитывающему особенности конкретных сфер знаний). Является ключевым понятием языково-ориентированного программирования.

Классические примеры DSL:

  • TeX/LaTeX для подготовки (компьютерной вёрстки) текстовых документов;
  • Perl для манипулирования текстами;
  • SQL для СУБД;
  • Tcl/Tk для графического интерфейса пользователя;
  • HTML и SGML для разметки документов;
  • Verilog и VHDL для описания аппаратного обеспечения;
  • Mathematica и Maple для символьных вычислений;
  • AutoLisp для компьютерного моделирования (САПР);
  • Prolog для задач, сформулированных в терминах исчисления предикатов;
  • ML и Haskell для задач, сформулированных в терминах функций (Haskell временами определяется как DSL для денотационной семантики[en]).


DSL - ветвь модельного движения, которая связана с понятием предметно-специфичного языка, обеспечивающего применяемый экспертами метод описания для получения предметно-специфичной группы описаний. DSL объединяет (концептуальную) метамодель и (графическую и/или текстовую) нотацию. Это отличается от MDA, в которой предписываются нотации и метамодели, основанные только на MOF/UML. Тем самым программисты должны обеспечивать отдельную интерактивную среду разработки (IDE, interactive development environment) для каждого DSL, а затем эксперты-непрограммисты будут использовать эти предметно-специфичные IDE для моделирования их систем.


Все САПР могут быть рассмотрены как наборы таких IDE для инженерных предметно-специфичных языков (например, диаграмм P&ID для моделирования гидравлических систем). Если мы хотим создать модель завода непрерывного цикла (например, нефтеперерабатывающего завода), то предстоит трудный выбор между моделированием гидравлических систем в MDA/SysML и традиционным P&ID-моделированием. Предметно-специфические языки современных САПР легко выигрывают. Но потом мы все равно должны объединить все эти несовместимые между собой модели на разных DSL в одну связанную модель завода.


Есть две возможности предоставить такую связанность для зоопарка различных DSL:

  1. Онтологическое совмещение (mapping) метамоделей различных DSL, и тем самым совмещение моделей в датацентрическом репозитории моделей.
  2. Использование языковых рабочих мест (language workbenches).