函数式编程思维[试读]
1.1 范式转变
我们用几分钟来想象一下自己是一名伐木工人,手里有林场里最好的斧子,因此你是 工作效率最高的。突然有一天场里来了个推销的,他把一种新的砍树工具——链锯——给夸到了天上去。这人很有说服力,所以你也买了一把,不过你不懂得怎么用。你估摸着按照自己原来擅长的砍树方法,把链锯大力地挥向树干——不知道要先发动它。“链锯不过是时髦的样子货罢了”,没砍几下你就得出了这样的结论,于是把它丢到一边重新捡起用惯了的斧子。就在这个时候,有人在你面前把链锯给发动了…… 学习一种全新的编程范式,困难并不在于掌握新的语言。毕竟能拿起这本书的读者, 学过的编程语言少说也有一箩筐——语法不过是些小细节罢了。真正考验人的,是... 查看全部[ 1.1 范式转变 ]
1.2 跟上语言发展的潮流
如果我们关注各种语言的发展情况就会发现,所有的主流语言都在进行函数式方面的 扩充。早走一步的Groovy 已经具备了丰富的函数式特性,包括像“记忆”(memoization,指运行时自动缓存函数返回值的能力)这样的高级特性在内。随着lambda 块(也就是高阶函数)被纳入Java 8,Java 语言也终于披挂上函数式的武器。JavaScript,这种也许算得上使用最为广泛的语言,本身就拥有不少函数式特性。就连最老成持重的C++ 语言,也在2011 年版的语言标准里增加了lambda 块,引人关注的Boost.Phoenix(http://dwz.cn/phoenix-library)等类库,更... 查看全部[ 1.2 跟上语言发展的潮流 ]
1.3 把控制权让渡给语言/运行时
在计算机科学短短的发展历史上,有时候会从技术主流分出一些枝杈,有源于实务界的,也有源于学术界的。例如在20 世纪90 年代个人电脑大发展的时期,第四代编程 语言(4GL)也出现了爆发式的流行,涌现了dBASE、Clipper、FoxPro、Paradox 等不可胜数的新语言。这些语言的卖点之一是比C、Pascal 等第三代语言(3GL)更高层次的抽象。 换言之,4GL 下的一行命令,3GL 可能要用很多行才写得出来,因为4GL 自带了更丰富的编程环境。像从磁盘读取流行的数据库格式这样的功能,4GL 天生就具备,并不需要使用者特意去实现。 函数式编程也是这样一根横生出来的枝杈,是学术... 查看全部[ 1.3 把控制权让渡给语言/运行时 ]
1.4 简洁
Working with Legacy Code 的作者Michael Feathers 用寥寥数语 (https://twitter.com/mfeathers/status/29581296216)捕捉到了函数式抽象和面向对象抽象的关键区别: 面向对象编程通过封装不确定因素来使代码能被人理解;函数式编程通过尽量减少不确定因素来使代码能被人理解。 ——Michael Feathers 请回想一下你熟悉的封装、作用域、可见性等面向对象编程(OOP)构造,这些机制的存在意义,都是为了精细地控制谁能够感知状态和改变状态。而当涉及多线程的时候 ,对状态的控制就更复杂了。这些机制就属于M... 查看全部[ 1.4 简洁 ]
书名: 函数式编程思维
作者: [美] Neal Ford
出版社: 人民邮电出版社
原作名: Functional Thinking
译者: 郭晓刚
出版年: 2015-8
页数: 162
定价: 49.00元
装帧: 平装
ISBN: 9787115400413