代码的未来 (中文版) PDF 高清电子书 免费下载 完整版 在线阅读- 高飞网
代码的未来

代码的未来

中文版
[日]松本行弘 周自恒
编程
浏览人数:115 在读人数:1
读者:  
    《代码的未来》是Ruby之父松本行弘的又一力作。作者对云计算、大数据时代下的各种编程语言以及相关技术进行了剖析,并对编程语言的未来发展趋势做出预测,内容涉及Go、VoltDB、node.js、CoffeeScript、Dart、MongoDB、摩尔定律、编程语言、多核、NoSQL等当今备受关注的话题。      《代码的未来》面向各层次程序设计人员和编程爱好者,也可供相关技术人员参考。

第一章 编程的时间和空间 1   
1.1 编程的本质 3   
编程的本质是思考 4   
创造世界的乐趣 4   
快速提高的性能改变了社会 5   
以不变应万变 8   
摩尔定律的局限 9   
社会变化与编程 10   
1.2 未来预测 13   
科学的未来预测 14   
IT 未来预测 14   
极限未来预测 16   
从价格看未来 16   
从性能看未来 17   
从容量看未来 18   
从带宽看未来 19   
小结 20   
第二章 编程语言的过去、现在和未来 22   
2.1 编程语言的世界 23   
被历史埋没的先驱 25   
编程语言的历史 26   
编程语言的进化方向 30   
未来的编程语言 32   
20 年后的编程语言 34   
学生们的想象 34   
2.2 DSL(特定领域语言) 36   
外部DSL 37   
内部DSL 38   
DSL 的优势 39   
DSL 的定义 39   
适合内部DSL 的语言 40   
外部DSL 实例 42   
DSL 设计的构成要素 43   
Sinatra 46   
小结 47   
2.3 元编程 48   
Meta, Reflection 48   
类对象 51   
类的操作 52   
Lisp 53   
数据和程序 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 Contract 80   
异常与错误值 80   
小结 81   
2.6 闭包 82   
函数对象 82   
高阶函数 83   
用函数参数提高通用性 84   
函数指针的局限 85   
作用域:变量可见范围 87   
生存周期:变量的存在范围 88   
闭包与面向对象 89   
Ruby 的函数对象 89   
Ruby 与JavaScript 的区别 90   
Lisp-1 与Lisp-2 91   
第三章 编程语言的新潮流 96   
3.1 语言的设计 97   
客户端与服务器端 97   
向服务器端华丽转身 98   
在服务器端获得成功的四大理由 99   
客户端的JavaScript 100   
性能显著提升 101   
服务器端的Ruby 102   
Ruby on Rails 带来的飞跃 102   
服务器端的Go 103   
静态与动态 104   
动态运行模式 105   
何谓类型 105   
静态类型的优点 106   
动态类型的优点 106   
有鸭子样的就是鸭子 107   
Structural Subtyping 108   
小结 108   
3.2 Go 109   
New(新的) 109   
Experimental(实验性的) 109   
Concurrent(并发的) 110   
Garbage-collected(带垃圾回收的) 110   
Systems(系统) 111   
Go 的创造者们 111   
Hello World 112   
Go 的控制结构 113   
类型声明 116   
无继承式面向对象 118   
多值与多重赋值 120   
并发编程 122   
小结 124   
3.3 Dart 126   
为什么要推出Dart ? 126   
Dart 的设计目标 129   
代码示例 130   
Dart 的特征 132   
基于类的对象系统 132   
非强制性静态类型 133   
Dart 的未来 134   
3.4 CoffeeScript 135   
最普及的语言 135   
被误解最多的语言 135   
显著高速化的语言 136   
对JavaScript 的不满 138   
CoffeeScript 138   
安装方法 139   
声明和作用域 139   
分号和代码块 141   
省略记法 142   
字符串 143   
数组和循环 143   
类 145   
小结 146   
3.5 Lua 148   
示例程序 149   
数据类型 149   
函数 150   
表 150   
元表 151   
方法调用的实现 153   
基于原型编程 155   
和Ruby 的比较(语言篇) 157   
嵌入式语言Lua 157   
和Ruby 的比较(实现篇) 158   
嵌入式Ruby 159   
第四章 云计算时代的编程   
4.1 可扩展性 163   
信息的尺度感 163   
大量数据的查找 164   
二分法查找 165   
散列表 167   
布隆过滤器 169   
一台计算机的极限 170   
DHT(分布式散列表) 171   
Roma 172   
MapReduce 173   
小结 174   
4.2 C10K 问题 175   
何为C10K 问题 175   
C10K 问题所引发的“想当然” 177   
使用epoll 功能 180   
使用libev 框架 181   
使用EventMachine 183   
小结 185   
4.3 HashFold 186   
HashFold 库的实现(Level 1) 187   
运用多核的必要性 190   
目前的Ruby 实现所存在的问题 191   
通过进程来实现HashFold(Level 2) 191   
抖动 193   
运用进程池的HashFold(Level 3) 194   
小结 197   
4.4 进程间通信 198   
进程与线程 198   
同一台计算机上的进程间通信 199   
TCP IP 协议 201   
用C 语言进行套接字编程 202   
用Ruby 进行套接字编程 204   
Ruby 的套接字功能 205   
用Ruby 实现网络服务器 208   
小结 209   
4.5 Rack 与Unicorn 210   
Rack 中间件 211   
应用程序服务器的问题 212   
Unicorn 的架构 215   
Unicorn 的解决方案 215   
性能 219   
策略 220   
小结 221   
第五章 支撑大数据的数据存储技术 224   
5.1 键- 值存储 225   
Hash 类 225   
DBM 类 226   
数据库的ACID 特性 226   
CAP 原理 227   
CAP 解决方案——BASE 228   
不能舍弃可用性 229   
大规模环境下的键- 值存储 230   
访问键- 值存储 230   
键- 值存储的节点处理 231   
存储器 232   
写入和读取 233   
节点追加 233   
故障应对 233   
终止处理 235   
其他机制 235   
性能与应用实例 236   
小结 236   
5.2 NoSQL 237   
RDB 的极限 237   
NoSQL 数据库的解决方案 238   
形形色色的NoSQL 数据库 239   
面向文档数据库 240   
MongoDB 的安装 241   
启动数据库服务器 243   
MongoDB 的数据库结构 244   
数据的插入和查询 244   
用JavaScript 进行查询 245   
高级查询 246   
数据的更新和删除 249   
乐观并发控制 250   
5.3 用Ruby 来操作MongoDB 251   
使用Ruby 驱动 251   
对数据库进行操作 253   
数据的插入 253   
数据的查询 253   
高级查询 254   
find 方法的选项 256   
原子操作 257   
ActiveRecord 259   
OD Mapper 260   
5.4 SQL 数据库的反击 264   
“云”的定义 264   
SQL 数据库的极限 264   
存储引擎Spider 265   
SQL 数据库之父的反驳 265   
SQL 数据库VoltDB 268   
VoltDB 的架构 269   
VoltDB 中的编程 270   
Hello VoltDB! 271   
性能测试 273   
小结 275   
5.5 memcached 和它的伙伴们 276   
用于高速访问的缓存 276   
memcached 277   
示例程序 278   
对memcached 的不满 279   
memcached 替代服务器 280   
另一种键- 值存储Redis 282   
Redis 的数据类型 284   
Redis 的命令与示例 285   
小结 289   
第六章 多核时代的编程 292   
6.1 摩尔定律 293   
呈几何级数增长 293   
摩尔定律的内涵 294   
摩尔定律的结果 295   
摩尔定律所带来的可能性 296   
为了提高性能 297   
摩尔定律的极限 302   
超越极限 303   
不再有免费的午餐 304   
6.2 UNIX 管道 305   
管道编程 306   
多核时代的管道 308   
xargs——另一种运用核心的方式 309   
注意瓶颈 311   
阿姆达尔定律 311   
多核编译 312   
ccache 313   
distcc 313   
编译性能测试 314   
小结 315   
6.3 非阻塞I/O 316   
何为非阻塞I O 316   
使用read(2) 的方法 317   
边沿触发与电平触发 319   
使用read(2) + select 的方法 319   
使用read+O_NONBLOCK 标志 321   
Ruby 的非阻塞I O 322   
使用aio_read 的方法 323   
6.4 node.js 330   
减负 330   
拖延 331   
委派 332   
非阻塞编程 333   
node.js 框架 333   
事件驱动编程 334   
事件循环的利弊 335   
node.js 编程 335   
node.js 网络编程 337   
node.js 回调风格 339   
node.js 的优越性 340   
EventMachine 与Rev 341   
6.5 ZeroMQ 342   
多CPU 的必要性 342   
阿姆达尔定律 343   
多CPU 的运用方法 343   
进程间通信 345   
管道 345   
SysV IPC 346   
套接字 347   
UNIX 套接字 349   
ZeroMQ 349   
ZeroMQ 的连接模型 350   
ZeroMQ 的安装 352   
ZeroMQ 示例程序 352   
小结 354   
版权声明 356   
看过本书的人还看过