只是阅读(德语)Wiki-关于模型驱动的SW-开发(MDSD)的文章。总结Wiki的定义:
由于我知道并使用高级函数式编程,我想知道,我的实际问题是: MDSD只是一种断断续续的尝试,将高级函数式编程提供的强大特性注入到本质上缺乏这些特性的编程语言/范例中吗?
(或者我是否误解了MDSD,甚至可以用来支持更高层次的函数式编程?)
发布于 2011-05-05 13:30:58
我宁愿从另一个角度看它。OOP、TDD、TDD、领域驱动的设计以及许多其他的范例只有that...paradigms。他们是一种看待软件开发任务的方法,人们已经开发出这些任务来解决他们认为在他们之前缺乏的东西。事实证明,函数式编程也是如此--它赋予程序员在没有一流功能的语言中不优雅的抽象能力。因此,我不会说MDSD是一种绝望的尝试,它提供非功能语言的功能特性,正如我说的,它是从不同的角度来解决同样的问题的人。
这最近提出的一些问题有着不同的表达方式。ShreevatsaR说,“几乎所有你能用宏做的事情,你都可以用高阶函数来做”。Matthias说:“更多的elaborate...concepts (如monads和箭头)稍微减轻了宏的缺乏。”其他评论也呼应了同样的主题。您提到MDSD的原则之一是发电机。宏是编译时生成器.因此,我会将他们的陈述翻译成MDSD在功能语言中天生容易的论点。
发布于 2011-05-05 13:44:18
在创建DSL (领域特定语言) (FP)和创建大量域对象 (OOP) (在对象中包含业务逻辑)之间有一个很大的区别。
FP可能会遇到与过程语言相同的问题(和优点):行为和数据的分离。OOP语言阻止了这一点。这种分离称为贫血域模型。
这种“分离”会使更改数据变得非常困难(更糟糕的是使用DSL) --参见我的文章:在函数编程中处理增量数据建模更改
然而,另一方面,改变行为和拥有无状态的东西是痛苦的与OOP领域驱动的设计。然而,对于诸如Meta-programming、、AOP、ITD和这样的产品,这就不是什么问题了。
Scala和Ruby是这两种技术混合的一个很好的例子。
https://stackoverflow.com/questions/5897996
复制相似问题