函數式與並發編程
[美] 米歇爾·卡彭特(Michel Charpentier)著 郭濤 譯
- 出版商: 清華大學
- 出版日期: 2024-10-01
- 定價: $708
- 售價: 7.9 折 $559 (限時優惠至 2025-12-26)
- 語言: 簡體中文
- 頁數: 376
- ISBN: 7302672172
- ISBN-13: 9787302672173
-
相關分類:
Functional-programming
- 此書翻譯自: Functional and Concurrent Programming: Core Concepts and Features
立即出貨
買這商品的人也買了...
-
淘寶網 CEO 馬雲談商錄$350$315 -
$474KVM 虛擬化技術實戰與原理解析 -
$551FPGA 進階開發與實踐 -
低功耗藍牙5.0 開發與應用 — 基於 nRF52 系列處理器 (基礎篇)$474$450 -
低功耗藍牙5.0 開發與應用 — 基於 nRF52 系列處理器 (進階篇)$474$450 -
低功耗藍牙5.0 開發與應用 — 基於 nRF52 系列處理器 (提高篇)$474$450 -
$959Scala 編程, 5/e (Programming in Scala 5/e) -
網絡滲透測試的藝術$474$450 -
高速建立大型桌面應用 - 全新 Electron 框架現在就動手做$880$695 -
$422Wi-Fi 7 開發參考:技術原理、標準和應用 -
$479GPT 圖解 : 大模型是怎樣構建的 -
硬件設計指南從裝置認知到手機基帶設計$594$564 -
高效能並行運行時系統:設計與實現$654$621 -
CSS 創意項目實踐$588$559 -
CPython 設計與實現$599$569 -
C++ 之美:代碼簡潔、安全又跑得快的 30個要訣 (Beautiful C++: 30 Core Guidelines for Writing Clean, Safe, and Fast Code)$654$621 -
從零構建 Rust 生產級服務$1,008$958 -
Android 智能座艙開發:從源碼到實踐$594$564 -
生成深度學習|訓練機器繪畫、寫作、作曲與玩遊戲, 2/e (Generative Deep Learning: Teaching Machines to Paint, Write, Compose, and Play, 2/e)$880$695 -
C++ 編程之禪:從理論到實踐$1,134$1,077 -
現代 C++ 安全$1,014$963 -
Qt 5 開發及實例, 5/e$714$678 -
軟體工程師的英語使用守則:English for Developers$420$357 -
版本控制使用 Git, 3/e (Version Control with Git: Powerful Tools and Techniques for Collaborative Software Development, 3/e)$880$695 -
無瑕的程式碼 函數式設計篇:原則、模式與實踐$780$585
中文年末書展|繁簡參展書2書75折 詳見活動內容 »
-
75折
為你寫的 Vue Components:從原子到系統,一步步用設計思維打造面面俱到的元件實戰力 (iThome 鐵人賽系列書)$780$585 -
75折
BDD in Action, 2/e (中文版)$960$720 -
75折
看不見的戰場:社群、AI 與企業資安危機$750$563 -
79折
AI 精準提問 × 高效應用:DeepSeek、ChatGPT、Claude、Gemini、Copilot 一本搞定$390$308 -
7折
超實用!Word.Excel.PowerPoint 辦公室 Office 365 省時高手必備 50招, 4/e (暢銷回饋版)$420$294 -
75折
裂縫碎光:資安數位生存戰$550$412 -
85折
日本當代最強插畫 2025 : 150位當代最強畫師豪華作品集$640$544 -
79折
Google BI 解決方案:Looker Studio × AI 數據驅動行銷實作,完美整合 Google Analytics 4、Google Ads、ChatGPT、Gemini$630$498 -
79折
超有料 Plus!職場第一實用的 AI 工作術 - 用對 AI 工具、自動化 Agent, 讓生產力全面進化!$599$473 -
75折
從零開始學 Visual C# 2022 程式設計, 4/e (暢銷回饋版)$690$518 -
75折
Windows 11 制霸攻略:圖解 AI 與 Copilot 應用,輕鬆搞懂新手必學的 Windows 技巧$640$480 -
75折
精準駕馭 Word!論文寫作絕非難事 (好評回饋版)$480$360 -
Sam Yang 的插畫藝術:用 Procreate / PS 畫出最強男友視角 x 女孩美好日常$699$629 -
79折
AI 加持!Google Sheets 超級工作流$599$473 -
78折
想要 SSR? 快使用 Nuxt 吧!:Nuxt 讓 Vue.js 更好處理 SEO 搜尋引擎最佳化(iThome鐵人賽系列書)$780$608 -
78折
超實用!業務.總管.人資的辦公室 WORD 365 省時高手必備 50招 (第二版)$500$390 -
7折
Node-RED + YOLO + ESP32-CAM:AIoT 智慧物聯網與邊緣 AI 專題實戰$680$476 -
79折
「生成式⇄AI」:52 個零程式互動體驗,打造新世代人工智慧素養$599$473 -
7折
Windows APT Warfare:惡意程式前線戰術指南, 3/e$720$504 -
75折
我輩程式人:回顧從 Ada 到 AI 這條程式路,程式人如何改變世界的歷史與未來展望 (We, Programmers: A Chronicle of Coders from Ada to AI)$850$637 -
75折
不用自己寫!用 GitHub Copilot 搞定 LLM 應用開發$600$450 -
79折
Tensorflow 接班王者:Google JAX 深度學習又快又強大 (好評回饋版)$780$616 -
79折
GPT4 會你也會 - 共融機器人的多模態互動式情感分析 (好評回饋版)$700$553 -
79折
技術士技能檢定 電腦軟體應用丙級術科解題教本|Office 2021$460$363 -
75折
Notion 與 Notion AI 全能實戰手冊:生活、學習與職場的智慧策略 (暢銷回饋版)$560$420
相關主題
商品描述
"現代語言支持的函數式和並發編程語言特性可能富有挑戰性,即使是經驗豐富的開發人員,當面對函數式與並發編程時,也可能心生畏懼。面向對象編程的程序員之所以畏懼這些特性,很可能是因為他們對這些特性的工作方式有所誤解。為了消除誤解,程序員應首先熟悉這些強大的特性背後的抽象概念。 《函數式與並發編程》介紹了一系列核心的編程語言結構,可讓你的編程工作變得高效起來,無論你使用的是哪種編程語言,你都能從中獲益——在當下的工作中,以及在未來的職業發展中。Charpentier用大量重點突出的小型Scala代碼示例闡釋了函數式與並發編程的關鍵概念,並通過完整的案例研究對前述技術和技巧進行深入的探究和闡釋。這些技術和技巧將從一種語言傳遞到另一種語言——包括Java的**版本。利用函數式和並發編程語言特性,開發人員和程序員將能編寫出易於理解、調試、優化和改進的優質代碼。 另外,本書還討論了現代編程語言中常用的類型策略,包括類型推斷、子類型、多態性、類型類、類型邊界和變型。 核心主題 ● 遞歸和尾遞歸 ● 模式匹配和代數數據類型 ● 可持久化結構和不可變性 ● 高階函數和lambda表達式 ● 延遲求值和流 ● 線程和線程池 ● 原子性和鎖 ● 同步和線程安全對象 ● 無鎖、非阻塞模式 ● Future、Promise和函數並發編程 《函數式與並發編程》中的大部分代碼示例都是使用Scala編寫的,其中包含函數式與並發編程的許多標準特性;然而,讀者不必事先瞭解Scala,而只需要熟悉一些基本概念,如類、方法、對象、類型、變量、循環和條件語句等。此外,讀者在編程方面應有足夠的經驗,以免因為簡單的語法問題而分心。 "
作者簡介
Michel Charpentier 是美國新罕布什爾大學(UNH)計算機科學系的副教授。多年來,他一直致力於分佈式系統、正式驗證以及移動傳感器網絡等領域的研究。自 1999 年以來,他一直在UNH工作,目前正在講授編程語言、並發性、形式驗證和模型檢查等課程。
目錄大綱
目 錄
第I部分 函數式編程
第1章 函數式編程的概念 3
1.1 什麼是函數式編程 3
1.2 函數 4
1.3 從函數到函數式編程概念 5
1.4 小結 6
第2章 編程語言中的函數 7
2.1 定義函數 7
2.2 合成函數 8
2.3 定義為方法的函數 9
2.4 定義為方法的運算符 10
2.5 擴展方法 10
2.6 局部函數 11
2.7 重復參數 12
2.8 可選參數 13
2.9 命名參數 13
2.10 類型參數 14
2.11 小結 16
第3章 不可變性 17
3.1 純函數和非純函數 17
3.2 動作 18
3.3 表達式與語句 20
3.4 函數變量 22
3.5 不可變對象 23
3.6 可變狀態的實現 24
3.7 函數式列表 25
3.8 混合編程 27
3.9 更新可變/不可變對象的集合 28
3.10 小結 30
第4章 案例研究:active-passive集合 31
4.1 面向對象設計 31
4.2 函數值 33
4.3 函數對象 35
4.4 小結 36
第5章 模式匹配與代數數據類型 38
5.1 函數開關 38
5.2 元組 39
5.3 選項 40
5.4 回顧函數式列表 41
5.5 樹 43
5.6 示例:列表拉鏈 46
5.7 提取器 48
5.8 小結 49
第6章 遞歸程序設計 51
6.1 遞歸的必要性 51
6.2 遞歸算法 53
6.3 遞歸算法的關鍵原理 55
6.4 遞歸結構 56
6.5 尾遞歸 58
6.6 尾遞歸函數示例 60
6.7 小結 63
第7章 列表遞歸 64
7.1 等價的遞歸算法 64
7.2 遍歷列表 65
7.3 返回列表 66
7.4 從執行堆棧中構建列表 68
7.5 多個/嵌套列表上的遞歸 69
7.6 除尾部以外的子列表遞歸 71
7.7 逆序創建列表 73
7.8 示例:排序 74
7.9 高效地構建列表 77
7.10 小結 78
第8章 案例研究:二叉搜索樹 79
8.1 二叉搜索樹 79
8.2 二叉搜索樹的整數集 80
8.3 未重新平衡情況下的實現 81
8.4 自平衡樹 86
8.5 小結 90
第9章 高階函數 92
9.1 函數作為值 92
9.2 柯裏化 95
9.3 函數字面量 96
9.4 函數與方法 99
9.5 單一抽象方法接口 100
9.6 部分應用 100
9.7 閉包 104
9.8 控制反轉 107
9.9 小結 108
第10章 標準高階函數 109
10.1 帶有謂詞參數的函數 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 標準高階函數的實現 121
10.9 foreach、map、flatMap和for推導式 122
10.10 小結 124
第11章 案例研究:文件樹 125
11.1 設計概述 125
11.2 節點搜索輔助函數 126
11.3 字符串表示 126
11.4 構建樹 128
11.5 查詢 131
11.6 導航 135
11.7 樹形拉鏈 135
11.8 小結 138
第12章 延遲計算 139
12.1 延遲求值的參數 139
12.2 按名稱參數 140
12.3 控制抽象 142
12.4 內部領域特定語言 144
12.5 作為延遲求值列表的流 145
12.6 管道流 147
12.7 無限數據結構流 148
12.8 疊代 149
12.9 列表、流、疊代程序和視圖 151
12.10 字段和局部變量的延遲求值 154
12.11 示例:子集和 155
12.12 小結 157
第13章 故障處理 158
13.1 例外情況和特殊值 158
13.2 使用Option 160
13.3 使用Try 160
13.4 使用Either 162
13.5 高階函數和管道 163
13.6 小結 166
第14章 案例研究:蹦床 167
14.1 尾調用優化 167
14.2 用於尾調用的蹦床函數 168
14.3 Java中的尾調用優化 169
14.4 處理非尾調用 170
14.5 小結 174
第15章 類型(及相關概念) 175
15.1 類型策略 175
15.2 類型集合 179
15.3 類型服務 180
15.4 抽象數據類型 181
15.5 類型推斷 182
15.6 子類型 185
15.7 多態性 188
15.8 類型變換 190
15.9 類型邊界 195
15.10 類型類 199
15.11 小結 203
第Ⅱ部分 並發編程
第16章 並發編程的概念 208
16.1 非順序程序 208
16.2 並發編程相關概念 211
16.3 小結 211
第17章 線程與不確定性 213
17.1 執行線程 213
17.2 使用lambda表達式創建線程 214
17.3 多線程程序的不確定性 215
17.4 線程終止 216
17.5 測試和調試多線程程序 218
17.6 小結 219
第18章 原子性和鎖 220
18.1 原子性 220
18.2 非原子操作 222
18.3 原子操作和非原子復合操作 223
18.4 鎖 226
18.5 內部鎖 227
18.6 選擇鎖目標 229
18.7 小結 231
第19章 線程安全對象 232
19.1 不可變對象 232
19.2 封裝同步策略 233
19.3 避免引用轉義 234
19.4 公用鎖和私有鎖 235
19.5 利用不可變類型 236
19.6 線程安全 239
19.7 小結 240
第20章 案例研究:線程安全隊列 242
20.1 作為列表對組的隊列 242
20.2 單個公用鎖的實現 242
20.3 單個私有鎖的實現 245
20.4 應用鎖拆分 247
20.5 小結 249
第21章 線程池 250
21.1 即發即棄異步執行 250
21.2 示例:並行服務器 252
21.3 不同類型的線程池 254
21.4 並行集合 256
21.5 小結 260
第22章 同步 261
22.1 同步的必要性 261
22.2 同步器 264
22.3 死鎖 265
22.4 使用線程轉儲調試死鎖 267
22.5 Java內存模型 268
22.6 小結 272
第23章 常用同步器 274
23.1 鎖 274
23.2 鎖存器和柵欄 276
23.3 信號量 278
23.4 條件 279
23.5 阻塞隊列 284
23.6 小結 287
第24章 案例研究:並行執行 289
24.1 順序引用實現 289
24.2 每個任務一個新線程 290
24.3 有界線程數 291
24.4 專用線程池 292
24.5 共享線程池 293
24.6 有界線程池 294
24.7 並行集合 295
24.8 使用條件提交異步任務 295
24.9 雙信號量實現 299
24.10 小結 300
第25章 Future與Promise 302
25.1 函數任務 302
25.2 Future作為同步器 303
25.3 超時、故障和取消 306
25.4 Future變體 307
25.5 Promise 308
25.6 示例:線程安全緩存 309
25.7 小結 311
第26章 函數並發編程 312
26.1 阻塞的正確性和性能問題 312
26.2 回調 314
26.3 Future的高階函數 316
26.4 Future的flatMap函數 318
26.5 示例:重新訪問並行服務器 319
26.6 函數並發編程模式 322
26.7 小結 325
第27章 最小化線程阻塞 327
27.1 原子操作 327
27.2 無鎖數據結構 330
27.3 fork/join池 332
27.4 異步編程 333
27.5 actor 334
27.6 反應流 337
27.7 非阻塞同步 338
27.8 小結 340
第28章 案例研究:並行策略 341
28.1 問題定義 341
28.2 帶超時的順序實現 342
28.3 使用invokeAny的並行實現 344
28.4 使用CompletionService的並行實現 345
28.5 Scala Future的異步實現 346
28.6 帶有CompletableFuture的異步實現 348
28.7 緩存策略的結果 350
28.8 小結 353
—附錄和詞匯表通過掃描封底二維碼獲取—
附錄 Java和Kotlin的特性 354
詞匯表 381



