代码的未来-读书笔记

读书记录:

我于2015/1/9日购买了本书, 经过2个晚上, 1个白天的时间, 通读完了<<代码的未来>>, 只余NoSQL, MongoDB, SQL, Memcached4章共30页还未读完.

书中对未来的预测非常让我信服, 即未来的编程语言应该能够方便进行多核和云计算的开发.

matz对当前以及未来几年技术趋势把握非常精准, 对当下非常流行的技术趋势都研究颇深.

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(但主要是参考了python), coffee的设计非常精妙和恰到好处, 某些方面比ruby更好

内容:

  • 声明和作用域
  • 分号和代码块
  • 省略记法
  • 字符串
  • 数组和循环

第四章 云时代的编程


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 摩尔定律

  • 呈几何数增长
  • 摩尔定律的内涵
  • 摩尔定律的结果
  • 摩尔定律所带来的可能性
  • 为了提高性能
  • 摩尔定律的极限
  • 超越极限
  • 不再有免费的午餐

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, 连接模型
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,142评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,298评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,068评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,081评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,099评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,071评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,990评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,832评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,274评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,488评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,649评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,378评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,979评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,625评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,643评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,545评论 2 352

推荐阅读更多精彩内容