TOP
紅利積點抵現金,消費購書更貼心
Erlang程序設計(第2版)(簡體書)
滿額折

Erlang程序設計(第2版)(簡體書)

商品資訊

人民幣定價:89 元
定價
:NT$ 534 元
優惠價
87465
缺貨無法訂購
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

《Erlang程序設計(第2版)》由Erlang之父Joe Armstrong編寫,是毋庸置疑的經典著作。書中兼顧了順序編程、并發編程和分布式編程,深入討論了開發Erlang應用中至關重要的文件和網絡編程、OTP、ETS和DETS等主題。新版針對入門級程序員增加了相關內容。
《Erlang程序設計(第2版)》適合Erlang初學者和中級水平Erlang程序員學習參考。

作者簡介

Joe Armstrong
Erlang最初的設計者和實現者,也是Erlang OTP系統項目的首席架構師。他擁有瑞典皇家理工學院博士學位,是容錯系統開發領域的世界級專家。現就職于愛立信公司。

名人/編輯推薦

在多核、并發、分布為王的時代,誰將成為下一個主流編程語言?來自全世界的眾多專家都認為,Erlang最有可能在競爭中勝出。
Erlang開源語言系出名門,通信巨頭愛立信公司用它開發出了可靠性驚人的交換機系統AXD301。它天生就是面向并發、分布和高容錯的,兼有函數式語言和腳本語言的各種優點,而且已經用于商業開發多年,具有穩定性極高的虛擬機和平臺庫。有了這些天時地利,無怪乎Erlang能夠迅速成為熱門的開發語言,除了廣泛應用于通信行業之外,它已經進入了各個領域:Facebook用它實現了聊天系統,Yahoo用它重寫了Delicious,Amazon用它開發了云計算數據服務SimpleDB,還有多人游戲、測試工具、電子支付、數據采集與監控、企業消息、電子郵件、空中交通管制……
本書由Erlang之父Joe Armstrong編寫,是毋庸置疑的經典著作。書中兼顧了順序編程、并發編程和分布式編程,重點介紹如何編寫并發和分布式的Erlang程序以及如何在多核CPU上自動加速程序,并深入地討論了開發Erlang應用中至關重要的文件和網絡編程、OTP、ETS和DETS等主題。第2版全新改寫,反應了自第1版面世以來Erlang歷經的所有變化,添加了大量針對初學者的內容,并在每章后都附上了練習題。

目次

