Успешные доменные языки? Какой из них вы используете?

Я заинтересован в разработке и реализации предметно-ориентированных языков. Многие из известных мне DSL происходят из академического мира.

Можете ли вы дать мне несколько указателей на DSL, которые на самом деле используются в отрасли? и что вы используете ежедневно... которые действительно удобны..

(Я тоже интересуюсь декларативными языками, но не основанными на XML...)...

Я хотел бы составить (не исчерпывающий) список языков, развернутых в отрасли... я знаю, что это огромный...

Иногда я использую язык общего назначения, что можно сделать тривиально, используя DSL.

РЕДАКТИРОВАТЬ В основном меня интересуют DSL, ориентированные на приложения, а не встроенные языки. Например, SQL соответствует тому, что я ищу, но SQL, встроенный в Java, меня не интересует. Другой пример того языка, который я ищу, это X#

16 ответов

DSL, настолько успешный, что у него есть свой собственный тег SO, - это язык регулярных выражений. Конечно, это относится только к области соответствия строковых шаблонов.

Еще один популярный, но с которым у меня нет опыта VHDL. Популярность VHDL связана с тем, что он легко конвертируется для использования в FPGA.

[edit] Хотя это, конечно, не полный Тьюринг, спецификатор формата printf() в C можно рассматривать как другой предметно-ориентированный язык.

NMake, MSBuild, lex, yacc, bison, flex, TeX, PostScript, XAML, SSIS, Wix

EBNF, вероятно, является наиболее широко используемым предметно-ориентированным языком в своей области - языком описания языков.

Википедия предполагает, что формулы для электронных таблиц и сценарии оболочки являются языками, специфичными для предметной области. Это сделало бы их, вероятно, самыми распространенными примерами.

Awk предоставляет предметно-ориентированный язык для обработки полуструктурированных текстовых данных.
Многие из более мощных инструментов командной строки Unix, широко используемых, таких как find и grep, могут быть классифицированы как имеющие язык, специфичный для предметной области (даже если они ограничены только аргументами командной строки)

Я не знаю, хотите ли вы также рассмотреть графические DSL. Я бы включил

Оба вышеперечисленных были созданы с использованием DSL Toolkit.

MEL (язык выражений Maya) - это язык командной строки, который AutoDesk Maya использует во всем своем проекте. Формат файла Maya Ascii, в котором сцены могут быть сохранены, использует MEL для создания своих сцен. Пользовательский интерфейс в значительной степени построен и управляется с использованием MEL-скриптов. Выражения, которые вы можете использовать для управления каналами и атрибутами объектов - MEL.

Я полагаю, что технически это можно считать встроенным языком в тех случаях, когда вы просто пишете для него скрипты. Однако без MEL Майя в принципе не существовала бы. Нет формата файла ascii, нет интерфейса пользователя и т. Д

Вот вопрос, который я задал о DSL, написанных на Ruby: репозитории Ruby DSL (Domain Specific Language), примеры

Помимо Ruby DSL, SQL является прекрасным примером очень популярного DSL, как и AWK.

Вы можете написать язык, специфичный для предметной области, на таких языках, как Boo, но я думаю, что само определение предметной области указывает на то, что в большинстве случаев речь идет о конкретной отрасли или даже об одной компании...

В Википедии есть хорошая вводная статья по этому вопросу.

В этом обзоре есть раздел с примерами хороших ссылок.

Для бизнес-процессов у нас есть, например,

  • BPEL, который выражается в XML и является исполняемым
  • BPMN, который является визуальным языком и используется для моделирования

Tcl - это язык, который изначально был разработан как среда для создания DSL - предоставляющая базовые функциональные возможности, такие как программируемость и ввод / вывод, в то время как специфичные для домена части создавались заново для каждого приложения, - который вырос в общий язык сценариев. Expect- один из наиболее широко известных DSL на основе Tcl.

Два (еще не упомянутых), которые произвели на меня наибольшее впечатление:

  • OpenSCAD для твердого 3D моделирования
  • TaskJuggler для управления проектами (!)

Я большой поклонник декларативных DSL. Операционные DSL (такие как Maple, Mathematica и R тоже хороши, но ничем не отличаются от обычных языков).

  1. Язык Мак Стелс для программирования поведения персонажей (не думайте, что у него есть имя)
  2. Сленг - язык Goldman Sachs (я слышал об этом, но никогда не использовал его)
  3. Язык программирования CMS-2 Navy

Erlang изначально был языком для телекоммуникаций, хотя сейчас (иногда) используется как язык общего назначения.

Веб-поиск Google поддерживает некоторую усложняющуюся параметризацию

Можно утверждать, что это один из наиболее широко используемых DSL, если хотя бы небольшая часть их пользовательской базы когда-либо использует одно из них, в отличие от стандартного списка слов.

На рельсах есть части ruby, которые можно рассматривать как предметно-ориентированные языки. В частности, его язык для определения реляционных таблиц.

Другие вопросы по тегам