書馨卡幫你省薪 2024個人購書報告 2024中圖網(wǎng)年度報告
歡迎光臨中圖網(wǎng) 請 | 注冊

函數(shù)式與并發(fā)編程

出版社:清華大學(xué)出版社出版時間:2024-10-01
開本: 其他 頁數(shù): 376
中 圖 價:¥89.7(7.6折) 定價  ¥118.0 登錄后可看到會員價
加入購物車 收藏
運(yùn)費(fèi)6元,滿39元免運(yùn)費(fèi)
?新疆、西藏除外
本類五星書更多>

函數(shù)式與并發(fā)編程 版權(quán)信息

函數(shù)式與并發(fā)編程 本書特色

《函數(shù)式與并發(fā)編程》主要圍繞兩個主題:函數(shù)式編程和并發(fā)編程。本書主要使用Scala 編寫代碼示例,逐一講解各編程特性的用法和注意事項,是一本不可多得的工具書,強(qiáng)烈推薦給程序員們。筆者周圍的程序員提到這兩個主題時都存在一定的畏難情緒,這是正常的,也是可以理解的。程序員不僅需要豐富的編程經(jīng)驗,還要具備深厚的編程設(shè)計思維,而這并非一朝一夕就能形成的,需要經(jīng)年累月的實戰(zhàn)和經(jīng)驗積累。我并不推薦讀者將本書從頭讀到尾,這樣不利于理解和消化書中的知識點(diǎn)。建議具備一定的函數(shù)式編程和并發(fā)編程基礎(chǔ)的讀者建立場景和問題,通過解決問題的方式來學(xué)習(xí)本書,并在遇到問題時查閱本書。本書也可作為理解這兩個主題的途徑。

函數(shù)式與并發(fā)編程 內(nèi)容簡介

"現(xiàn)代語言支持的函數(shù)式和并發(fā)編程語言特性可能富有挑戰(zhàn)性,即使是經(jīng)驗豐富的開發(fā)人員,當(dāng)面對函數(shù)式與并發(fā)編程時,也可能心生畏懼。面向?qū)ο缶幊痰某绦騿T之所以畏懼這些特性,很可能是因為他們對這些特性的工作方式有所誤解。為了消除誤解,程序員應(yīng)首先熟悉這些強(qiáng)大的特性背后的抽象概念。 《函數(shù)式與并發(fā)編程》介紹了一系列核心的編程語言結(jié)構(gòu),可讓你的編程工作變得高效起來,無論你使用的是哪種編程語言,你都能從中獲益——在當(dāng)下的工作中,以及在未來的職業(yè)發(fā)展中。Charpentier用大量重點(diǎn)突出的小型Scala代碼示例闡釋了函數(shù)式與并發(fā)編程的關(guān)鍵概念,并通過完整的案例研究對前述技術(shù)和技巧進(jìn)行深入的探究和闡釋。這些技術(shù)和技巧將從一種語言傳遞到另一種語言——包括Java的**版本。利用函數(shù)式和并發(fā)編程語言特性,開發(fā)人員和程序員將能編寫出易于理解、調(diào)試、優(yōu)化和改進(jìn)的優(yōu)質(zhì)代碼。 另外,本書還討論了現(xiàn)代編程語言中常用的類型策略,包括類型推斷、子類型、多態(tài)性、類型類、類型邊界和變型。 核心主題 ● 遞歸和尾遞歸 ● 模式匹配和代數(shù)數(shù)據(jù)類型 ● 可持久化結(jié)構(gòu)和不可變性 ● 高階函數(shù)和lambda表達(dá)式 ● 延遲求值和流 ● 線程和線程池 ● 原子性和鎖 ● 同步和線程安全對象 ● 無鎖、非阻塞模式 ● Future、Promise和函數(shù)并發(fā)編程 《函數(shù)式與并發(fā)編程》中的大部分代碼示例都是使用Scala編寫的,其中包含函數(shù)式與并發(fā)編程的許多標(biāo)準(zhǔn)特性;然而,讀者不必事先了解Scala,而只需要熟悉一些基本概念,如類、方法、對象、類型、變量、循環(huán)和條件語句等。此外,讀者在編程方面應(yīng)有足夠的經(jīng)驗,以免因為簡單的語法問題而分心。 "

函數(shù)式與并發(fā)編程 目錄

