Domain-Specific Language - это язык программирования, предназначенный для конкретной области приложения.

Язык предметно-ориентированный (DSL) это язык программирования, предназначенный для конкретной области применения.

Хорошо известные примеры, которые можно рассматривать как DSL, включают html для разметки, r для статистики.

В приведенном выше определении есть три ключевых момента.

  1. Язык программирования: DSL - это язык программирования, который используется людьми, чтобы указать компьютеру что-то делать.
  2. Ограниченная выразительность:DSL не является языком общего назначения, таким как C, Java и т. Д. Он поддерживает минимум функций, необходимых для поддержки его предметной области. Программист не может построить всю программную систему, используя DSL.
  3. Фокус на домене:DSL ориентирован на небольшой домен. Ограниченный фокус делает его простым для понимания и использования.

Мартин Фаулер делит DSL в основном на две категории:

  1. Внешний DSL: это язык автономного со своим собственным настраиваемым синтаксисем, но принятие другого языка, такими как синтаксис XML является распространенным явлением. Примером внешних DSL являются sql для запросов к базе данных, языки регулярных выражений.
  2. Внутренний DSL: Они внутренне встроены в язык общего назначения, таких как лава (язык описания аппаратных средств на вершине Haskell), грабли (система сборки поверх рубин) или латекса (структурированный язык разметки поверх текс).