Bruce A. Tate是RapidRed公司總裁,該公司主要為Ruby輕量級開發提供谘詢。他曾任職於IBM公司,並擔任過多傢公司的客戶解決方案總監和CTO。著作有十餘本,包括榮獲Jolt大奬的《Better, Faster, Lighter Java》。
第1章 簡介 1
1.1 不走尋常路 1
1.2 語言 2
1.3 誰應該買這本書 4
1.3.1 學會如何學習 4
1.3.2 亂世英雄 4
1.4 誰不應該買這本書 5
1.4.1 超越語法 5
1.4.2 不是安裝指南 6
1.4.3 不是編程參考 6
1.4.4 嚴格督促 6
1.5 最後一擊 7
.
第2章 Ruby 8
2.1 Ruby簡史 9
2.2 第一天:找個保姆 10
2.2.1 快速起步 10
2.2.2 從命令行執行Ruby 10
2.2.3 Ruby的編程模型 11
2.2.4 判斷 12
2.2.5 鴨子類型 15
2.2.6 第一天我們學到瞭什麼 16
2.2.7 第一天自習 16
2.3 第二天:從天而降 17
2.3.1 定義函數 17
2.3.2 數組 17
2.3.3 散列錶 19
2.3.4 代碼塊和yield 20
2.3.5 定義類 22
2.3.6 編寫Mixin 25
2.3.7 模塊、可枚舉和集閤 26
2.3.8 第二天我們學到瞭什麼 27
2.3.9 第二天自習 28
2.4 第三天:重大改變 28
2.4.1 打開類 29
2.4.2 使用method_missing 30
2.4.3 模塊 31
2.4.4 第三天我們學到瞭什麼 35
2.4.5 第三天自習 35
2.5 趁熱打鐵 35
2.5.1 核心優勢 35
2.5.2 不足之處 37
2.5.3 最後思考 37
.
第3章 Io 38
3.1 Io簡介 38
3.2 第一天:逃學吧,輕鬆一下 39
3.2.1 開場白 39
3.2.2 對象、原型和繼承 40
3.2.3 方法 43
3.2.4 列錶和映射 44
3.2.5 true、false、nil以及單例 46
3.2.6 Steve Dekorte訪談錄 48
3.2.7 第一天我們學到瞭什麼 49
3.2.8 第一天自習 50
3.3 第二天:香腸大王 50
3.3.1 條件和循環 51
3.3.2 運算符 52
3.3.3 消息 54
3.3.4 反射 56
3.3.5 第二天我們學到瞭什麼 57
3.3.6 第二天自習 57
3.4 第三天:花車遊行和各種奇妙經曆 58
3.4.1 領域特定語言 58
3.4.2 Io的method_missing 60
3.4.3 並發 62
3.4.4 第三天我們學到瞭什麼 64
3.4.5 第三天自習 64
3.5 趁熱打鐵 65
3.5.1 核心優勢 65
3.5.2 不足之處 66
3.5.3 最後思考 66
.
第4章 Prolog 67
4.1 關於Prolog 68
4.2 第一天:一名優秀的司機 68
4.2.1 基本概況 68
4.2.2 基本推論和變量 69
4.2.3 填空 70
4.2.4 閤一,第一部分 73
4.2.5 實際應用中的Prolog 75
4.2.6 第一天我們學到瞭什麼 77
4.2.7 第一天自習 77
4.3 第二天:離瓦普納法官開演還有15分鍾 78
4.3.1 遞歸 78
4.3.2 列錶和元組 79
4.3.3 列錶與數學運算 82
4.3.4 在兩個方嚮上使用規則 83
4.3.5 第二天我們學到瞭什麼 86
4.3.6 第二天自習 87
4.4 第三天:維加斯的爆發 87
4.4.1 解決數獨問題 87
4.4.2 八皇後問題 91
4.4.3 第三天我們學到瞭什麼 96
4.4.4 第三天自習 96
4.5 趁熱打鐵 96
4.5.1 核心優勢 97
4.5.2 不足之處 97
4.5.3 最後思考 98
.
第5章 Scala 99
5.1 關於Scala 99
5.1.1 與Java的密切關係 100
5.1.2 沒有盲目崇拜 100
5.1.3 Martin Odersky訪談錄 100
5.1.4 函數式編程與並發 101
5.2 第一天:山丘上的城堡 102
5.2.1 Scala 類型 102
5.2.2 錶達式與條件 103
5.2.3 循環 105
5.2.4 範圍與元組 107
5.2.5 Scala中的類 109
5.2.6 擴展類 111
5.2.7 第一天我們學到瞭什麼 113
5.2.8 第一天自習 114
5.3 第二天:修剪灌木叢和其他新把戲 114
5.3.1 對比var和val 115
5.3.2 集閤 115
5.3.3 集閤與函數 119
5.3.4 第二天我們都學到瞭什麼 124
5.3.5 第二天自習 124
5.4 第三天:剪斷絨毛 125
5.4.1 XML 125
5.4.2 模式匹配 126
5.4.3 並發 128
5.4.4 實際中的並發 129
5.4.5 第三天我們學到瞭什麼 132
5.4.6 第三天自習 132
5.5 趁熱打鐵 133
5.5.1 核心優勢 133
5.5.2 不足之處 134
5.5.3 最後思考 135
.
第6章 Erlang 136
6.1 Erlang簡介 136
6.1.1 為並發量身打造 137
6.1.2 Joe Armstrong博士訪談錄 138
6.2 第一天:以常人麵目齣現 139
6.2.1 新手上路 140
6.2.2 注釋、變量和錶達式 140
6.2.3 原子、列錶和元組 141
6.2.4 模式匹配 142
6.2.5 函數 144
6.2.6 第一天我們學到瞭什麼 147
6.2.7 第一天自習 147
6.3 第二天:改變結構 148
6.3.1 控製結構 148
6.3.2 匿名函數 150
6.3.3 列錶和高階函數 150
6.3.4 列錶的一些高級概念 153
6.3.5 第二天我們學到瞭什麼 156
6.3.6 第二天自習 157
6.4 第三天: 紅藥丸 157
6.4.1 基本並發原語 157
6.4.2 同步消息 160
6.4.3 鏈接進程以獲得可靠性 162
6.4.4 第三天我們學到瞭什麼 167
6.4.5 第三天自習 167
6.5 趁熱打鐵 167
6.5.1 核心優勢 168
6.5.2 不足之處 169
6.5.3 最後思考 169
.
第7章 Clojure 170
7.1 Clojure入門 170
7.1.1 一切皆Lisp 170
7.1.2 JVM 171
7.1.3 為並發更新 171
7.2 第一天:訓練Luke 172
7.2.1 調用基本函數 172
7.2.2 字符串和字符 174
7.2.3 布爾值和錶達式 175
7.2.4 列錶、映射錶、集閤以及嚮量 176
7.2.5 定義函數 179
7.2.6 綁定 180
7.2.7 匿名函數 182
7.2.8 Rich Hickey訪談錄 183
7.2.9 第一天我們學到瞭什麼 184
7.2.10 第一天自習 185
7.3 第二天:Yoda與原力 185
7.3.1 用loop和recur遞歸 185
7.3.2 序列 186
7.3.3 延遲計算 189
7.3.4 defrecord和protocol 191
7.3.5 宏 193
7.3.6 第二天我們學到瞭什麼 194
7.3.7 第二天自習 195
7.4 第三天:一瞥魔鬼 195
7.4.1 引用和事務內存 196
7.4.2 使用原子 197
7.4.3 使用代理 198
7.4.4 future 200
7.4.5 還差什麼 200
7.4.6 第三天我們學到瞭什麼 201
7.4.7 第三天自習 201
7.5 趁熱打鐵 201
7.5.1 Lisp悖論 202
7.5.2 核心優勢 202
7.5.3 不足之處 203
7.5.4 最後思考 204
.
第8章 Haskell 205
8.1 Haskell簡介 205
8.2 第一天:邏輯 206
8.2.1 錶達式和基本類型 206
8.2.2 函數 208
8.2.3 元組和列錶 211
8.2.4 生成列錶 214
8.2.5 Philip Wadler訪談錄 217
8.2.6 第一天我們學到瞭什麼 218
8.2.7 第一天自習 218
8.3 第二天:Spock的超凡力量 218
8.3.1 高階函數 219
8.3.2 偏應用函數和柯裏化 220
8.3.3 惰性求值 221
8.3.4 Simon Peyton-Jones訪談錄 223
8.3.5 第二天我們學到瞭什麼 224
8.3.6 第二天自習 225
8.4 第三天:心靈融閤 226
8.4.1 類與類型 226
8.4.2 monad 231
8.4.3 第三天我們學到瞭什麼 236
8.4.4 第三天自習 237
8.5 趁熱打鐵 237
8.5.1 核心優勢 237
8.5.2 不足之處 238
8.5.3 最後思考 239
.
第9章 落幕時分 240
9.1 編程模型 240
9.1.1 麵嚮對象(Ruby、Scala) 241
9.1.2 原型編程(Io) 241
9.1.3 約束-邏輯編程(Prolog) 241
9.1.4 函數式編程(Scala、Erlang、
Clojure、Haskell) 241
9.1.5 範型演進之路 242
9.2 並發 242
9.2.1 控製可變狀態 243
9.2.2 Io、Erlang和Scala中的actor 243
9.2.3 future 243
9.2.4 事務型內存 243
9.3 編程結構 244
9.3.1 列錶解析 244
9.3.2 monad 244
9.3.3 匹配 245
9.3.4 閤一 246
9.4 發現自己的鏇律 246
.
附錄 參考書目 247
· · · · · · (
收起)
從計算機發展史早期的Cobol、Fortran到後來的C、Java,編程語言的傢族不斷壯大。除瞭這些廣為人知的語言外,還湧現瞭Erlang、Ruby等後起之秀,它們雖被喻為小眾語言,但因其獨特性也吸引瞭為數不少的追隨者。
Bruce A. Tate是軟件行業的一名老兵,他有一個宏偉目標:用一本書的篇幅切中要害地探索七種不同的語言。本書就是他的成果。書中介紹瞭Ruby、Io、Prolog、Scala、Erlang、Clojure和Haskell這七種語言,關注每一門語言的精髓和特性,重點解決如下問題:這門語言的類型模型是什麼,編程範式是什麼,如何與其交互,有哪些決策構造和核心數據結構,有哪些獨特的核心特性。
在這個飛速發展的信息時代,程序員僅僅掌握甚至精通一門語言是遠遠不夠的。瞭解多門語言蘊涵的思維方式,在編碼中互相藉鑒,再挑齣一兩門對自己口味的語言深入學習,這些已經成為在軟件行業中安身立命之本。從這個意義上說,每個程序員都應該看看這本書。