Почему Ruby on Rails называют проблемно-ориентированным языком?

Недавно, когда я пытался объяснить, почему Ruby on Rails является проблемно-ориентированным языком (DSL) интерну в моей организации, я не смог ясно сформулировать свое обоснование к эффекту, я хотел бы. Возможно, я не понимаю пространство достаточно хорошо для обучения нюансов. При перенаправлении его Martin Fowler' статья или Google оценили один InfoQ, или другой материал не помог многому также.

Некоторые могут объяснить, почему направляющие являются DSL с примером / параллельная ситуация, которая не является материалом вуду для кого-то, кто довольно плохо знаком с миром кода? Понимание идеологии могло бы также помочь в разработке запутанности экосистемы направляющих?

12
задан Peter O. 21 April 2016 в 20:56
поделиться

4 ответа

Технически ruby ​​не является DSL, он просто очень хорошо подходит для написания внутренних DSL. Эта ссылка на вики-страницу блога Мартина Фаулера должна помочь прояснить ситуацию.

Rails был описан как DSL, хотя я думаю о нем более точно как о структуре, которая очень хорошо использует несколько DSL.

Править: введение к общедоступной версии книги Мартина Фаулера о DSL содержит мотивирующий пример, хотя он по-прежнему ориентирован в большей степени на программистов.

Отредактируйте еще раз: пример "voodoo" может быть полезен, если вы укажете, что ruby ​​позволяет коду Ruby выглядеть как

port 2001

respond :resource=>"/hello" do  |request, response|
  response.body = "<message>hello</message>"
end

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

Что делает Ruby хорошим внутренним DSL, так это (1) использование блоков (любой язык с чистым замыканием имеет это преимущество), (2) класс методов, не требующий скобок, и (3) возможность изменять классы в fly (это то, что проверяет ). Наверное, есть еще кое-что, о чем я не думал.

13
ответ дан 2 December 2019 в 07:20
поделиться

Ruby - это язык, который можно использовать для создания DSL. Ruby on Rails можно рассматривать как DSL (язык, специфичный для домена) для создания веб-приложений.

5
ответ дан 2 December 2019 в 07:20
поделиться

Ruby, конечно, не DSL. Это язык общего назначения, который является противоположностью DSL. Тем не менее, это язык, который очень подходит в качестве хоста для DSL внутреннего стиля. То есть; вы можете использовать Ruby для создания DSL.

4
ответ дан 2 December 2019 в 07:20
поделиться

Я не совсем понимаю вопрос. Ruby - это не язык, специфичный для предметной области, это язык общего назначения. Нет смысла называть это DSL, потому что это не так. Следовательно, сама предпосылка вопроса не имеет смысла.

-1
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: