相关疑难解决方法(0)

是否有用于函数式编程的软件工程方法?

今天教授的软件工程完全专注于面向对象的编程和面向世界的"自然"面向对象的视图.有一个详细的方法描述了如何将域模型转换为具有多个步骤的类模型以及许多(UML)工件,如用例图或类图.许多程序员已经内化了这种方法,并且很好地了解了如何从头开始设计面向对象的应用程序.

新的炒作是函数式编程,在许多书籍和教程中都有教授.但功能软件工程呢?在阅读有关Lisp和Clojure的文章时,我发现了两个有趣的陈述:

  1. 功能程序通常是自下而上而不是自上而下开发('On Lisp',Paul Graham)

  2. 函数程序员使用映射,其中OO程序员使用对象/类('Clojure for Java Programmers',Rich Hickley的演讲).

那么功能性应用程序的系统化(基于模型的?)设计的方法是什么,即在Lisp或Clojure中?有哪些常见步骤,我使用哪些工件,如何将它们从问题空间映射到解决方案空间?

lisp functional-programming clojure model-driven-development

202
推荐指数
7
解决办法
2万
查看次数

如何在函数式编程语言中实现Rails类型webapp中的"模型"?

在MVC Web开发框架(如Ruby on Rails,Django和CakePHP)中,HTTP请求被路由到控制器,控制器获取通常持久存储到后端数据库存储的对象.这些对象代表用户,博客帖子等内容,并且通常在其方法中包含用于权限,获取和/或变异其他对象,验证等的逻辑.

这些框架都非常面向对象.我最近一直在阅读关于函数式编程的内容,它似乎带来了诸如可测试性,简洁性,模块性等巨大的好处.然而,我见过的函数式编程的大多数例子都实现了诸如quicksort或fibonnacci序列之类的琐碎功能,而不是复杂的webapps.我看了几个"功能"的Web框架,他们似乎都很好地实现了视图和控制器,但很大程度上跳过了整个"模型"和"持久性"部分.(我正在谈论更多像Compojure这样的框架,这些框架应该是纯粹的功能,而不是一些方便的似乎使用Scala的OO部分的模型 - 但如果我在这里错了,请纠正我.)

我还没有看到如何使用函数式编程来提供OO编程提供的隐喻,即表映射到对象,以及对象可以提供强大的封装逻辑(如权限和验证)的方法.此外,使用SQL查询来保存数据的整个概念似乎违反了整个"副作用"概念.有人可以解释如何在功能编程的Web框架中实现"模型"层吗?

model-view-controller functional-programming model ruby-on-rails clojure

11
推荐指数
1
解决办法
705
查看次数