美文网首页Pro___m书摘
代码的未来-读书笔记

代码的未来-读书笔记

作者: 飞将军 | 来源:发表于2015-01-11 12:45 被阅读213次

    读书记录:

    我于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, 连接模型

    相关文章

      网友评论

        本文标题:代码的未来-读书笔记

        本文链接:https://www.haomeiwen.com/subject/tyxqxttx.html