Доменные языки (DSL) и доменный дизайн (DDD)

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

8 ответов


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

доменный язык (DSL) - это способ написания кода.

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


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

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


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

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


Я думаю, что оба имеют в качестве основного внимания снижение шума в программировании, DDD действует на семантический шум и DSLs в синтаксическом шуме.

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

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

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


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

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

http://domaindrivendesign.org/library/bell_gitlevich_2009

лучшие Желания, Питер!--1-->


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

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

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


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

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

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


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

сходство в том, что они оба сосредоточены на конкретной области.