第I部分 函數(shù)式編程
第1章 函數(shù)式編程的概念 3
1.1 什么是函數(shù)式編程 3
1.2 函數(shù) 4
1.3 從函數(shù)到函數(shù)式編程概念 5
1.4 小結(jié) 6
第2章 編程語言中的函數(shù) 7
2.1 定義函數(shù) 7
2.2 合成函數(shù) 8
2.3 定義為方法的函數(shù) 9
2.4 定義為方法的運(yùn)算符 10
2.5 擴(kuò)展方法 10
2.6 局部函數(shù) 11
2.7 重復(fù)參數(shù) 12
2.8 可選參數(shù) 13
2.9 命名參數(shù) 13
2.10 類型參數(shù) 14
2.11 小結(jié) 16
第3章 不可變性 17
3.1 純函數(shù)和非純函數(shù) 17
3.2 動作 18
3.3 表達(dá)式與語句 20
3.4 函數(shù)變量 22
3.5 不可變對象 23
3.6 可變狀態(tài)的實現(xiàn) 24
3.7 函數(shù)式列表 25
3.8 混合編程 27
3.9 更新可變/不可變對象的集合 28
3.10 小結(jié) 30
第4章 案例研究:active-passive集合 31
4.1 面向?qū)ο笤O(shè)計 31
4.2 函數(shù)值 33
4.3 函數(shù)對象 35
4.4 小結(jié) 36
第5章 模式匹配與代數(shù)數(shù)據(jù)類型 38
5.1 函數(shù)開關(guān) 38
5.2 元組 39
5.3 選項 40
5.4 回顧函數(shù)式列表 41
5.5 樹 43
5.6 示例:列表拉鏈 46
5.7 提取器 48
5.8 小結(jié) 49
第6章 遞歸程序設(shè)計 51
6.1 遞歸的必要性 51
6.2 遞歸算法 53
6.3 遞歸算法的關(guān)鍵原理 55
6.4 遞歸結(jié)構(gòu) 56
6.5 尾遞歸 58
6.6 尾遞歸函數(shù)示例 60
6.7 小結(jié) 63
第7章 列表遞歸 64
7.1 等價的遞歸算法 64
7.2 遍歷列表 65
7.3 返回列表 66
7.4 從執(zhí)行堆棧中構(gòu)建列表 68
7.5 多個/嵌套列表上的遞歸 69
7.6 除尾部以外的子列表遞歸 71
7.7 逆序創(chuàng)建列表 73
7.8 示例:排序 74
7.9 高效地構(gòu)建列表 77
7.10 小結(jié) 78
第8章 案例研究:二叉搜索樹 79
8.1 二叉搜索樹 79
8.2 二叉搜索樹的整數(shù)集 80
8.3 未重新平衡情況下的實現(xiàn) 81
8.4 自平衡樹 86
8.5 小結(jié) 90
第9章 高階函數(shù) 92
9.1 函數(shù)作為值 92
9.2 柯里化 95
9.3 函數(shù)字面量 96
9.4 函數(shù)與方法 99
9.5 單一抽象方法接口 100
9.6 部分應(yīng)用 100
9.7 閉包 104
9.8 控制反轉(zhuǎn) 107
9.9 小結(jié) 108
第10章 標(biāo)準(zhǔn)高階函數(shù) 109
10.1 帶有謂詞參數(shù)的函數(shù) 109
10.2 映射和遍歷 111
10.3 flatMap 112
10.4 fold和reduce 116
10.5 iterate、tabulate和unfold 118
10.6 sortWith、sortBy、maxBy和minBy 119
10.7 groupBy和groupMap 120
10.8 標(biāo)準(zhǔn)高階函數(shù)的實現(xiàn) 121
10.9 foreach、map、flatMap和for推導(dǎo)式 122
10.10 小結(jié) 124
第11章 案例研究:文件樹 125
11.1 設(shè)計概述 125
11.2 節(jié)點(diǎn)搜索輔助函數(shù) 126
11.3 字符串表示 126
11.4 構(gòu)建樹 128
11.5 查詢 131
11.6 導(dǎo)航 135
11.7 樹形拉鏈 135
11.8 小結(jié) 138
第12章 延遲計算 139
12.1 延遲求值的參數(shù) 139
12.2 按名稱參數(shù) 140
12.3 控制抽象 142
12.4 內(nèi)部領(lǐng)域特定語言 144
12.5 作為延遲求值列表的流 145
12.6 管道流 147
12.7 無限數(shù)據(jù)結(jié)構(gòu)流 148
12.8 迭代 149
12.9 列表、流、迭代程序和視圖 151
12.10 字段和局部變量的延遲求值 154
12.11 示例:子集和 155
12.12 小結(jié) 157
第13章 故障處理 158
13.1 例外情況和特殊值 158
13.2 使用Option 160
13.3 使用Try 160
13.4 使用Either 162
13.5 高階函數(shù)和管道 163
13.6 小結(jié) 166
第14章 案例研究:蹦床 167
14.1 尾調(diào)用優(yōu)化 167
14.2 用于尾調(diào)用的蹦床函數(shù) 168
14.3 Java中的尾調(diào)用優(yōu)化 169
14.4 處理非尾調(diào)用 170
14.5 小結(jié) 174
第15章 類型(及相關(guān)概念) 175
15.1 類型策略 175
15.2 類型集合 179
15.3 類型服務(wù) 180
15.4 抽象數(shù)據(jù)類型 181
15.5 類型推斷 182
15.6 子類型 185
15.7 多態(tài)性 188
15.8 類型變換 190
15.9 類型邊界 195
15.10 類型類 199
15.11 小結(jié) 203
第Ⅱ部分 并發(fā)編程
第16章 并發(fā)編程的概念 208
16.1 非順序程序 208
16.2 并發(fā)編程相關(guān)概念 211
16.3 小結(jié) 211
第17章 線程與不確定性 213
17.1 執(zhí)行線程 213
17.2 使用lambda表達(dá)式創(chuàng)建線程 214
17.3 多線程程序的不確定性 215
17.4 線程終止 216
17.5 測試和調(diào)試多線程程序 218
17.6 小結(jié) 219
第18章 原子性和鎖 220
18.1 原子性 220
18.2 非原子操作 222
18.3 原子操作和非原子復(fù)合操作 223
18.4 鎖 226
18.5 內(nèi)部鎖 227
18.6 選擇鎖目標(biāo) 229
18.7 小結(jié) 231
第19章 線程安全對象 232
19.1 不可變對象 232
19.2 封裝同步策略 233
19.3 避免引用轉(zhuǎn)義 234
19.4 公用鎖和私有鎖 235
19.5 利用不可變類型 236
19.6 線程安全 239
19.7 小結(jié) 240
第20章 案例研究:線程安全隊列 242
20.1 作為列表對組的隊列 242
20.2 單個公用鎖的實現(xiàn) 242
20.3 單個私有鎖的實現(xiàn) 245
20.4 應(yīng)用鎖拆分 247
20.5 小結(jié) 249
第21章 線程池 250
21.1 即發(fā)即棄異步執(zhí)行 250
21.2 示例:并行服務(wù)器 252
21.3 不同類型的線程池 254
21.4 并行集合 256
21.5 小結(jié) 260
第22章 同步 261
22.1 同步的必要性 261
22.2 同步器 264
22.3 死鎖 265
22.4 使用線程轉(zhuǎn)儲調(diào)試死鎖 267
22.5 Java內(nèi)存模型 268
22.6 小結(jié) 272
第23章 常用同步器 274
23.1 鎖 274
23.2 鎖存器和柵欄 276
23.3 信號量 278
23.4 條件 279
23.5 阻塞隊列 284
23.6 小結(jié) 287
第24章 案例研究:并行執(zhí)行 289
24.1 順序引用實現(xiàn) 289
24.2 每個任務(wù)一個新線程 290
24.3 有界線程數(shù) 291
24.4 專用線程池 292
24.5 共享線程池 293
24.6 有界線程池 294
24.7 并行集合 295
24.8 使用條件提交異步任務(wù) 295
24.9 雙信號量實現(xiàn) 299
24.10 小結(jié) 300
第25章 Future與Promise 302
25.1 函數(shù)任務(wù) 302
25.2 Future作為同步器 303
25.3 超時、故障和取消 306
25.4 Future變體 307
25.5 Promise 308
25.6 示例:線程安全緩存 309
25.7 小結(jié) 311
第26章 函數(shù)并發(fā)編程 312
26.1 阻塞的正確性和性能問題 312
26.2 回調(diào) 314
26.3 Future的高階函數(shù) 316
26.4 Future的flatMap函數(shù) 318
26.5 示例:重新訪問并行服務(wù)器 319
26.6 函數(shù)并發(fā)編程模式 322
26.7 小結(jié) 325
第27章 *小化線程阻塞 327
27.1 原子操作 327
27.2 無鎖數(shù)據(jù)結(jié)構(gòu) 330
27.3 fork/join池 332
27.4 異步編程 333
27.5 actor 334
27.6 反應(yīng)流 337
27.7 非阻塞同步 338
27.8 小結(jié) 340
第28章 案例研究:并行策略 341
28.1 問題定義 341
28.2 帶超時的順序?qū)崿F(xiàn) 342
28.3 使用invokeAny的并行實現(xiàn) 344
28.4 使用CompletionService的并行實現(xiàn) 345
28.5 Scala Future的異步實現(xiàn) 346
28.6 帶有CompletableFuture的異步實現(xiàn) 348
28.7 緩存策略的結(jié)果 350
28.8 小結(jié) 353 —附錄和詞匯表通過掃描封底二維碼獲取—
附錄 Java和Kotlin的特性 354
詞匯表 381
展開全部

函數(shù)式與并發(fā)編程 作者簡介

Michel Charpentier 是美國新罕布什爾大學(xué)(UNH)計算機(jī)科學(xué)系的副教授。多年來,他一直致力于分布式系統(tǒng)、正式驗證以及移動傳感器網(wǎng)絡(luò)等領(lǐng)域的研究。自 1999 年以來,他一直在UNH工作,目前正在講授編程語言、并發(fā)性、形式驗證和模型檢查等課程。

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網(wǎng)
在線客服