本书带领读者认识和学习了7种编程语言,旨在帮助读者探索更为强大的编程工具。
本书延续了同系列的畅销书《七周七语言》《七周七数据库》和《七周七Web开发框架》的体例和风格。全书共8章,前7章介绍了Lua、Factor、Elm、Elixir、Julia、miniKanren和Idris共计7种编程语言,后一章总结回顾了所有的知识点。书中对每一种编程语言的介绍,都为编程开发带来了独特而强大的思路。除此之外,书中还提供了一系列代码示例和在线资源以供参考。
本书适合有一定基础的开发人员阅读,能够帮助读者拓宽思路,激发更多的灵感。
畅销技术图书“七周七”系列新佳作
深入研习对未来编程具有重要意义的7种语言
Lua、Factor、Elixir、Elm、Julia、Idris和MiniKanren
当你深入学习本书所介绍的每一种语言时,你将能够对语言的抽象和原理一窥门径,而这对于你用任何语言编写更好的程序都颇有帮助。
通过“七周七”系列中的这本新图书,你可以按部就班地学习当前重要的编程范型。你将会学习7种令人激动的语言: Lua 、Factor 、Elixir 、Elm 、Julia 、Idris 和miniKanren。
本书将拓展你的视野,教你如何使用多核和分布来解决问题。在每一种语言中,你将使用构成该语言的独特技术来解决一个不寻常的问题。用Elm而不使用一个回调来编写一款功能完备的游戏,用miniKanren编一个写故事的程序,用Lua编写自己的音乐播放程序,用Julia编写一个图像压缩程序,用Idris实现数学中的证明,用Factor编写一个解谜游戏。读完本书,你将会掌握7种完全不同的语言,从其中的每一种语言,都能学到一些重要的技术。
Bruce Tate,icanmaketibetter.com的CTO,十多本技术图书的作者(包括《Seven Languages in Seven Weeks》)。也是“七周七”系列图书的编辑。
Fred Daoud 热爱函数式编程,他和Jack Moffitt共同编著了《Seven Web
Frameworks in Seven Weeks》。
Ian Dees 在波特兰市的一家测试设备生厂商从事编码和测试工作。他是《Cucumber
Recipes》一书的合著者。Jack Moffitt是Mozilla Research的高级研发工程师,负责用Mozilla的新的Rust语言编写的一款实验性的浏览器引擎(名为Servo)。
第1章 Lua 1
第一天:开始历险 1
本周日程 2
Lua一览 3
安装Lua 3
交互式开发 3
初窥 4
Lua基础 5
表达式 6
函数 7
具名参数 10
控制流程 10
变量 11
离开REPL 12
第一天我们学了什么 13
轮到你了 13
第二天:深入了解Table 14
Table当作字典用 14
穿着数组外衣的字典 16
metatables 17
自制面向对象系统 21
协程 25
多任务 26
Lua作者Roberto Ierusalimschy
访谈 29
第二天我们学了什么 30
轮到你了 31
第三天:真实世界中的Lua 32
制作音乐 33
为历险做准备 33
创建项目 34
添加声效 36
从音符到歌曲 39
多声道 43
Canon in D 45
第三天我们学了什么 46
轮到你了 46
Lua小结 47
优势 47
劣势 47
终章 48
第2章 Factor 49
第一天:栈,栈 50
第一天我们学到了什么 59
第二天:更进一步 61
运行独立的程序 64
写单元测试 67
Factor的创建者Slava·Factor的
采访 69
第二天我们学到了什么? 70
轮到你了 71
第三天:乘风破浪,搏击长空 72
元组 72
元组构造器 73
为购物车结账 74
把命令组装成流水管道 75
重新回顾FizzBuzz游戏 78
与生俱来以下功能 81
编辑器集成 82
演示 83
第三天我们学了什么 83
轮到你了 84
总结Factor 84
第3章 Elm 86
第一天:掌握基础 87
第二天:驯服回调 97
第三天:一切都是游戏 107
Elm总结 119
第4章 Elixir 120
第一天:夯实基础 121
安装Elixir 121
所以说……它是Ruby++,
对吗 122
不,不是Ruby 122
编写函数 124
使用管道组织程序 125
使用模块 126
命名函数 127
do构造块 127
使用map 129
list 130
for推导 133
keyword List 134
函数语法糖 135
第一天我们学到了什么 135
第二天:控制变化 137
Mix 137
从具体到元 138
使用struct为字段命名 139
创建具体行为 140
为状态机建模 141
添加状态机行为 142
寻找模式 143
编写测试 144
使用宏实现should 145
编写更多的测试 146
编写一个复杂的宏 147
理解编译期流程 148
构造一个骨架 148
理解编译期流程,第2部分 150
使用状态机 152
第二天我们学到了什么 152
第三天:衍生和重生 154
衍生进程 155
构建一个OTP应用 156
在终端中使用OTP 158
可靠性监护 159
第三天我们学到了什么 161
第三天自习 161
Exlir总结 162
优势 162
弱点 163
最后的思考 163
第5章 Julia 164
第一天:无谓的反抗 165
安装Julia 165
内置类型 166
第一天我们学到了什么? 175
轮到你了 175
第二天:吸收 176
控制流 176
用户定义类型和函数 178
并发 182
采访Julia的创始人:Jeff Bezanson, Stefan
Karpinski, Viral Shah, Alan Edelman 185
我们第二天学到了什么? 186
轮到你了 187
第三天:打成一片 187
转换代码而不是数据 188
图像切处和切块 191
第三天我们学到了什么? 196
轮到你了 196
Julia总结 197
优势 197
劣势 198
最后的思考 198
第6章 miniKanren 199
第一天:代码的一致性匹配 199
安装core.logic 200
目标一定要成功 201
使用关系 202
用因子编程 204
平行宇宙 206
咒语的秘密 207
第一天我们学到了什么 208
轮到你了 209
第二天:混合逻辑与函数 210
模式,那里都是模式 210
用上散列图 212
另一种判定 213
对David Nolen的采访 216
第二天我们学到了什么 217
轮到你了 218
第三天:用逻辑来写故事 218
用有限域编程 219
神奇的故事 221
第三天我们学到了什么 228
轮到你了 228
miniKanren的回顾 229
优势 229
劣势 230
写在最后 230
第7章 Idris 231
第一天:基础 232
安装Idris 232
理解基础 233
原生类型和表达式 233
函数 234
定义数据类型 236
第一天我们学到了什么 240
轮到你了 240
第二天:开始使用依赖类型 241
理解依赖类型 241
派生依赖类型 243
闰年里的日期限定 245
第二天我们学到了什么 248
轮到你了 248
第三天:依赖类型实践 249
智能补全 249
证明完毕,亲爱的华生 251
交互式证明 252
下一步 254
证明为我们做了什么 256
现实世界 257
一段乱糟糟的C++代码 257
指称设计 258
回顾 259
改善 260
轮到你了 261
结束Idris 262
第8章 总结 264
起源 264
中央高速公路 265
前沿 267
脏地图 268
最后的挑战 270