代码的前景-读书笔记

翻阅记录:

本人于二〇一五/百分之十十五日选购了本书, 经过3个早上, 1个白天的时光,
通读完了<<代码的前景>>, 只余NoSQL, MongoDB, SQL,
Memcached4章共30页还未读完.

书中对前景的展望非凡让笔者服气,
即将来的编制程序语言应该可以方便进行多核和云总结的开发.

matz对当下以及今后几年技术方向把握这几个精准,
对当下11分流行的技能可行性都钻探颇深.

matz先归纳性地讲解了编制程序的部分题材:

编制程序的时刻和空中

  • 编制程序的面目
  • 前景的猜度

编制程序语言的病逝, 往后和前途
讲述了编制程序语言的来源于, 发展, 兴衰起伏.

  • 编制程序语言的时间
    编制程序语言的世界一章中, 研商了编制程序时间的先行者, 编制程序语言的历史,
    以及编程语言从过去到方今的上扬方向,
    最终对20年后和前途的编制程序语言进行了预测.

  • DSL: Domain Specify Language, 领域建模语言
    matz从Unix的里边DSL, 如shell, awk, seq等迷你DSL讲起,
    再讲述了DSL的优势, 以及定义后, 介绍了Ruby作为最好的DSL语言的应用.

  • 元编程
    Meta, Relection
    类对象
    类的操作
    Lisp
    数据和次序
    Lisp程序, S表达式

    宏的功与过
    元编制程序的或许与危险性

这一章重点讲述了语言的元编制程序能力, 重点讲述了ruby的元编制程序,
以及与元编制程序的鼻祖Lisp的宏(S表明式)相比较

  • 内部存款和储蓄器的保管
    叙述GC的定义, 格局以及常用的GC格局,
    小说谈到了静态语言和动态语言各自在GC上的行使方法, 以及GC优化手段.
    包蕴java的GC.

内容:

  • 好像无限的内部存储器
  • GC的二种为主格局
  • 术语定义
  • 标记清除格局, 复制收集情势
  • 引用计数形式, 引用计数情势的后天不足
  • 更是改进的采纳措施
  • 分代回收
  • 对来源老生代的引用举办记录
  • 增量回收
  • 互相回收
  • GC大学一年级统理论

其三章 编制程序语言新的风尚

  • 语言的筹划
    以java,javascript, ruby, go三种语言来商量语言的设计难点
    静态和动态类型的界别
    品类在静态类型和动态类型中的应用
    静态和动态类型语言的利弊
    Duck type, 鸭式辩形
    Structural Subtyping

探究一下难题:
作为客户端语言揭穿的java为啥在劳动器端获得成功?
Rails如何让ruby火起来?
Go在劳务器端的采用

  • Go语言
    本章首借使Go语言的介绍和入门知识, matz认为go很有前景
    New
    Experimental(实验性)
    Concurrent
    GC
    Systems

  • Dart
    很想java的强类型语言, matz不看好

  • CoffeeScript
    对javascript的缺憾导致的coffeescript的出世, coffee的入门介绍.
    matz认为coffee参考了ruby和python(但第1是参考了python),
    coffee的规划分外精细和方便, 有些地方比ruby更好

内容:

  • 声称和作用域
  • 子公司和代码块
  • 简单来讲记法
  • 字符串
  • 数组和巡回

第5章 云时期的编制程序


4.1 可扩充性

  • 新闻的尺感度
  • 大批量数目标物色
  • 二分法查找
  • 散列表
  • 布隆过滤器
  • 一台计算机的终端
  • DHT(分布式散列表)
  • Roma
  • MapReduce

4.2 C10K问题

  • 何为C10K问题?
  • C10K难题抓住的想当然
  • 使用epoll功能
  • 使用libev
  • 使用EventMachine

4.3 HashFold

  • HashFold库的落到实处(Level 1)
  • 行使多核的必要性
  • 现阶段ruby达成存在的题材
  • 通过进度来兑现HashFold(Level 2)
  • 抖动
  • 选拔进度池的HashFold(Level 3)

经过间通信

  • 进度与线程
  • 同一台总计机上的历程通讯
  • TCP/IP协议
  • 用C语言进行套接字编制程序
  • 用Ruby举办套接字编制程序
  • Ruby的socket功能
  • 用Ruby达成互连网服务器

Rack和Unicorn

  • Rack中间件
  • 应用程序服务器的标题
  • Unicorn架构
  • Unicorn的缓解方案
  • 性能
  • 策略

第⑥章 支撑大数额的数量存款和储蓄技术


5.1 键-值存储

  • Hash类
  • DBM类
  • 数据库的ACID脾性
  • CAP原理
  • CAP的消除方案-BASE
  • 无法抛弃可用性
  • 大面积环境下的键-值存款和储蓄, 以Roma为例
  • 访问键-值存储
  • 键-值存款和储蓄的节点处理
  • 存储器
  • 写入和读取
  • 节点追加
  • 故障应对
  • 停止处理
  • 任何编写制定
  • 天性和采取案例

5.2 NoSQL

  • RDB的极限
  • NoSQL数据库的缓解方案
  • 足够多彩的各项NoSQL数据库
    -面向文书档案的数据库
  • MongoDB安装和起步
  • MongoDB的数据库结构
  • 数码的插入和查询
  • 用javascript举行询问
  • 高等查询
  • 多少的革新和删除
  • 开始展览并发控制

5.3 用Ruby来操作MongoDB

  • 使用Ruby驱动
  • 对数据库举行操作
  • 数据的插入
  • 数量的查询
  • 高档查询
  • find方法的挑三拣四
  • 原子操作
  • ActiveRecord
  • OD Mapper

5.4 SQL数据库的反攻

  • “云”的定义
  • SQL数据库的顶点
  • 积存引擎Spider
  • SQL数据库之父的论战
  • SQL数据库VoltDB
  • VoltDB的架构
  • VoltDB中的编程
  • Hello VoltDB
  • 属性测试

memcached和它的同伙们

  • 用以高速访问的缓存
  • memcached
  • 对memcached的不满
  • memcached的代表服务器
  • Redis
  • Redis的数据类型
  • Redis的通令和示范

第伍章 多核时期的编制程序


6.1 穆尔定律

  • 呈几何数拉长
  • 穆尔定律的内蕴
  • 穆尔定律的结果
  • 摩尔定律所带来的恐怕
  • 为了抓好质量
  • Moore定律的极限
  • 超过极限
  • 不再有免费的午宴

6.2 Unix管道

  • 管道编制程序
  • 多核时期的管道
  • xargs-另一种采用宗旨的章程
  • 留神瓶颈
  • 阿姆达尔定律
  • 多核编写翻译
  • ccache
  • distcc
  • 编写翻译品质测试

5.3 非阻塞I/O

  • 何为非阻塞I/O?
  • 使用read(2)方法
  • 一旁触发和程度触发
  • 使用read(2)和select的方法
  • 使用read+O_NONBLOCK标志
  • Ruby的非阻塞
  • 使用aio_read

5.4 node.js

  • matz的减负, 拖延, 委派
  • 非阻塞编制程序
  • node.js框架
  • 事件驱动编制程序
  • 事件循环的利害
  • node.js的编程
  • node.js的互连网编制程序
  • node.js的回调风格
  • node.js的优越性
  • EventMachine与Rev

5.5 ZeroMQ

  • 多CPU的要求性
  • 阿姆达尔定律
  • 多CPU的应用格局
  • 进程间通讯
  • 管道
  • SysV IPC
  • Socket
  • Unix Socket
  • ZeroMQ, 连接模型