Vit*_*sky 10 aop design-patterns functional-programming dynamic-programming
我们有一本非常好的GoF书(设计模式:可重用的面向对象软件的元素),关于面向对象编程中的模式,以及关于这个主题的大量文章和资源.
是否有关于函数式编程的模式(最佳实践)的书籍(文章,资源)?
对于Python和Ruby等语言的动态编程?
对于AOP?
sdc*_*vvc 15
之前提出了一个相关问题:"函数式编程是否取代了GoF设计模式",并得到了很好的响应.
在FP中,"设计模式"的等价物非常模糊.通常,每次在代码中看到"模式"时,您都应该以统一的方式创建一些内容来覆盖它的所有用途.通常它将是一个更高阶的函数.
例如,以下C代码
for (int i = 0; i < n; i++)
if (a[i] == 42)
return true;
return false;
Run Code Online (Sandbox Code Playgroud)
可以想到一些基本的"设计模式" - 检查列表中是否有一些特殊元素.此代码段可能会在具有不同条件的代码中出现多次.在FP中,您只需使用更高阶的函数几次.它不再是"模式"了.
函数式编程有自己的实践,但它们与OOP中的"设计模式"有很大不同.它们包括使用多态性,列表,高阶函数,不变性/纯度,懒惰[并非所有都是FP的必要或特定] ...另请参阅"FP的核心概念是什么".此外,类型类(Haskell),模块和仿函数(OCaml),延续,monad,拉链,指树,monoid,箭头,applicative functors,monad变换器,许多纯函数数据结构(书)等.功能珍珠,已经提到过Randall Schulz在最好的情况下形成了非常丰富的FP资源.
要了解如何编写代码的成语,任何书籍/资源上的函数式编程语言就足够恕我直言(例如,RWH和LYAH); 在那里总是解释在命令性和功能性之间的差异.
在动态语言中,杰夫福斯特的链接是一个很好的收藏; 这里是一个非常聪明的JavaScript中的memoization,可以被认为是一种"设计模式".
GoF中描述的设计模式列表是针对C++和Java等语言编写的.它有时被认为是使灵活语言更具动态性的变通方法列表.例如,Ruby中并不真正需要访问者模式,因为您可以在运行时简单地将添加成员函数更改为您的类.如果你可以使用mixins,装饰器模式已经过时了.
根据我的经验,当我使用C++实现解决方案时,我倾向于花费大部分时间编写脚手架代码.我首先创建一个允许我在应用程序的程序域中思考的平台.设计模式可能是为了对不同类型的脚手架进行分类而开发的.
我应该提一下,当我在Ruby编程时,我没有太多的支持代码.似乎没有必要.
我的理论是,其他语言并不仅仅因为它们的基本语言结构足够而强调设计模式的概念.为了防御Java和C++:也许这是因为函数和AOP语言经常用于更具体的问题域或利基,而Java和C++用于所有事情.
现在换一些不同的东西.如果你对OO设计感到有点厌倦并想要学习新东西,那么你可能会对Stepanov编写的"编程元素 "一书感兴趣.在本书中,他解释了如何从数学的角度来探讨编程.有关预览,请查看他的Adobe 课堂笔记(在此页面上找到).您可能也对Adobe的Collected Papers感兴趣.
归档时间: |
|
查看次数: |
1792 次 |
最近记录: |