函數式編程思維pdf

圖書網
圖書網
圖書網
11145
文章
1734
評論
2018年12月27日11:45:56 評論 469

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

繼續閱讀
資源地址:用心發表評論,回復即可查看(字數限制至少10字以上)。
  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin
技術之瞳 阿里巴巴技術筆試心得pdf 軟件工程/開發項目管理

技術之瞳 阿里巴巴技術筆試心得pdf

適讀人群 :本書是每一位有志于投身互聯網行業的技術人員入行的必備參考。 《技術之瞳:阿里巴巴技術筆試心得》是阿里巴巴集團首次官方批露的筆試真題,包括基本原理、題型解析與真題問答三個...
Apache Spark源碼剖析pdf 軟件工程/開發項目管理

Apache Spark源碼剖析pdf

適讀人群 :本書對于Spark應用開發人員及Spark集群管理人員都有極好的學習價值;對于那些想從源碼學習而又不知如何入手的讀者,也不失為一種借鑒。 1.《Apache Spark...
匿名

發表評論

匿名網友 填寫信息

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