《代码的未来》是Ruby之父松本行弘的又一力作。作者对云计算、大数据时代下的各种编程语言以及相关技术进行了剖析,并对编程语言的未来发展趋势做出预测,内容涉及Go、VoltDB、node.js、CoffeeScript、Dart、MongoDB、摩尔定律、编程语言、多核、NoSQL等当今备受关注的话题。
《代码的未来》面向各层次程序设计人员和编程爱好者,也可供相关技术人员参考。
第一章 编程的时间和空间
1.1 编程的本质3
编程的本质是思考4
创造世界的乐趣4
快速提高的性能改变了社会5
以不变应万变8
摩尔定律的局限9
社会变化与编程10
1.2 未来预测13
科学的未来预测14
IT 未来预测14
极限未来预测16
从价格看未来16
从性能看未来17
从容量看未来18
从带宽看未来19
小结20
第二章 编程语言的过去、现在和未来
2.1 编程语言的世界23
被历史埋没的先驱25
编程语言的历史26
编程语言的进化方向30
未来的编程语言32
20 年后的编程语言34
学生们的想象34
2.2 DSL(特定领域语言)36
外部DSL37
内部DSL38
DSL 的优势39
DSL 的定义39
适合内部DSL 的语言40
外部DSL 实例42
DSL 设计的构成要素43
Sinatra46
小结47
2.3 元编程48
Meta, Reflection48
类对象51
类的操作52
Lisp53
数据和程序54
Lisp 程序56
宏56
宏的功与过57
元编程的可能性与危险性59
小结60
2.4 内存管理61
看似无限的内存61
GC 的三种基本方式62
术语定义62
标记清除方式63
复制收集方式64
引用计数方式65
引用计数方式的缺点65
进一步改良的应用方式66
分代回收66
对来自老生代的引用进行记录67
增量回收68
并行回收69
GC 大统一理论69
2.5 异常处理71
“一定没问题的”71
用特殊返回值表示错误72
容易忽略错误处理72
Ruby 中的异常处理73
产生异常74
更高级的异常处理75
Ruby 中的后处理保证76
其他语言中的异常处理77
Java 的检查型异常77
Icon 的异常和真假值78
Eiffel 的Design by Contract80
异常与错误值80
小结81
2.6 闭包82
函数对象82
高阶函数83
用函数参数提高通用性84
函数指针的局限85
作用域:变量可见范围87
生存周期:变量的存在范围88
闭包与面向对象89
Ruby 的函数对象89
Ruby 与JavaScript 的区别90
Lisp-1 与Lisp-291
第三章 编程语言的新潮流
3.1 语言的设计97
客户端与服务器端97
向服务器端华丽转身98
在服务器端获得成功的四大理由99
客户端的JavaScript100
性能显著提升101
服务器端的Ruby102
Ruby on Rails 带来的飞跃102
服务器端的Go103
静态与动态104
动态运行模式105
何谓类型105
静态类型的优点106
动态类型的优点106
有鸭子样的就是鸭子107
Structural Subtyping108
小结108
3.2 Go109
New(新的)109
Experimental(实验性的)109
Concurrent(并发的)110
Garbage-collected(带垃圾回收的)110
Systems(系统)111
Go 的创造者们111
Hello World112
Go 的控制结构113
类型声明116
无继承式面向对象118
多值与多重赋值120
并发编程122
小结124
3.3 Dart126
为什么要推出Dart ?126
Dart 的设计目标129
代码示例130
Dart 的特征132
基于类的对象系统132
非强制性静态类型133
Dart 的未来134
3.4 CoffeeScript135
最普及的语言135
被误解最多的语言135
显著高速化的语言136
对JavaScript 的不满138
CoffeeScript138
安装方法139
声明和作用域139
分号和代码块141
省略记法142
字符串143
数组和循环143
类145
小结146
3.5 Lua148
示例程序149
数据类型149
函数150
表150
元表151
方法调用的实现153
基于原型编程155
和Ruby 的比较(语言篇)157
嵌入式语言Lua157
和Ruby 的比较(实现篇)158
嵌入式Ruby159
第四章 云计算时代的编程
4.1 可扩展性163
信息的尺度感163
大量数据的查找164
二分法查找165
散列表167
布隆过滤器169
一台计算机的极限170
DHT(分布式散列表)171
Roma172
MapReduce173
小结174
4.2 C10K 问题175
何为C10K 问题175
C10K 问题所引发的“想当然”177
使用epoll 功能180
使用libev 框架181
使用EventMachine183
小结185
4.3 HashFold186
HashFold 库的实现(Level 1)187
运用多核的必要性190
目前的Ruby 实现所存在的问题191
通过进程来实现HashFold(Level 2)191
抖动193
运用进程池的HashFold(Level 3)194
小结197
4.4 进程间通信198
进程与线程198
同一台计算机上的进程间通信199
TCPIP 协议201
用C 语言进行套接字编程202
用Ruby 进行套接字编程204
Ruby 的套接字功能205
用Ruby 实现网络服务器208
小结209
4.5 Rack 与Unicorn210
Rack 中间件211
应用程序服务器的问题212
Unicorn 的架构215
Unicorn 的解决方案215
性能219
策略220
小结221
第五章 支撑大数据的数据存储技术
5.1 键- 值存储225
Hash 类225
DBM 类226
数据库的ACID 特性226
CAP 原理227
CAP 解决方案——BASE228
不能舍弃可用性229
大规模环境下的键- 值存储230
访问键- 值存储230
键- 值存储的节点处理231
存储器232
写入和读取233
节点追加233
故障应对233
终止处理235
其他机制235
性能与应用实例236
小结236
5.2 NoSQL237
RDB 的极限237
NoSQL 数据库的解决方案238
形形色色的NoSQL 数据库239
面向文档数据库240
MongoDB 的安装241
启动数据库服务器243
MongoDB 的数据库结构244
数据的插入和查询244
用JavaScript 进行查询245
高级查询246
数据的更新和删除249
乐观并发控制250
5.3 用Ruby 来操作MongoDB251
使用Ruby 驱动251
对数据库进行操作253
数据的插入253
数据的查询253
高级查询254
find 方法的选项256
原子操作257
ActiveRecord259
OD Mapper260
5.4 SQL 数据库的反击264
“云”的定义264
SQL 数据库的极限264
存储引擎Spider265
SQL 数据库之父的反驳265
SQL 数据库VoltDB268
VoltDB 的架构269
VoltDB 中的编程270
Hello VoltDB!271
性能测试273
小结275
5.5 memcached 和它的伙伴们276
用于高速访问的缓存276
memcached277
示例程序278
对memcached 的不满279
memcached 替代服务器280
另一种键- 值存储Redis282
Redis 的数据类型284
Redis 的命令与示例285
小结289
第六章 多核时代的编程
6.1 摩尔定律293
呈几何级数增长293
摩尔定律的内涵294
摩尔定律的结果295
摩尔定律所带来的可能性296
为了提高性能297
摩尔定律的极限302
超越极限303
不再有免费的午餐304
6.2 UNIX 管道305
管道编程306
多核时代的管道308
xargs——另一种运用核心的方式309
注意瓶颈311
阿姆达尔定律311
多核编译312
ccache313
distcc313
编译性能测试314
小结315
6.3 非阻塞I/O316
何为非阻塞IO316
使用read(2) 的方法317
边沿触发与电平触发319
使用read(2) + select 的方法319
使用read+O_NONBLOCK 标志321
Ruby 的非阻塞IO322
使用aio_read 的方法323
6.4 node.js330
减负330
拖延331
委派332
非阻塞编程333
node.js 框架333
事件驱动编程334
事件循环的利弊335
node.js 编程335
node.js 网络编程337
node.js 回调风格339
node.js 的优越性340
EventMachine 与Rev341
6.5 ZeroMQ342
多CPU 的必要性342
阿姆达尔定律343
多CPU 的运用方法343
进程间通信345
管道345
SysV IPC346
套接字347
UNIX 套接字349
ZeroMQ349
ZeroMQ 的连接模型350
ZeroMQ 的安装352
ZeroMQ 示例程序352
小结354
版权声明356
《农村电商运营实战》内容简介:2017年中央一号文件明确指出要推进农村电商发展,并具体从农业企业与电商企业的对接融合、农产品电
《极简中国史》内容简介:由外观内,凭古说今 以大视角回望“三代”至清末 穿越历史变动不居的表层,重新解读史实之间深处的缝隙 厘
《能源互联网发展研究》内容简介:本书全面介绍了国内能源互联网的发展现状及进展,共分四篇,第1篇为战略篇,第2篇为技术篇,第3篇
小时候,你也迷恋过那些好玩的化学变化。但当你成为上化学课的中学生时,你一定觉得,各种化学公式和一堆堆化学名称让你有点无所
《计算广告(第2版)》内容简介:计算广告是一项新兴的研究课题,它涉及大规模搜索和文本分析、信息获取、统计模型、机器学习、分类
Python是目前最流行的动态脚本语言之一。本书共27章,由浅入深、全面系统地介绍了利用Python语言进行程序开发的知识和技巧,包括
Excel高级报表宝典 本书特色 全面学习Excel报表开发的技术和策略。掌握Excel报表开发的相关工具和访问数据源的方法。实例验证Excel报表技术的核心特...
SOLIDWORKS高级曲面教程-2015版 本书特色 美国ds solidworks公司所著的《solidworks高 级曲面教程》(2015版)根据soli...
《蜂鸟摄影学院新手学摄影(后期篇)》内容简介:本书是蜂鸟网根据摄影初学者的要求和实际学习情况特意编写的一套学习教程中的后期
《高速信号传输工程化技术:概念与方法》内容简介:本书对高速信号传输相关技术中需要掌握的概念、理论和方法深入浅出地给出了定义
《文徵明琵琶行二种(中华碑帖精粹)》内容简介:文徵明,初名壁(也作璧),字徵明,后以字行,更字徵仲;祖籍衡山,自号衡山居士
本书全面介绍了数据挖掘的理论和方法,旨在为读者提供将数据挖掘应用于实际问题所必需的知识。本书涵盖五个主题:数据、分类、关
《组织学习力:让组织能力跟上战略要求》内容简介:本书围绕组织学习话题,从组织学习氛围、团队共学方法、组织学习方法三个维度,
紐約時報、BusinessWeek、Amazon#1暢銷書美國半年內銷售破百萬冊EQ之後最轟動的趨勢話題小時候我常聽爸媽說:「兒子啊,乖乖把飯
网络伴随我们的时间不算很长,然而因特网的流行和商业化的普及速度却是惊人的,这促使人类活动和社会的每个领域都发生了改变。我
《GitHub入门与实践》内容简介:本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作,
ThisbookprovidesacompletereferencefortheC++programminglanguage.ItconsistsoftheC+...
《聚势》内容简介:本书首先从理论上分析移动互联网时代的渠道发展趋势,提出渠道运营管理“442”模型,解析通信业渠道发展历史和发
《中医的常识》内容简介:★学习中医的收获:在目前的生活状态下做贵人 ★普通人如何学习中医——有自知之明、自觉之感,方有慧心之
《任弼时风采》内容简介:任弼时(1904—1950),伟大的马克思主义者,无产阶级革命家、政治家、组织家,党的第一代领导集体的重要