Домен-специфические языки (DSL) и доменно-управляемый дизайн (DDD) - PullRequest
10 голосов
/ 07 октября 2008

В чем различия и сходства между предметно-ориентированными языками (DSL) и доменно-управляемым дизайном (DDD)?

Ответы [ 9 ]

10 голосов
/ 07 октября 2008

Domain Driven Design (DDD) - это способ думать и сообщать о проблемах и их решениях.

Domain Specific Language (DSL) - это способ написания кода.

Они похожи, потому что они оба начинаются со слова "домен". Вот и все, наверное. : -)

6 голосов
/ 07 октября 2008

Домен-управляемый дизайн подчеркивает роль проблемной области при создании фундаментального словаря, концепций и объектной модели для проектируемой системы.

Специфичный для домена язык - это нотация для указания или реализации определенных частей системы, ориентированная на потребности специалиста в этой области (то есть минимизация «программируемых» аспектов большинства языков программирования или спецификаций).

2 голосов
/ 06 октября 2010

Я полагаю, что оба имеют своей главной целью снижение шума при программировании, DDD воздействует на семантический шум, а DSL - на синтаксический шум.

Это может помочь понять мое мнение:

http://fragmental.tw/2009/03/12/expessive-design-slides/

http://fragmental.tw/2008/04/20/domain-specific-languages-and-video-games/

2 голосов
/ 07 октября 2008

Я бы сказал, что они как-то связаны, а не только словом «домен». Если у вас есть хороший (управляемый доменом) дизайн, он, несомненно, поможет в создании надежного DSL.

«DDD специально не требует использования DSL, хотя его можно использовать для определения DSL». - Википедия

1 голос
/ 10 мая 2010

Одним из элементов DDD можно считать способность разрабатывать повсеместно распространенные языки для общения с заинтересованными сторонами по поводу домена. Для подмножества тех UL, которые являются однозначными и потенциально исполняемыми, вы можете реализовать их с использованием внутреннего или внешнего DSL.

Вот видео, где я обсуждаю это на сайте DomainDriven:

http://domaindrivendesign.org/library/bell_gitlevich_2009

С наилучшими пожеланиями, Питер

0 голосов
/ 30 мая 2019

Википедия (https://en.wikipedia.org/wiki/Domain-driven_design) имеет хороший ответ:

DDD специально не требует использования DSL, хотя это может быть используется, чтобы помочь определить DSL и поддерживать методы, такие как доменные multimodeling.

0 голосов
/ 07 декабря 2008

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

Сходство в том, что они оба ориентированы на конкретную область.

0 голосов
/ 07 октября 2008

Я думаю, что они как-то связаны (как выразился Кристоф), но это два совершенно разных аспекта. Я бы даже не отклонил заявление Джопа.

Для очень хорошо написанной информации о DSL см. Набор страниц Мартина Фаулера по DSL (в процессе), вы можете начать с примера или определения . Другое хорошее чтение - его QandA .

DDD основан на модели предметной области и обычно по крайней мере на один уровень абстракции выше, чем DSL. Оба могут существовать без другого, и, как уже говорил Кристоф, оба могут использоваться в одном проекте.

0 голосов
/ 07 октября 2008

В Википедии есть довольно четкое определение для DSL :

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

Это может быть реализовано в виде набора классов по некоторому непротиворечивому шаблону, некоторой причудливой магии шаблонов C ++ или компилятора / парсера, который интерпретирует ввод свободного текста, чтобы делать то, что вы хотите.

...