編輯推薦
1.經典的Erlang輕鬆入門指南。
2.原著被廣泛認為是學習Erlang的好方法。
3.作者是Erlang專傢,有豐富的開發經驗。
Erlang是編寫健壯的並發應用的優質語言, 但是Erlang語言奇怪的語法和函數式設計讓很多初學者望而卻步。幸運的是,現在有瞭一件對抗Erlang恐懼癥的新武器——《Erlang趣學指南》!
Erlang專傢Fred Hébert從簡單概念入手,讓你輕鬆掌握Erlang的基礎知識:你會學習Erlang的非傳統語法、類型係統以及基本的函數式編程技術。一旦你理解瞭這些簡單的概念,就可以學習Erlang語言中核心的內容——並發、分布式計算、代碼熱加載以及那些能夠讓Erlang成為當今有見識的開發者之間熱門話題的黑魔法瞭。
隨著深入到Erlang語言解決實際問題的奇妙世界,你將學到:
● 使用EUnit和Common Test對應用進行測試;
● 使用OTP框架構建和發布應用;
● 傳遞消息、拋齣錯誤異常以及在多節點上啓動/終止進程;
● 使用Mnesia和ETS存儲和讀取數據;
● 使用TCP、UDP和inet模塊進行網絡編程;
● 編寫分布式並發應用帶來的簡單快樂和其中的潛在陷阱。
本書行文輕鬆、幽默,示例新穎、實用,是你進入偶爾令人抓狂,但一直令人興奮的Erlang世界的指引!
內容簡介
這是一本講解Erlang編程語言的入門指南,內容通俗易懂,插圖生動幽默,示例短小清晰,結構安排閤理。書中從Erlang的基礎知識講起,融匯所有的基本概念和語法。內容涉及模塊、函數、類型、遞歸、錯誤和異常、常用數據結構、並行編程、多處理、OTP、事件處理,以及所有Erlang的重要特性和強大功能。
作者簡介
作者介紹
Fred Hébert是一位自學成纔的程序員,具有Web前端、Web 服務開發經驗以及全麵的後端多語言編程經驗。他撰寫的Erlang在綫教程Learn You Some Erlang for Great Good! 被公認為好的Erlang學習教程。在Erlang Solutions工作期間,他撰寫過Erlang培訓資料,並在西方國傢到處教授Erlang編程。目前,他在用Erlang開發一款實時競價平颱(AdGear),他被提名為2012年度Erlang User。
譯者介紹
鄧輝 獨立谘詢顧問,捷中科技首席架構師,有10年Erlang編程經驗。《敏捷軟件開發:原則、模式與實踐》一書的譯者,Erlang領域兩本重要著作《麵對軟件錯誤構建可靠的分布式係統》《硝煙中的Erlang》中文譯本的審校者和譯者。對指示語義、類型理論、程序語言理論和分布式係統設計有濃厚的興趣。目前在研究學習TLA+。
孫鳴 中興通訊傑齣架構師,具有豐富的電信軟件架構設計經驗。《敏捷軟件開發:原則、模式與實踐》(C#版)、《硝煙中的Erlang》等書的譯者。對函數式編程有濃厚的興趣,平時喜歡設計各種各樣的小語言。喜歡的編程語言是Scheme和Erlang,並用Erlang語言重寫瞭Structure and Interpretation of Computer Programs一書中的全部代碼。
目錄
第1章 啓程 1
1.1 使用Erlang shell 1
1.1.1 輸入shell命令 1
1.1.2 退齣shell 2
1.2 Erlang基礎知識 3
1.2.1 數值類型 3
1.2.2 不變的變量 4
1.2.3 原子 5
1.2.4 布爾代數和比較操作符 6
1.2.5 元組 8
1.2.6 列錶 10
1.2.7 列錶推導式 13
1.3 處理二進製數據 14
1.3.1 位語法 15
1.3.2 二進製數的按位操作 17
1.3.3 二進製字符串 18
1.3.4 二進製推導式 19
第2章 模塊 20
2.1 什麼是模塊 20
2.2 創建模塊 21
2.3 編譯代碼 23
2.4 定義宏 26
2.5 模塊的其他內容 27
2.5.1 元數據 27
2.5.2 環形依賴 28
第3章 函數 29
3.1 模式匹配 29
3.1.1 模式進階 31
3.1.2 綁定中的變量 31
3.2 衛語句 33
3.3 if錶達式 34
3.4 case ... of錶達式 37
3.5 如何選擇 38
第4章 類型 39
4.1 動態強類型 39
4.2 類型轉換 40
4.3 數據類型檢測函數 41
4.4 緻靜態類型愛好者 43
第5章 遞歸 44
5.1 遞歸的工作原理 44
5.1.1 列錶的長度 45
5.1.2 列錶長度的尾遞歸實現 46
5.2 更多遞歸函數 47
5.2.1 duplicate函數 47
5.2.2 reverse函數 48
5.2.3 sublist函數 49
5.2.4 zip函數 50
5.2.5 快速排序 51
5.3 不僅僅是列錶 53
5.4 遞歸思維 55
第6章 高階函數 58
6.1 一切都是函數 58
6.2 匿名函數 60
6.2.1 匿名函數的其他用途 60
6.2.2 函數的作用域和閉包 61
6.3 映射、過濾器、摺疊以及其他 63
6.3.1 過濾器 63
6.3.2 摺疊一切 64
6.3.3 其他抽象 66
第7章 錯誤和異常 67
7.1 錯誤編譯 67
7.1.1 編譯期錯誤 67
7.1.2 邏輯錯誤 69
7.1.3 運行時錯誤 69
7.2 引發異常 71
7.2.1 齣錯異常 71
7.2.2 退齣異常 72
7.2.3 拋齣異常 73
7.3 處理異常 74
7.3.1 處理不同類型的異常 74
7.3.2 catch後的after語句 76
7.3.3 嘗試多個錶達式 76
7.3.4 更多選擇 78
7.4 在樹中使用try語句 80
第8章 用函數式思維解決問題 82
8.1 逆波蘭式計算器 82
8.1.1 RPN計算器的工作原理 82
8.1.2 實現RPN計算器 84
8.1.3 代碼測試 85
8.2 從希思羅到倫敦 87
8.2.1 遞歸地解決問題 87
8.2.2 編寫代碼 89
8.2.3 不使用Erlang shell運行程序 93
第9章 常用數據結構簡介 95
9.1 記錄 95
9.1.1 定義記錄 95
9.1.2 讀取記錄字段值 97
9.1.3 更新記錄 99
9.1.4 共享記錄定義 99
9.2 鍵/值存儲 100
9.2.1 小數據量存儲 100
9.2.2 大數據量存儲:字典和通用平衡樹 101
9.3 集閤 102
9.4 有嚮圖 104
9.5 隊列 104
9.6 小結 105
第10章 並發編程漫遊指南 106
10.1 不必驚慌 106
10.2 並發概念 107
10.2.1 伸縮性 108
10.2.2 容錯 108
10.2.3 並發實現 109
10.3 並非完全不能綫性伸縮 110
10.4 再見,謝謝你的魚 111
10.4.1 創建進程 112
10.4.2 發送消息 113
10.4.3 接收消息 114
第11章 深入多重處理 118
11.1 定義進程狀態 118
11.2 隱藏消息實現 120
11.3 超時 121
11.4 選擇性接收 123
11.4.1 選擇性接收的風險 124
11.4.2 郵箱使用的其他風險 126
第12章 錯誤與進程 127
12.1 鏈接 127
12.1.1 捕獲退齣信號 129
12.1.2 老異常,新概念 130
12.2 監控器 133
12.3 命名進程 134
第13章 並發應用設計 139
13.1 理解問題 139
13.2 設計協議 141
13.3 目錄結構 143
13.4 事件模塊 143
13.4.1 事件和循環 144
13.4.2 增加接口 146
13.5 事件服務器 148
13.5.1 處理消息 149
13.5.2 代碼熱升級 152
13.5.3 隱藏消息細節 153
13.6 測試 155
13.7 增加監督功能 156
13.8 命名空間 157
第14章 OTP簡介 158
14.1 提煉通用進程 158
14.2 基礎服務器 159
14.2.1 kitty服務器 159
14.2.2 通用化同步調用 161
14.2.3 通用化服務器循環 162
14.2.4 啓動函數 164
14.2.5 通用化kitty服務器 165
14.3 專用與通用 166
14.4 麵嚮未來的迴調 167
14.4.1 init函數 167
14.4.2 handle_call函數 168
14.4.3 handle_cast函數 169
14.4.4 handle_info函數 169
14.4.5 terminate函數 169
14.4.6 code_change函數 169
14.5 gen_server實踐 170
第15章 令人憤怒的有限狀態機 174
15.1 什麼是有限狀態機 174
15.2 通用有限狀態機 178
15.2.1 init函數 178
15.2.2 StateName函數 178
15.2.3 handle_event函數 179
15.2.4 handle_syn_event函數 179
15.2.5 code_change和terminate函數 179
15.3 交易係統規格說明 179
15.3.1 操作定義 180
15.3.2 定義狀態圖和狀態遷移 181
15.4 遊戲交易 186
15.4.1 公共接口 186
15.4.2 FSM到FSM的函數 187
15.4.3 gen_fsm迴調函數 189
15.5 為自己驕傲 196
15.6 適用於真實世界嗎 197
第16章 事件處理器 198
16.1 處理它!*泵式散彈槍* 198
16.2 通用事件處理器 199
16.2.1 init和terminate函數 200
16.2.2 handle_event函數 200
16.2.3 handle_call函數 201
16.2.4 handle_info函數 201
16.2.5 code_change函數 201
16.3 現在是冰壺比賽時間 201
16.3.1 記分牌 202
16.3.2 比賽事件 203
16.3.3 通知新聞界 206
第17章 誰來監督監督者 211
17.1 監督者中的概念 211
17.2 使用監督者 213
17.2.1 重啓策略 213
17.2.2 重啓限製 215
17.2.3 子進程規格說明 215
17.3 樂隊排練 217
17.3.1 音樂人 217
17.3.2 樂隊監督者 220
17.4 動態監督 223
17.4.1 動態使用標準監督者 223
17.4.2 使用simple_one_for_one監督者 224
第18章 構建應用 226
18.1 進程池 226
18.1.1 洋蔥理論 227
18.1.2 進程池監督樹 228
18.2 實現監督者 230
18.3 進程池服務器 233
18.4 實現工作者 239
18.5 運行進程池 240
18.6 小結 242
第19章 構建OTP應用 243
19.1 我還有輛車是一個遊泳池 243
19.2 應用資源文件 244
19.3 把ppool轉換成OTP應用 246
19.4 application行為 247
19.5 從混亂到應用 249
19.6 庫應用 251
第20章 深入OTP應用 253
20.1 從OTP應用到真實的應用 253
20.1.1 應用文件 254
20.1.2 應用迴調模塊和監督者 255
20.1.3 分派器 256
20.1.4 計數模塊 264
20.2 運行應用 265
20.3 包含應用 267
20.4 復雜的終止 267
第21章 發布 268
21.1 修理漏水的管道 268
21.1.1 終止VM 268
21.1.2 更新應用文件 269
21.1.3 編譯應用 270
21.2 使用systools構建發布 270
21.2.1 創建啓動文件 271
21.2.2 發布打包 272
21.3 使用Reltool構建發布 273
21.4 Reltool技巧集 279
21.5 基於release文件發布 282
第22章 升級Process Quest 283
22.1 升級麵臨的問題 283
22.2 Erlang學習的第9級 285
22.3 Process Quest 286
22.3.1 regis-1.0.0應用 287
22.3.2 processquest-1.0.0 應用 287
22.3.3 sockserv-1.0.0應用 288
22.3.4 發布 289
22.4 改進Process Quest 291
22.4.1 更改code_change函數 291
22.4.2 增加appup文件 293
22.4.3 發布升級 296
22.5 Relup迴顧 299
第23章 套接字編程 301
23.1 IO列錶 301
23.2 UDP和TCP:夥伴協議 302
23.2.1 UDP套接字 303
23.2.2 TCP套接字 306
23.3 使用Inet進行更多的控製 308
23.4 重新審視sockserv 310
23.5 下一步的工作 319
第24章 EUnit:單元測試框架 320
24.1 什麼是EUnit 320
24.2 測試生成器 324
24.3 測試夾具 326
24.3.1 其他測試控製方法 328
24.3.2 測試文檔 329
24.4 測試regis 329
24.5 EUnit小結 338
第25章 ETS:免費的內存NoSQL數據庫 339
25.1 為什麼需要ETS 339
25.2 ETS的概念 340
25.3 ETS的基本操作 342
25.3.1 錶的創建和刪除 342
25.3.2 數據的插入和查詢 343
25.4 匹配操作 345
25.5 選擇操作 347
25.6 DETS 351
25.7 少說一點,多做一點 351
25.7.1 接口 352
25.7.2 實現細節 352
第26章 分布式編程 357
26.1 這是我的火槍 358
26.2 分布式計算中的謬誤 359
26.2.1 網絡是可靠的 360
26.2.2 網絡沒有延遲 360
26.2.3 帶寬是無限的 361
26.2.4 網絡是安全的 361
26.2.5 網絡拓撲不會變化 362
26.2.6 隻有一個管理員 363
26.2.7 傳輸成本是零 363
26.2.8 網絡是同質的 363
26.2.9 謬誤小結 364
26.3 死亡還是失去聯係 364
26.4 CAP定理 365
26.4.1 一緻性 366
26.4.2 可用性 366
26.4.3 分區容忍 366
26.4.4 僵屍幸存者和CAP 367
26.5 搭建Erlang集群 369
26.5.1 節點命名 369
26.5.2 連接節點 370
26.5.3 更多工具 371
26.6 cookie 373
26.7 遠程shell 374
26.8 隱藏節點 375
26.9 防火牆問題 376
26.10 高級調用 376
26.10.1 net_kernel模塊 376
26.10.2 global模塊 377
26.10.3 rpc模塊 378
26.11 小結 380
第27章 分布式OTP應用 381
27.1 更多OTP內容 381
27.2 接管和故障切換 382
27.3 神奇8號球 383
27.3.1 構建應用 384
27.3.2 變身分布式應用 387
第28章 不尋常的Common Test 391
28.1 什麼是Common Test 391
28.2 Common Test的組織結構 392
28.3 創建一個簡單的測試套件 393
28.4 帶狀態的測試 396
28.5 測試組 397
28.5.1 定義測試組 398
28.5.2 測試組屬性 399
28.5.3 會議室 400
28.6 再談測試套件 404
28.7 測試規格說明 404
28.7.1 規格說明文件內容 405
28.7.2 創建規格說明文件 406
28.7.3 通過規格說明文件運行測試 407
28.8 大規模測試 407
28.8.1 創建分布式測試規格說明文件 409
28.8.2 運行分布式測試 410
28.9 集成Common Test和EUint 411
28.10 還有其他內容嗎 411
第29章 Mnesia—記憶的藝術 412
29.1 Mnesia是什麼 412
29.2 應該存儲什麼呢 413
29.2.1 需要存儲的數據 413
29.2.2 錶結構 414
29.3 從記錄到錶 415
29.4 Mnesia數據模式和錶 416
29.5 創建錶 418
29.5.1 安裝數據庫 418
29.5.2 啓動應用 421
29.6 數據錶存取上下文 422
29.7 讀、寫以及其他操作 423
29.8 實現第一個請求 424
29.8.1 測試增加服務 424
29.8.2 測試查詢 427
29.8.3 賬目和新的需求 430
29.9 滿足老闆 432
29.10 刪除操作示例 434
29.11 列錶推導式查詢 437
29.12 記住Mnesia 438
第30章 類型規格說明與Dialyzer 439
30.1 PLT是最好的三明治 439
30.2 成功類型化 440
30.3 類型推導和錯誤 442
30.4 類型的種類 445
30.4.1 單例類型 445
30
Erlang趣學指南 下載 mobi epub pdf txt 電子書
評分
☆☆☆☆☆
質量很好,第二次購買瞭,之前的給瞭同事,額;
評分
☆☆☆☆☆
最近開始學習elixir,好友推薦這邊erlang的好書,瀏覽瞭下,果然是一本erlang必備經典
評分
☆☆☆☆☆
Erlang程序設計(第2版)Erlang程序設計(第2版)Erlang程序設計(第2版)
評分
☆☆☆☆☆
公司根據員工需求采購的,很不錯
評分
☆☆☆☆☆
書是很不錯的,紙張厚實。
評分
☆☆☆☆☆
應該不錯,味道有點大
評分
☆☆☆☆☆
想要學Erlang,在網上查到很多人推薦這本書,就買來看看,感覺不錯.很適閤初學者學習.
評分
☆☆☆☆☆
非常安!!!!!!!!!
評分
☆☆☆☆☆
沒有損傷,不錯