函数式编程思维pdf

图书网 2018年12月27日11:45:56
评论
2K

Java等现代编程语言中出现了越来越多的函数式特性,跟随这本书,去了解语法表象之下真正需要掌握的新思维。中高级开发者可以从知名软件架构师Neal Ford的演示中,体会到函数式编程思想是怎样通过改换视角,让我们站在了另一个抽象层次上,把编程问题看得更加清晰。

本书每一章都会给出各种函数式编程思维的示例,并用Java 8或其他具备函数式能力的JVM语言代码实现出来。改变你的思维是本书的愿望,至少读完本书的时候,你会对各种函数式概念有一个良好的把握。

具体说来,本书将——

解释为什么众多命令式语言都在增加函数式能力

通过普通的编程问题来比较函数式和命令式的解答方案

考察将例行杂务委托给运行时的各种方式

学习用记忆和缓求值特性来取代手工编写的方案

探讨在函数式语境下的设计模式和代码重用

分别在Java 8、函数式架构和Web框架下检验函数式思维在真实案例中的表现

分析生活在一个范式更丰富多彩的世界里的优缺点

函数式编程思维 内容简介

《函数式编程思维》脱离特定的语言特性,关注各种OOP语言的共同实践做法,展示如何通过函数式语言解决问题。例如,如何利用函数式语言,通过高阶函数、多元方法等完成代码重用。知名软件架构师Neal Ford为我们展示不同的编程范式,帮我们完成从Java命令式编程人员,到使用Java、Clojure、Scala函数式编程人员的完美转变,建立对函数式语言的语法和语义的良好理解。

函数式编程思维 目录

译者序 ix

前言 xi

第1 章 为什么 1

1.1 范式转变 2

1.2 跟上语言发展的潮流 4

1.3 把控制权让渡给语言/ 运行时 4

1.4 简洁 5

第2 章 转变思维 9

2.1 普通的例子 9

2.1.1 命令式解法 9

2.1.2 函数式解法 10

2.2 案例研究:完美数的分类问题 15

2.2.1 完美数分类的命令式解法 15

2.2.2 稍微向函数式靠拢的完美数分类解法 16

2.2.3 完美数分类的Java 8 实现 18

2.2.4 完美数分类的Functional Java 实现 19

2.3 具有普遍意义的基本构造单元 21

2.3.1 筛选 22

2.3.2 映射 23

2.3.3 折叠/ 化约 25

2.4 函数的同义异名问题 28

2.4.1 筛选 28

2.4.2 映射 31

2.4.3 折叠/ 化约 33

第3 章 权责让渡 37

3.1 迭代让位于高阶函数 37

3.2 闭包 38

3.3 柯里化和函数的部分施用 41

3.3.1 定义与辨析 41

3.3.2 Groovy 的情况 42

3.3.3 Clojure 的情况 44

3.3.4 Scala 的情况 44

3.3.5 一般用途 47

3.4 递归 48

3.5 Stream 和作业顺序重排 53

第4 章 用巧不用蛮 55

4.1 记忆 55

4.1.1 缓存 56

4.1.2 引入“记忆” 59

4.2 缓求值 65

4.2.1 Java 语言下的缓求值迭代子 65

4.2.2 使用Totally Lazy 框架的完美数分类实现 67

4.2.3 Groovy 语言的缓求值列表 69

4.2.4 构造缓求值列表 72

4.2.5 缓求值的好处 74

4.2.6 缓求值的字段初始化 76

第5 章 演化的语言 79

5.1 少量的数据结构搭配大量的操作 79

5.2 让语言去迎合问题 81

5.3 对分发机制的再思考 82

5.3.1 Groovy 对分发机制的改进82

5.3.2 “身段柔软”的Clojure 语言 83

5.3.3 Clojure 的多重方法和基于任意特征的多态 85

5.4 运算符重载 87

5.4.1 Groovy 87

5.4.2 Scala 89

5.5 函数式的数据结构 91

5.5.1 函数式的错误处理 91

5.5.2 Either 类 92

5.5.3 Option 类 100

5.5.4 Either 树和模式匹配 100

第6 章 模式与重用 107

6.1 函数式语言中的设计模式 107

6.2 函数级别的重用 108

6.2.1 Template Method 模式 109

6.2.2 Strategy 模式 111

6.2.3 Flyweight 模式和记忆 113

6.2.4 Factory 模式和柯里化 116

6.3 结构化重用和函数式重用的对比 117

第7 章 现实应用 125

7.1 Java 8 125

7.1.1 函数式接口 126

7.1.2 Optional 类型 128

7.1.3 Java 8 的stream 128

7.2 函数式的基础设施 129

7.2.1 架构 129

7.2.2 Web 框架 132

7.2.3 数据库 133

第8 章 多语言与多范式 135

8.1 函数式与元编程的结合 136

8.2 利用元编程在数据类型之间建立映射 137

8.3 多范式语言的后顾之忧 140

8.4 上下文型抽象与复合型抽象的对比 141

8.5 函数式金字塔 143

作者简介 147

封面介绍 147

函数式编程思维 精彩文摘

1.1 范式转变

计算机科学的进步经常是间歇式的,好思路有时搁置数十年后才突然间变成主流。举个例子,第一种面向对象的语言 Simula 67 是 1967 年发明的,可是直到 1983 年诞生的 C++ 终于流行起来以后,面向对象才真正成为主流。很多时候,再优秀的想法也得等待技术基础慢慢成熟。早年 Java 总被认为太慢,内存耗费太高,不适合高性能的应用,如今硬件市场的变迁把它变成了极具吸引力的选择。

函数式编程的发展轨迹与面向对象编程十分相似,它也是诞生在学院里,然后用几十年的时间悄悄浸染了所有的现代编程语言。不过,仅仅在语言里加入一些新语法,并不足以让开发者完全发挥出这种新思维的全部力量。

图书网:函数式编程思维pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

软件工程/开发项目管理

软件设计重构pdf

以4个设计原则为中心,全面呈现25种在软件项目中导致技术债务的设计坏味 提供一种独特的坏味命名方法,帮助理解坏味的由来并指出潜在重构方法 包含丰富的例证,展现糟糕设计实践的潜在坏味...
软件工程/开发项目管理

DevOps 最佳实践pdf

DevOps 最佳实践 作者: Bart de Best(巴特・德・贝斯特) DevOps 最佳实践 出版社:电子工业出版社 DevOps 最佳实践 内容简介 近年来,许多组织都体会到了使用敏捷方法的...
软件工程/开发项目管理

Android组件化架构pdf

Android走过的十个年头,其技术演进也是有迹可循的,本书作者基于自己在大型App架构的技术演进中成长的经历,将遇到的相关问题进行深入剖析,包括Android 组件化架构、模块化...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: