本書帶領讀者認識和學習了7種編程語言,旨在幫助讀者探索更為強大的編程工具。
本書延續(xù)了同系列的暢銷書《七周七語言》《七周七數(shù)據(jù)庫》和《七周七Web開發(fā)框架》的體例和風格。全書共8章,前7章介紹了Lua、Factor、Elm、Elixir、Julia、miniKanren和Idris共計7種編程語言,后一章總結回顧了所有的知識點。書中對每一種編程語言的介紹,都為編程開發(fā)帶來了獨特而強大的思路。除此之外,書中還提供了一系列代碼示例和在線資源以供參考。
本書適合有一定基礎的開發(fā)人員閱讀,能夠幫助讀者拓寬思路,激發(fā)更多的靈感。
暢銷技術圖書“七周七”系列新佳作
深入研習對未來編程具有重要意義的7種語言
Lua、Factor、Elixir、Elm、Julia、Idris和MiniKanren
當你深入學習本書所介紹的每一種語言時,你將能夠?qū)φZ言的抽象和原理一窺門徑,而這對于你用任何語言編寫更好的程序都頗有幫助。
通過“七周七”系列中的這本新圖書,你可以按部就班地學習當前重要的編程范型。你將會學習7種令人激動的語言: Lua 、Factor 、Elixir 、Elm 、Julia 、Idris 和miniKanren。
本書將拓展你的視野,教你如何使用多核和分布來解決問題。在每一種語言中,你將使用構成該語言的獨特技術來解決一個不尋常的問題。用Elm而不使用一個回調(diào)來編寫一款功能完備的游戲,用miniKanren編一個寫故事的程序,用Lua編寫自己的音樂播放程序,用Julia編寫一個圖像壓縮程序,用Idris實現(xiàn)數(shù)學中的證明,用Factor編寫一個解謎游戲。讀完本書,你將會掌握7種完全不同的語言,從其中的每一種語言,都能學到一些重要的技術。
Bruce Tate,icanmaketibetter.com的CTO,十多本技術圖書的作者(包括《Seven Languages in Seven Weeks》)。也是“七周七”系列圖書的編輯。
Fred Daoud 熱愛函數(shù)式編程,他和Jack Moffitt共同編著了《Seven Web
Frameworks in Seven Weeks》。
Ian Dees 在波特蘭市的一家測試設備生廠商從事編碼和測試工作。他是《Cucumber
Recipes》一書的合著者。Jack Moffitt是Mozilla Research的高級研發(fā)工程師,負責用Mozilla的新的Rust語言編寫的一款實驗性的瀏覽器引擎(名為Servo)。
第1章 Lua 1
第一天:開始歷險 1
本周日程 2
Lua一覽 3
安裝Lua 3
交互式開發(fā) 3
初窺 4
Lua基礎 5
表達式 6
函數(shù) 7
具名參數(shù) 10
控制流程 10
變量 11
離開REPL 12
第一天我們學了什么 13
輪到你了 13
第二天:深入了解Table 14
Table當作字典用 14
穿著數(shù)組外衣的字典 16
metatables 17
自制面向?qū)ο笙到y(tǒng) 21
協(xié)程 25
多任務 26
Lua作者Roberto Ierusalimschy
訪談 29
第二天我們學了什么 30
輪到你了 31
第三天:真實世界中的Lua 32
制作音樂 33
為歷險做準備 33
創(chuàng)建項目 34
添加聲效 36
從音符到歌曲 39
多聲道 43
Canon in D 45
第三天我們學了什么 46
輪到你了 46
Lua小結 47
優(yōu)勢 47
劣勢 47
終章 48
第2章 Factor 49
第一天:棧,!50
第一天我們學到了什么 59
第二天:更進一步 61
運行獨立的程序 64
寫單元測試 67
Factor的創(chuàng)建者Slava·Factor的
采訪 69
第二天我們學到了什么? 70
輪到你了 71
第三天:乘風破浪,搏擊長空 72
元組 72
元組構造器 73
為購物車結賬 74
把命令組裝成流水管道 75
重新回顧FizzBuzz游戲 78
與生俱來以下功能 81
編輯器集成 82
演示 83
第三天我們學了什么 83
輪到你了 84
總結Factor 84
第3章 Elm 86
第一天:掌握基礎 87
第二天:馴服回調(diào) 97
第三天:一切都是游戲 107
Elm總結 119
第4章 Elixir 120
第一天:夯實基礎 121
安裝Elixir 121
所以說……它是Ruby++,
對嗎 122
不,不是Ruby 122
編寫函數(shù) 124
使用管道組織程序 125
使用模塊 126
命名函數(shù) 127
do構造塊 127
使用map 129
list 130
for推導 133
keyword List 134
函數(shù)語法糖 135
第一天我們學到了什么 135
第二天:控制變化 137
Mix 137
從具體到元 138
使用struct為字段命名 139
創(chuàng)建具體行為 140
為狀態(tài)機建!141
添加狀態(tài)機行為 142
尋找模式 143
編寫測試 144
使用宏實現(xiàn)should 145
編寫更多的測試 146
編寫一個復雜的宏 147
理解編譯期流程 148
構造一個骨架 148
理解編譯期流程,第2部分 150
使用狀態(tài)機 152
第二天我們學到了什么 152
第三天:衍生和重生 154
衍生進程 155
構建一個OTP應用 156
在終端中使用OTP 158
可靠性監(jiān)護 159
第三天我們學到了什么 161
第三天自習 161
Exlir總結 162
優(yōu)勢 162
弱點 163
最后的思考 163
第5章 Julia 164
第一天:無謂的反抗 165
安裝Julia 165
內(nèi)置類型 166
第一天我們學到了什么? 175
輪到你了 175
第二天:吸收 176
控制流 176
用戶定義類型和函數(shù) 178
并發(fā) 182
采訪Julia的創(chuàng)始人:Jeff Bezanson, Stefan
Karpinski, Viral Shah, Alan Edelman 185
我們第二天學到了什么? 186
輪到你了 187
第三天:打成一片 187
轉換代碼而不是數(shù)據(jù) 188
圖像切處和切塊 191
第三天我們學到了什么? 196
輪到你了 196
Julia總結 197
優(yōu)勢 197
劣勢 198
最后的思考 198
第6章 miniKanren 199
第一天:代碼的一致性匹配 199
安裝core.logic 200
目標一定要成功 201
使用關系 202
用因子編程 204
平行宇宙 206
咒語的秘密 207
第一天我們學到了什么 208
輪到你了 209
第二天:混合邏輯與函數(shù) 210
模式,那里都是模式 210
用上散列圖 212
另一種判定 213
對David Nolen的采訪 216
第二天我們學到了什么 217
輪到你了 218
第三天:用邏輯來寫故事 218
用有限域編程 219
神奇的故事 221
第三天我們學到了什么 228
輪到你了 228
miniKanren的回顧 229
優(yōu)勢 229
劣勢 230
寫在最后 230
第7章 Idris 231
第一天:基礎 232
安裝Idris 232
理解基礎 233
原生類型和表達式 233
函數(shù) 234
定義數(shù)據(jù)類型 236
第一天我們學到了什么 240
輪到你了 240
第二天:開始使用依賴類型 241
理解依賴類型 241
派生依賴類型 243
閏年里的日期限定 245
第二天我們學到了什么 248
輪到你了 248
第三天:依賴類型實踐 249
智能補全 249
證明完畢,親愛的華生 251
交互式證明 252
下一步 254
證明為我們做了什么 256
現(xiàn)實世界 257
一段亂糟糟的C++代碼 257
指稱設計 258
回顧 259
改善 260
輪到你了 261
結束Idris 262
第8章 總結 264
起源 264
中央高速公路 265
前沿 267
臟地圖 268
最后的挑戰(zhàn) 270