Erlang程式設計是人民郵電出版社出版的一本圖書,作者是阿姆斯特朗9+。
基本介紹
- 書名:Erlang程式設計
- 作者:阿姆斯特朗
- 譯者:趙東偉,金尹
- 出版社:人民郵電出版社
基本信息,編輯推薦,內容介紹,作者介紹,目錄,媒體評論,
基本信息
出版時間: 2008-12-1
字 數: 691000
版 次: 1
頁 數: 427
開 本: 16開
印 次: 1
紙 張: 膠版紙
I S B N : 9787115188694
包 裝: 平裝
所屬分類: 圖書 >> 計算機/網路 >> 程式設計 >> 其他
定價:¥79.00
編輯推薦
Erlang之父權威著作,領先一步,精通下一代主流程式語言,從這裡開始,擁抱未來。
在多核、並發、分布為王的時代,誰將成為下一個主流程式語言?來自全世界的眾多專家都認為,Erlang最有可能在競爭中勝出。
Erlang開源語言系出名門,通信巨頭愛立信公司用它開發出了可靠性驚人的交換機系統AXD301。它天生就是面向並發、分布和高容錯的,兼有函式式語言和腳本語言的各種優點,而且已經用於商業開發多年,具有穩定性極高的虛擬機和平台庫。有了這些天時地利,無怪乎Erlang能夠迅速成為熱門的開發語言,除了廣泛套用於通信行業之外,它已經進入了各個領域:Facebook用它實現了聊天系統,Yahoo用它重寫了Delicious,Amazon用它開發了雲計算數據服務SimpleDB,還有多人遊戲、測試工具、電子支付、數據採集與監控、企業訊息、電子郵件、空中交通管制……
本書由Erlang之父Joe Armstrong編寫,是毋庸置疑的經典著作。書中兼顧了順序編程、並發編程和分散式編程,較深入地討論了開發Erlang套用中至關重要的檔案和網路編程、OTP、MNesia、Ets和Dets等主題,更為精彩的是,大師親自操刀,構建了MapReduce實例和多人聊天實例,一定讓你大呼過癮。
內容介紹
本書是講述下一代程式語言Erlang 的權威著作,主要涵蓋順序型編程、異常處理、編譯和運行代碼、並發編程、並發編程中的錯誤處理、分散式編程、多核編程等內容。本書將幫助讀者在訊息傳遞的基礎上構建分散式的並發系統,免去鎖與互斥技術的羈絆,使程式在多核CPU 上高效運行。本書講述的各種設計方法和行為將成為設計容錯與分散式系統中的利器。
作者介紹
Joe Armstrong,Erlang最初的設計者和實現者,也是Erlang OTP系統項目的首席架構師。他擁有瑞典皇家理工學院博士學位,是容錯系統開發領域的世界級專家。此外,他還在開發旨在替代XML的標記語言ML9。現任職於愛立信公司。
目錄
第1章 引言
1.1 路線圖
1.2 正式起航
1.3 致謝
第2章 入門
2.1 概覽
2.1.1 階段1:茫然無緒
2.1.2 階段2:初窺門徑
2.1.3 階段2.5:觀其大略,不求甚解
2.1.4 階段3:運用自如
2.1.5 重中之重
2.2 Erlang安裝
2.2.1 二進制發布版
2.2.2 從原始碼創建Erlang
2.2.3 使用CEAN
2.3 本書代碼
2.4 啟動shell
2.5 簡單的整數運算
2.6 變數
2.6.1 變數不變
2.6.2 模式匹配
2.6.3 單一賦值為何有益於編寫質量更高的代碼
2.7 浮點數
2.8 原子
2.9 元組
2.9.1 創建元組
2.9.2 從元組中提取欄位值
2.10 列表
2.10.1 術語
2.10.2 定義列表
2.10.3 從列表中提取元素
2.11 字元串
2.12 再論模式匹配
第3章 順序型編程
3.1 模組
3.2 購物系統——進階篇
3.3 同名不同目的函式
3.4 fun
3.4.1 以fun為參數的函式
3.4.2 返回fun的函式
3.4.3 定義你自己的抽象流程控制
3.5 簡單的列表處理
3.6 列表解析
3.6.1 快速排序
3.6.3 變位詞
3.7 算術表達式
3.8 斷言
3.8.1 斷言序列
3.8.2 斷言樣例
3.8.3 true斷言的使用
3.8.4 過時的斷言函式
3.9 記錄
3.9.1 創建和更新記錄
3.9.2 從記錄中提取欄位值
3.9.3 在函式中對記錄進行模式匹配
3.9.4 記錄只是元組的偽裝
3.10 case/if表達式
3.10.1 case表達式
3.10.2 if表達式
3.11 以自然順序創建列表
3.12 累加器
第4章 異常
4.1 異常
4.2 拋出異常
4.3 try...catch
4.3.1 縮減版本
4.3.2 使用try...catch的編程慣例
4.4 catch
4.5 改進錯誤信息
4.6 try...catch的編程風格
4.6.1 經常會返回錯誤的程式
4.6.2 出錯幾率比較小的程式
4.7 捕獲所有可能的異常
4.8 新老兩種異常處理風格
4.9 棧跟蹤
第5章 順序型編程進階
5.1 BIF
5.2 二進制數據
5.3 比特語法
5.3.1 bit色彩的封包與解包
5.3.2 比特語法表達式
5.3.3 高級比特語法樣例
5.4 小問題集錦
5.4.1 apply
5.4.2 屬性
5.4.3 塊表達式
5.4.4 布爾類型
5.4.5 布爾表達式
5.4.6 字元集
5.4.7 注釋
5.4.8 epp
5.4.9 轉義符
5.4.10 表達式和表達式序列
5.4.11 函式引用
5.4.12 包含檔案
5.4.13 列表操作符++和--
5.4.14 宏
5.4.15 在模式中使用匹配操作符
5.4.16 數值類型
5.4.17 操作符優先權
5.4.18 進程字典
5.4.19 引用
5.4.20 短路布爾表達式
5.4.21 比較表達式
5.4.22 下劃線變數
第6章 編譯並運行程式
6.1 開啟和停止Erlang shell
6.2 配置開發環境
6.2.1 為檔案載入器設定搜尋路徑
6.2.2 在系統啟動時批量執行命令
6.3 運行程式的幾種不同方法
6.3.1 在Erlang shell中編譯運行
6.3.2 在命令提示符下編譯運行
6.3.3 把程式當作escript腳本運行
6.3.4 用命令行參數編程
6.4 使用makefile進行自動編譯
6.4.1 makefile模板
6.4.2 定製makefile模板
6.5 在Erlang shell中的命令編輯
6.6 解決系統死鎖
6.7 如何應對故障
6.7.1 未定義/遺失代碼
6.7.2 makefile不能工作
6.7.3 shell沒有回響
6.8 獲取幫助
6.9 調試環境
6.10 崩潰轉儲
第7章 並發
第8章 並發編程
8.1 並發原語
8.2 一個簡單的例子
8.3 客戶/伺服器介紹
8.4 創建一個進程需要花費多少時間
8.5 帶逾時的receive
8.5.1 只有逾時的receive
8.5.2 逾時時間為0的receive
8.5.3 使用一個無限等待逾時進行接收
8.5.4 實現一個計時器
8.6 選擇性接收
8.7 註冊進程
8.8 如何編寫一個並發程式
8.9 尾遞歸技術
8.10 使用MFA啟動進程
8.11 習題
第9章 並發編程中的錯誤處理
9.1 連結進程
9.2 on_exit處理程式
9.3 遠程錯誤處理
9.4 錯誤處理的細節
9.4.1 捕獲退出的編程模式
9.4.2 捕獲退出信號(進階篇)
9.5 錯誤處理原語
9.6 連結進程集
9.7 監視器
9.8 存活進程
第10章 分散式編程
10.1 名字服務
10.1.1 第一步:一個簡單的名字服務
10.1.2 第二步:在同一台機器上,客戶端運行於一個節點而伺服器運行於第二個節點
10.1.3 第三步:讓客戶機和伺服器運行於同一個區域網路內的不同機器上
10.1.4 第四步:在網際網路上的不同主機上分別運行客戶機和伺服器
10.2 分散式原語
10.3 分散式編程中使用的庫
10.4 有cookie保護的系統
10.5 基於套接字的分散式模式
10.5.1 lib_chan
10.5.2 伺服器代碼
第11章 IRC Lite
11.1 訊息序列圖
11.2 用戶界面
11.3 客戶端程式
11.4 伺服器端組件
11.4.1 聊天控制器
11.4.2 聊天伺服器
11.4.3 群組管理器
11.5 運行程式
11.6 聊天程式原始碼
11.6.1 聊天客戶端
11.6.2 Lib_chan配置
11.6.3 聊天控制器
11.6.4 聊天伺服器
11.6.5 聊天群組
11.6.6 輸入輸出視窗
11.7 習題
第12章 接口技術
12.1 連線埠
12.2 為一個外部C程式添加接口
12.2.1 C程式
12.2.2 Erlang程式
12.3 open_port
12.4 內聯驅動
12.5 注意
第13章 對檔案編程
13.1 庫的組織結構
13.2 讀取檔案的不同方法
13.2.1 從檔案中讀取所有Erlang數據項
13.2.2 從檔案的數據項中一次讀取一項
13.2.3 從檔案中一次讀取一行數據
13.2.4 將整個檔案的內容讀入到一個二進制數據中
13.2.5 隨機讀取一個檔案
13.2.6 讀取ID3標記
13.3 寫入檔案的不同方法
13.3.1 向一個檔案中寫入一串Erlang數據項
13.3.2 向檔案中寫入一行
13.3.3 一步操作寫入整個檔案
13.3.4 在隨機訪問模式下寫入檔案
13.4 目錄操作
13.5 查詢檔案的屬性
13.6 複製和刪除檔案
13.7 小知識
13.8 一個搜尋小程式
第14章 套接字編程
14.1 使用TCP
14.1.1 從伺服器上獲取數據
14.1.2 一個簡單的TCP伺服器
14.1.3 改進伺服器
14.1.4 注意
14.2 控制邏輯
14.2.1 主動型訊息接收(非阻塞)
14.2.2 被動型訊息接收(阻塞)
14.2.3 混合型模式(半阻塞)
14.3 連線從何而來
14.4 套接字的出錯處理
14.5 UDP
14.5.1 最簡單的UDP伺服器和客戶機
14.5.2 一個計算階乘UDP的伺服器
14.5.3 關於UDP協定的其他注意事項
14.6 向多台機器廣播訊息
14.7 SHOUTcast伺服器
14.7.1 SHOUTcast協定
14.7.2 SHOUTcast伺服器的工作機制
14.7.3 SHOUTcast伺服器的偽代碼
14.7.4 運行SHOUTcast伺服器
14.8 進一步深入
第15章 ETS和DETS:大量數據的存儲機制
15.1 表的基本操作
15.2 表的類型
15.3 ETS表的效率考慮
15.4 創建ETS表
15.5 ETS程式示例
15.5.1 三字索引疊代器
15.5.2 構造表
15.5.3 構造表有多快
15.5.4 訪問表有多快
15.5.5 勝出的是……
15.6 DETS
15.7 我們沒有提及的部分
15.8 代碼清單
第16章 OTP概述
16.1 通用伺服器程式的進化路線
16.1.1 server 1:原始伺服器程式
16.1.2 server 2:支持事務的伺服器程式
16.1.3 server 3:支持熱代碼替換的伺服器程式
16.1.4 server 4:同時支持事務和熱代碼替換
16.1.5 server 5:壓軸好戲
16.2 gen_server起步
16.2.1 第一步:確定回調模組的名稱
16.2.2 第二步:寫接口函式
16.2.3 第三步:編寫回調函式
16.3 gen_server回調的結構
16.3.1 啟動伺服器程式時發生了什麼
16.3.2 調用伺服器程式時發生了什麼
16.3.3 調用和通知
16.3.4 發給伺服器的原生訊息
16.3.5 Hasta la Vista, Baby(伺服器的終止)
16.3.6 熱代碼替換
16.4 代碼和模板
16.4.1 gen_server模板
16.4.2 my_bank
16.5 進一步深入
第17章 Mnesia:Erlang資料庫
17.1 資料庫查詢
17.1.1 選取表中所有的數據
17.1.2 選取表中的數據
17.1.3 按條件選取表中的數據
17.1.4 從兩個表選取數據(關聯查詢)
17.2 增刪表中的數據
17.2.1 增加一行
17.2.2 刪除一行
17.3 Mnesia事務
17.3.1 取消一個事務
17.3.2 載入測試數據
17.3.3 do()函式
17.4 在表中保存複雜數據
17.5 表的類型和位置
17.5.1 創建表
17.5.2 表屬性的常見組合
17.5.3 表的行為
17.6 創建和初始化資料庫
17.7 表查看器
17.8 進一步深入
17.9 代碼清單
第18章 構造基於OTP的系統
18.1 通用的事件處理
18.2 錯誤日誌
18.2.1 記錄一個錯誤
18.2.2 配置錯誤日誌
18.2.3 分析錯誤
18.3 警報管理
18.4 套用服務
18.4.1 素數服務
18.4.2 面積服務
18.5 監控樹
18.6 啟動整個系統
18.7 應用程式
18.8 檔案系統的組織
18.9 應用程式監視器
18.10 進一步深入
18.11 我們如何創建素數
第19章 多核小引
第20章 多核編程
20.1 如何在多核的CPU上更有效率地運行
20.1.1 使用大量進程
20.1.2 避免副作用
20.1.3 順序瓶頸
20.2 並行化順序代碼
20.3 小訊息、大計算
20.4 映射—歸併算法和磁碟索引程式
20.4.1 映射—歸併算法
20.4.2 全文檢索
20.4.3 索引器的操作
20.4.4 運行索引器
20.4.5 評論
20.4.6 索引器的代碼
20.5 面向未來的成長
附錄A 給我們的程式寫文檔
附錄B Microsoft Windows環境下的Erlang環境
附錄C 資源
附錄D 套接字應用程式
附錄E 其他
附錄F 模組和函式參考
索引
媒體評論
“Erlang讓我有醍醐灌頂之感,它促使我開始以完全不同的方式思考問題。Amstrong能夠親自寫作本書,實乃社區之福。”
——Dave Thomas,軟體開發大師,《程式設計師修煉之道》藝術作者
“向所有程式設計師強烈推薦本書,我們都將從中獲益匪淺。”
——Gary Pollice,IBM Rational開發團隊前核心成員,Worcester理工學院教授
Erlang是目前唯一成熟可靠的能夠開發高擴展性並發軟體系統的語言,它將成為下一個Java。
——Ralph Johnson,軟體開發大師《設計模式》作者之一