目 錄
第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
· · · · · · (
收起)