Успешные доменные языки? Какой из них вы используете?
Я заинтересован в разработке и реализации предметно-ориентированных языков. Многие из известных мне 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. Я бы включил
- NORMA, DSL для концептуального моделирования предметной области на основе нотации объектно-ролевого моделирования (ORM2)
- Фабрика программного обеспечения веб-сервисов, которая использует три 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, но я думаю, что само определение предметной области указывает на то, что в большинстве случаев речь идет о конкретной отрасли или даже об одной компании...
В Википедии есть хорошая вводная статья по этому вопросу.
В этом обзоре есть раздел с примерами хороших ссылок.
Для бизнес-процессов у нас есть, например,
Tcl - это язык, который изначально был разработан как среда для создания DSL - предоставляющая базовые функциональные возможности, такие как программируемость и ввод / вывод, в то время как специфичные для домена части создавались заново для каждого приложения, - который вырос в общий язык сценариев. Expect- один из наиболее широко известных DSL на основе Tcl.
Два (еще не упомянутых), которые произвели на меня наибольшее впечатление:
- OpenSCAD для твердого 3D моделирования
- TaskJuggler для управления проектами (!)
Я большой поклонник декларативных DSL. Операционные DSL (такие как Maple, Mathematica и R тоже хороши, но ничем не отличаются от обычных языков).
- Язык Мак Стелс для программирования поведения персонажей (не думайте, что у него есть имя)
- Сленг - язык Goldman Sachs (я слышал об этом, но никогда не использовал его)
- Язык программирования CMS-2 Navy
Erlang изначально был языком для телекоммуникаций, хотя сейчас (иногда) используется как язык общего назначения.
Веб-поиск Google поддерживает некоторую усложняющуюся параметризацию
Можно утверждать, что это один из наиболее широко используемых DSL, если хотя бы небольшая часть их пользовательской базы когда-либо использует одно из них, в отличие от стандартного списка слов.
На рельсах есть части ruby, которые можно рассматривать как предметно-ориентированные языки. В частности, его язык для определения реляционных таблиц.