Разработка программного обеспечения с модельным приводом от программного обеспечения против Haskell

StackOverflow https://stackoverflow.com/questions/5897996

Вопрос

Просто читаю (на немецком языке) Wiki-статью о разработке программного обеспечения на основе моделей (MDSD).Подводя итоги Wiki-Definition:

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

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

(Или я неправильно понял и можно ли использовать MDSD для существенной поддержки функционального программирования более высокого порядка?)

Это было полезно?

Решение

Я предпочитаю смотреть на это с другой стороны. ООП, MDSD, TDD, доменно-ориентированный дизайн и многие другие парадигмы - это всего лишь ... парадигмы. Это способы взглянуть на задачу разработки программного обеспечения, которую люди разработали для решения проблем, которые, по их мнению, отсутствовали в том, что было до них. Оказывается, функциональное программирование делает то же самое - дает программисту возможности абстракции, которые не изящны для языков, не имеющих первоклассных функций. Поэтому я бы не сказал, что MDSD - это отчаянная попытка наделить нефункциональные языки функциональными возможностями в такой степени, как если бы люди подошли к одной и той же проблеме с другой точки зрения.

В некоторых ответах на этот недавний вопрос SO можно сказать иначе. . ShreevatsaR говорит: «Почти все, что вы можете делать с макросами, вы можете делать с помощью функций более высокого порядка». Матиас Бенкард говорит: «Отсутствие макросов несколько смягчается более сложными ... концепциями, такими как монады и стрелы». Другие комментарии также отражают ту же тему. Вы упомянули, что один из принципов MDSD - генераторы. Макросы - это генераторы времени компиляции. Поэтому я бы перевел их утверждения как аргумент в пользу того, что MDSD по своей сути прост в использовании функциональных языков.

Другие советы

Существует серьезная разница между созданием DSL (удельным языком домена) (FP) и создание целого букета объектов домена (oop) (с бизнес-логикой внутри объекты).

fp может понести одинаковую проблему (и преимущества), которые делают процедурные языки: разделение поведения и данных . Языки OOP препятствуют этому. Это разделение известно как модель анемии домена .

Это «разделение» может сделать изменение ваших данных очень сложно (и, возможно, даже хуже с DSL) см. Мой пост:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top