что такое DSL простыми словами? - PullRequest
0 голосов
/ 19 марта 2012

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

Первая проблема возникла, что именно DSL? После некоторого поиска Groovy очень хорошо поддерживает DSL. Затем я иду и читаю документы Groovy и пробую сам.

И у меня сложилось впечатление, что DSL - это просто какие-то файлы конфигурации, состоящие из текстов, XML, и вы используете некоторые инструменты, такие как Groovy, для его анализа, он волшебным образом становится некоторыми методами или функциями, которые вы можете вызывать. Что случилось?

Я читаю что-то, но не могу понять это прямо. Любая помощь?

Ответы [ 3 ]

4 голосов
/ 19 марта 2012

Вы читали это ?Мартин Фаулер - авторитет в этом вопросе и великий писатель.Я сомневаюсь, что кто-нибудь улучшит первый абзац.Если вы все еще не получили его, дайте ему немного времени и перечитайте статью несколько раз.

Я бы порекомендовал посмотреть в MPS

A JetBrain *.Книга может быть ошеломляющей, но есть относительно новая доступная .

И у меня сложилось впечатление, что DSL - это просто какой-то файл конфигурации, состоящий из текстов, XML и вы используетенекоторые инструменты, такие как Groovy для его анализа, волшебным образом превращаются в некоторые методы или функции, которые вы можете вызывать.Что случилось?

Не думаю, что ваше впечатление совершенно точное.Я бы забыл про Groovy, парсинг и все детали реализации.Сосредоточьтесь на проблеме, которую пытается решить DSL.

Дизайнер DSL пытается придумать язык псевдопрограммирования, который эксперт, не знакомый с такими языками программирования, как Groovy, Java или C #, признает простой язык, описывающий их путь они решают проблемы.

В DSL используются термины и понятия, знакомые любому, кто знает об этом домене.

DSL защищает пользователей от базовых деталей реализации, чтобы они могли сосредоточиться на том, как атаковать свои проблемы.

DSL написан для удобства бизнес-пользователей , а не разработчиков.

Имейте это в виду, а остальное - реализация.Глаз на приз ....

2 голосов
/ 19 марта 2012

DSL - это язык, предназначенный для определенного домена.Например, известный CSS - это язык, специфичный для предметной области, который служит для оформления и форматирования документа.

Используя Groovy, вы можете создать свой собственный DSL, ориентированный на любой выбранный домен - например, бухгалтерский учет, телекоммуникации, банковское дело и т. Д. Это означает, что язык будет использовать общую терминологию этой области, соответствующую потребностям этого домена.Этот язык будет легко понятен людям в этой области, которые не обязательно являются техническими (например, бухгалтеры).В некоторых случаях он фокусируется на использовании не программистами.В частности, Groovy - это динамический язык, с помощью которого вы можете разрешить конечным пользователям динамически добавлять сценарии кода, аналогично тому, что Excel делает с VB, через файлы конфигурации.

Вам следует углубиться в публикации Мартина Фаулера, если вы заинтересованы в этомв любом случае.

2 голосов
/ 19 марта 2012

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

Например, язык, который калькулятор использует только с + - * / и числами, можно назвать доменомконкретный язык.Он имеет преимущество перед обычным языком программирования в том, что программы никогда не будут работать с ошибками, сбоями, циклами и т. Д. Другими примерами доменов могут быть веб-разработки - например, Ur / Web - это DSL для создания веб-приложений.SQL - это язык, специфичный для домена базы данных.и т.д.

Я немного знаю о Groovy, но, похоже, существуют специальные инструменты для его использования для создания DSL.По сути, для создания DSL вам необходимо указать синтаксис и некоторую семантику.Как именно Groovy делает это, я не знаю.

...