第一部分 為何用Erlang
第1章 什么是并發 
1.1 給并發建模 
1.1.1 開始模擬 
1.1.2 發送消息 
1.1.3 接收消息 
1.2 并發的益處 
1.3 并發程序和并行計算機 
1.4 順序和并發編程語言 
1.5 小結 
第2章 Erlang速覽 
2.1 Shell 
2.1.1 =操作符 
2.1.2 變量和原子的語法 
2.2 進程、模塊和編譯 第一部分 為何用Erlang
第1章 什么是并發 
1.1 給并發建模 
1.1.1 開始模擬 
1.1.2 發送消息 
1.1.3 接收消息 
1.2 并發的益處 
1.3 并發程序和并行計算機 
1.4 順序和并發編程語言 
1.5 小結 
第2章 Erlang速覽 
2.1 Shell 
2.1.1 =操作符 
2.1.2 變量和原子的語法 
2.2 進程、模塊和編譯 
2.2.1 在shell里編譯并運行Hello World 
2.2.2 在Erlang shell外編譯 
2.3 你好,并發 
2.3.1 文件服務器進程 
2.3.2 客戶端代碼 
2.3.3 改進文件服務器 
2.4 練習 
第二部分 順序編程
第3章 基本概念 
3.1 啟動和停止Erlang shell 
3.1.1 在shell里執行命令 
3.1.2 可能出錯的地方 
3.1.3 在Erlang shell里編輯命令 
3.2 簡單的整數運算 
3.3 變量 
3.3.1 Erlang的變量不會變 
3.3.2 變量綁定和模式匹配 
3.3.3 為什么一次性賦值讓程序變得更好 
3.4 浮點數 
3.5 原子 
3.6 元組 
3.6.1 創建元組 
3.6.2 提取元組的值 
3.7 列表 
3.7.1 專用術語 
3.7.2 定義列表 
3.7.3 提取列表元素 
3.8 字符串 
3.9 模式匹配再探 
3.10 練習 
第4章 模塊與函數 
4.1 模塊是存放代碼的地方 
4.1.1 常見錯誤 
4.1.2 目錄和代碼路徑 
4.1.3 給代碼添加測試 
4.1.4 擴展程序 
4.1.5 分號放哪里 
4.2 繼續購物 
4.3 fun:基本的抽象單元 
4.3.1 以fun作為參數的函數 
4.3.2 返回fun的函數 
4.3.3 定義你自己的控制抽象 
4.4 簡單列表處理 
4.5 列表推導 
4.5.1 Quicksort 
4.5.2 畢達哥拉斯三元數組 
4.5.3 回文構詞 
4.6 內置函數 
4.7 關卡 
4.7.1 關卡序列 
4.7.2 關卡示例 
4.7.3 true關卡的作用 
4.8 case和if表達式 
4.8.1 case表達式 
4.8.2 if表達式 
4.9 構建自然順序的列表 
4.10 歸集器 
4.11 練習 
第5章 記錄與映射組 
5.1 何時使用映射組或記錄 
5.2 通過記錄命名元組里的項 
5.2.1 創建和更新記錄 
5.2.2 提取記錄字段 
5.2.3 在函數里模式匹配記錄 
5.2.4 記錄是元組的另一種形式 
5.3 映射組:關聯式鍵-值存儲 
5.3.1 映射組語法 
5.3.2 模式匹配映射組字段 
5.3.3 操作映射組的內置函數 
5.3.4 映射組排序 
5.3.5 以JSON為橋梁 
5.4 練習 
第6章 順序程序的錯誤處理 
6.1 處理順序代碼里的錯誤 
6.2 用try...catch捕捉異常錯誤 
6.2.1 try...catch具有一個值 
6.2.2 簡寫法 
6.2.3 try...catch編程樣例 
6.3 用catch捕捉異常錯誤 
6.4 針對異常錯誤的編程樣式 
6.4.1 改進錯誤消息 
6.4.2 經常返回錯誤時的代碼 
6.4.3 錯誤可能有但罕見時的代碼 
6.4.4 捕捉一切可能的異常錯誤 
6.5 棧跟蹤 
6.6 拋錯要快而明顯,也要文明 
6.7 練習 
第7章 二進制型與位語法 
7.1 二進制型 
7.2 位語法 
7.2.1 打包和解包16位顏色 
7.2.2 位語法表達式 
7.2.3 位語法的真實例子 
7.3 位串:處理位級數據 
7.4 練習 
第8章 Erlang順序編程補遺 
8.1 apply 
8.2 算術表達式 
8.3 元數 
8.4 屬性 
8.4.1 預定義的模塊屬性 
8.4.2 用戶定義的模塊屬性 
8.5 塊表達式 
8.6 布爾值 
8.7 布爾表達式 
8.8 字符集 
8.9 注釋 
8.10 動態代碼載入 
8.11 Erlang的預處理器 
8.12 轉義序列 
8.13 表達式和表達式序列 
8.14 函數引用 
8.15 包含文件 
8.16 列表操作:++和-- 
8.17 宏 
8.18 模式的匹配操作符 
8.19 數字 
8.19.1 整數 
8.19.2 浮點數 
8.20 操作符優先級 
8.21 進程字典 
8.22 引用 
8.23 短路布爾表達式 
8.24 比較數據類型 
8.25 元組模塊 
8.26 下劃線變量 
8.27 練習 
第9章 類型 
9.1 指定數據和函數類型 
9.2 Erlang的類型表示法 
9.2.1 類型的語法 
9.2.2 預定義類型 
9.2.3 指定函數的輸入輸出類型 
9.2.4 導出類型和本地類型 
9.2.5 不透明類型 
9.3 dialyzer教程 
9.3.1 錯誤使用內置函數的返回值 
9.3.2 內置函數的錯誤參數 
9.3.3 錯誤的程序邏輯 
9.3.4 使用dialyzer 
9.3.5 干擾dialyzer的事物 
9.4 類型推斷與成功分型 
9.5 類型系統的局限性 
9.6 練習 
第10章 編譯和運行程序 
10.1 改變開發環境 
10.1.1 設置載入代碼的搜索路徑 
10.1.2 在系統啟動時執行一組命令 
10.2 運行程序的不同方式 
10.2.1 在Erlang shell里編譯和運行 
10.2.2 在命令提示符界面里編譯和運行 
10.2.3 作為Escript運行 
10.2.4 帶命令行參數的程序 
10.3 用makefile使編譯自動化 
10.4 當壞事發生 
10.4.1 停止Erlang 
10.4.2 未定義(缺失)的代碼 
10.4.3 shell沒有反應 
10.4.4 我的makefile不工作 
10.4.5 Erlang崩潰而你想閱讀故障轉儲文件 
10.5 獲取幫助 
10.6 調節運行環境 
10.7 練習 
第三部分 并發和分布式程序
第11章 現實世界中的并發 
第12章 并發編程 
12.1 基本并發函數 
12.2 客戶端-服務器介紹 
12.3 進程很輕巧 
12.4 帶超時的接收 
12.4.1 只帶超時的接收 
12.4.2 超時值為0的接收 
12.4.3 超時值為無窮大的接收 
12.4.4 實現一個定時器 
12.5 選擇性接收 
12.6 注冊進程 
12.7 關于尾遞歸的說明 
12.8 用MFA或Fun進行分裂 
12.9 練習 
第13章 并發程序中的錯誤 
13.1 錯誤處理的理念 
13.1.1 讓其他進程修復錯誤 
13.1.2 任其崩潰 
13.1.3 為何要崩潰 
13.2 錯誤處理的術語含義 
13.3 創建連接 
13.4 同步終止的進程組 
13.5 設立防火墻 
13.6 監視 
13.7 基本錯誤處理函數 
13.8 容錯式編程 
13.8.1 在進程終止時執行操作 
13.8.2 讓一組進程共同終止 
13.8.3 生成一個永不終止的進程 
13.9 練習 
第14章 分布式編程 
14.1 兩種分布式模型 
14.2 編寫一個分布式程序 
14.3 創建名稱服務器 
14.3.1 第1階段:一個簡單的名稱服務器 
14.3.2 第2階段:客戶端在一個節點,服務器在相同主機的另一個節點 
14.3.3 第3階段:同一局域網內不同機器上的客戶端和服務器 
14.3.4 第4階段:跨互聯網不同主機上的客戶端和服務器 
14.4 分布式編程的庫和內置函數 
14.4.1 遠程分裂示例 
14.4.2 文件服務器再探 
14.5 cookie保護系統 
14.6 基于套接字的分布式模型 
14.6.1 用lib_chan控制進程 
14.6.2 服務器代碼 
14.7 練習 
第四部分 編程庫與框架
第15章 接口技術 
15.1 Erlang如何與外部程序通信 
15.2 用端口建立外部C程序接口 
15.2.1 C程序 
15.2.2 Erlang程序 
15.2.3 編譯和鏈接端口程序 
15.2.4 運行程序 
15.3 在Erlang里調用shell腳本 
15.4 高級接口技術 
15.5 練習 
第16章 文件編程 
16.1 操作文件的模塊 
16.2 讀取文件的幾種方法 
16.2.1 讀取文件里的所有數據類型 
16.2.2 分次讀取文件里的數據類型 
16.2.3 分次讀取文件里的行 
16.2.4 讀取整個文件到二進制型中 
16.2.5 通過隨機訪問讀取文件 
16.3 寫入文件的各種方式 
16.3.1 把數據列表寫入文件 
16.3.2 把各行寫入文件 
16.3.3 一次性寫入整個文件 
16.3.4 寫入隨機訪問文件 
16.4 目錄和文件操作 
16.4.1 查找文件信息 
16.4.2 復制和刪除文件 
16.5 其他信息 
16.6 一個查找工具函數 
16.7 練習 
第17章 套接字編程 
17.1 使用TCP 
17.1.1 從服務器獲取數據 
17.1.2 一個簡單的TCP服務器 
17.1.3 順序和并行服務器 
17.1.4 注意事項 
17.2 主動和被動套接字 
17.2.1 主動消息接收(非阻塞式) 
17.2.2 被動消息接收(阻塞式) 
17.2.3 混合消息接收(部分阻塞式) 
17.3 套接字錯誤處理 
17.4 UDP 
17.4.1 最簡單的UDP服務器與客戶端 
17.4.2 一個UDP階乘服務器 
17.4.3 UDP數據包須知 
17.5 對多臺機器廣播 
17.6 一個SHOUTcast服務器 
17.6.1 SHOUTcast協議 
17.6.2 SHOUTcast服務器的工作原理 
17.6.3 SHOUTcast服務器的偽代碼 
17.6.4 運行SHOUTcast服務器 
17.7 練習 
第18章 用WebSocket和Erlang進行瀏覽 
18.1 創建一個數字時鐘 
18.2 基本交互 
18.3 瀏覽器里的Erlang shell 
18.4 創建一個聊天小部件 
18.5 簡化版IRC 
18.6 瀏覽器里的圖形 
18.7 瀏覽器-服務器協議 
18.7.1 從Erlang發送消息到瀏覽器 
18.7.2 從瀏覽器到Erlang的消息 
18.8 練習 
第19章 用ETS和DETS存儲數據 
19.1 表的類型 
19.2 影響ETS表效率的因素 
19.3 創建一個ETS表 
19.4 ETS示例程序 
19.4.1 三字母組合迭代函數 
19.4.2 創建一些表 
19.4.3 創建表所需的時間 
19.4.4 訪問表所需的時間 
19.4.5 獲勝者是…… 
19.5 保存元組到磁盤 
19.6 其余操作 
19.7 練習 
第20章 Mnesia:Erlang數據庫 
20.1 創建初始數據庫 
20.2 數據庫查詢 
20.2.1 選擇表里的所有數據 
20.2.2 從表里選擇數據 
20.2.3 從表里有條件選擇數據 
20.2.4 從兩個表里選擇數據(聯接) 
20.3 添加和移除數據庫里的數據 
20.3.1 添加行 
20.3.2 移除行 
20.4 Mnesia事務 
20.4.1 中止事務 
20.4.2 載入測試數據 
20.4.3 do()函數 
20.5 在表里保存復雜數據 
20.6 表的類型和位置 
20.6.1 創建表 
20.6.2 常用的表屬性組合 
20.6.3 表的行為 
20.7 表查看器 
20.8 深入挖掘 
20.9 練習 
第21章 性能分析、調試與跟蹤 
21.1 Erlang代碼的性能分析工具 
21.2 測試代碼覆蓋 
21.3 生成交叉引用 
21.4 編譯器診斷信息 
21.4.1 頭部不匹配 
21.4.2 未綁定變量 
21.4.3 未結束字符串 
21.4.4 不安全變量 
21.4.5 影子變量 
21.5 運行時診斷 
21.6 調試方法 
21.6.1 io:format調試 
21.6.2 轉儲至文件 
21.6.3 使用錯誤記錄器 
21.7 Erlang調試器 
21.8 跟蹤消息與進程執行 
21.9 Erlang代碼的測試框架 
21.10 練習 
第22章 OTP介紹 
22.1 通用服務器之路 
22.1.1 Server 1:基本的服務器 
22.1.2 Server 2:實現事務的服務器 
22.1.3 Server 3:實現熱代碼交換的服務器 
22.1.4 Server 4:事務與熱代碼交換 
22.1.5 Server 5:更多樂趣 
22.2 gen_server入門 
22.2.1 確定回調模塊名 
22.2.2 編寫接口方法 
22.2.3 編寫回調方法 
22.3 gen_server的回調結構 
22.3.1 啟動服務器 
22.3.2 調用服務器 
22.3.3 調用和播發 
22.3.4 發給服務器的自發性消息 
22.3.5 后會有期,寶貝 
22.3.6 代碼更改 
22.4 填寫gen_server模板 
22.5 深入探索 
22.6 練習 
第23章 用OTP構建系統 
23.1 通用事件處理 
23.2 錯誤記錄器 
23.2.1 記錄錯誤 
23.2.2 配置錯誤記錄器 
23.2.3 分析錯誤 
23.3 警報管理 
23.4 應用程序服務器 
23.4.1 質數服務器 
23.4.2 面積服務器 
23.5 監控樹 
23.6 啟動系統 
23.7 應用程序 
23.8 文件系統組織方式 
23.9 應用程序監視器 
23.10 怎樣計算質數 
23.11 深入探索 
23.12 練習 
第五部分 構建應用程序
第24章 編程術語 
24.1 保持Erlang世界觀 
24.2 多用途服務器 
24.3 有狀態的模塊 
24.4 適配器變量 
24.5 表意編程 
24.6 練習 
第25章 第三方程序 
25.1 制作可共享代碼存檔并用rebar管理代碼 
25.1.1 安裝rebar 
25.1.2 在GitHub上創建一個新項目 
25.1.3 在本地克隆這個項目 
25.1.4 制作一個OTP應用程序 
25.1.5 宣傳你的項目 
25.2 整合外部程序與我們的代碼 
25.3 生成依賴項本地副本 
25.4 用cowboy構建嵌入式Web服務器 
25.5 練習 
第26章 多核CPU編程 
26.1 給Erlang程序員的好消息 
26.2 如何在多核CPU中使程序高效運行 
26.2.1 使用大量進程 
26.2.2 避免副作用 
26.2.3 避免順序瓶頸 
26.3 讓順序代碼并行 
26.4 小消息,大計算 
26.5 用mapreduce使計算并行化 
26.6 練習 
第27章 福爾摩斯的最后一案 
27.1 找出數據的相似度 
27.2 sherlock演示 
27.2.1 獲取并預處理數據 
27.2.2 尋找最像給定文件的郵件 
27.2.3 搜索指定作者、日期或標題的郵件 
27.3 數據分區的重要性 
27.4 給郵件添加關鍵詞 
27.4.1 詞匯的重要性:TF*IDF權重 
27.4.2 余弦相似度:兩個權重向量的相似程度 
27.4.3 相似度查詢 
27.5 實現方式概覽 
27.6 練習 
27.7 總結 
附錄A OTP模板 
附錄B 一個套接字應用程序 
附錄C 一種簡單的執行環境

顯示全部信息

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 465
缺貨無法訂購

暢銷榜

客服中心

收藏

會員專區