Специфичные для домена языки (DSL) и дизайн, управляемый доменом (DDD)

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

Ответ 1

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

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

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

Ответ 2

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

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

Ответ 3

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

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

Ответ 5

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

Здесь видео обо мне обсуждает это на сайте DomainDriven:

http://domaindrivendesign.org/library/bell_gitlevich_2009

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

Ответ 6

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

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

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

Ответ 7

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

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

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

Ответ 8

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

Сходство заключается в том, что оба они фокусируются на конкретной области.