今天教授的软件工程完全集中在面向对象的编程和面向对象的世界观上。有一种详细的方法描述了如何使用多个步骤和大量(UML)构件(如用例图或类图)将域模型转换为类模型。许多程序员已经内化了这种方法,并且对如何从头开始设计一个面向对象的应用程序有了很好的想法。
新的炒作是函数式编程,这在许多书籍和教程中都有教授。但是功能软件工程呢?在阅读关于Lisp和Clojure的文章时,我看到了两个有趣的陈述:
那么,系统(基于模型)的方法是什么呢?功能应用程序的设计,即在Lisp或Clojure中?常见的步骤是什么,我使用什么工件,如何将它们从问题空间映射到解决方案空间?
发布于 2011-02-05 06:17:21
感谢上帝,软件工程人员还没有发现函数式编程。以下是一些相似之处:
那么,系统(基于模型)的方法是什么呢?功能应用程序的设计,即在Lisp或Clojure中?
任何基于数据抽象的设计方法都能很好地工作。我碰巧认为,当语言有显式类型时,这会更容易,但即使没有显式类型,它也能工作。一本很好的关于抽象数据类型的设计方法的书,很容易适应函数式编程,是Barbara和John第一版的“程序开发中的抽象和规范”。李斯科夫获得图灵奖的部分原因是他的作品。
Lisp特有的另一种设计方法是确定哪些语言扩展在您工作的问题领域中是有用的,然后使用卫生的宏将这些结构添加到您的语言中。了解这种设计的一个好地方是Matthew的文章http://queue.acm.org/detail.cfm?id=2068896。这篇文章可能在付费墙后面。通过搜索术语“特定于领域的嵌入式语言”,您还可以找到关于这种设计的更一般的材料;对于Matthew所涵盖的特定建议和例子,我可能会从格雷厄姆的http://www.paulgraham.com/onlisp.html或者http://www.paulgraham.com/acl.html开始。
常见的步骤是什么,我使用什么工件?
共同步骤:
发布于 2011-01-31 15:07:54
对于Clojure,我建议回到良好的旧关系建模。从酒窖里出来是一个鼓舞人心的读物。
发布于 2011-01-31 15:27:02
就我个人而言,我发现OO开发中的所有通常的良好实践也适用于函数式编程--只是在考虑到功能世界观的情况下做了一些小小的调整。从方法论的角度来看,你并不需要做任何根本不同的事情。
我的经验来自于近年来从Java迁移到Clojure。
下面是一些例子:
https://stackoverflow.com/questions/4852251
复制相似问题