代碼的未來-讀書筆記

讀書記錄:

我于2015/1/9日購買了本書, 經(jīng)過2個晚上, 1個白天的時間, 通讀完了<<代碼的未來>>, 只余NoSQL, MongoDB, SQL, Memcached4章共30頁還未讀完.

書中對未來的預(yù)測非常讓我信服, 即未來的編程語言應(yīng)該能夠方便進行多核和云計算的開發(fā).

matz對當前以及未來幾年技術(shù)趨勢把握非常精準, 對當下非常流行的技術(shù)趨勢都研究頗深.

matz先概括性地講解了編程的一些問題:

編程的時間和空間

  • 編程的本質(zhì)
  • 未來的預(yù)測

編程語言的過去, 現(xiàn)在和未來
講述了編程語言的起源, 發(fā)展, 興衰起伏.

  • 編程語言的時間
    編程語言的世界一章中, 探討了編程時間的先驅(qū), 編程語言的歷史, 以及編程語言從過去到現(xiàn)在的進化方向, 最后對20年后和未來的編程語言進行了預(yù)測.

  • DSL: Domain Specify Language, 領(lǐng)域建模語言
    matz從Unix的內(nèi)部DSL, 如shell, awk, seq等迷你DSL講起, 再講述了DSL的優(yōu)勢, 以及定義后, 介紹了Ruby作為最好的DSL語言的應(yīng)用.

  • 元編程
    Meta, Relection
    類對象
    類的操作
    Lisp
    數(shù)據(jù)和程序
    Lisp程序, S表達式

    宏的功與過
    元編程的可能性與危險性

這一章主要講述了語言的元編程能力, 重點講述了ruby的元編程, 以及與元編程的鼻祖Lisp的宏(S表達式)比較

  • 內(nèi)存的管理
    講述GC的定義, 方式以及常用的GC方式, 文章談到了靜態(tài)語言和動態(tài)語言各自在GC上的使用方式, 以及GC優(yōu)化手段. 包括java的GC.

內(nèi)容:

  • 看似無限的內(nèi)存
  • GC的三種基本方式
  • 術(shù)語定義
  • 標記清除方式, 復(fù)制收集方式
  • 引用計數(shù)方式, 引用計數(shù)方式的缺點
  • 進一步改良的應(yīng)用方式
  • 分代回收
  • 對來自老生代的引用進行記錄
  • 增量回收
  • 并行回收
  • GC大一統(tǒng)理論

第三章 編程語言新的潮流

  • 語言的設(shè)計
    以java,javascript, ruby, go三種語言來探討語言的設(shè)計問題
    靜態(tài)和動態(tài)類型的區(qū)別
    類型在靜態(tài)類型和動態(tài)類型中的應(yīng)用
    靜態(tài)和動態(tài)類型語言的優(yōu)缺點
    Duck type, 鴨式辯形
    Structural Subtyping

討論一下問題:
作為客戶端語言發(fā)布的java為何在服務(wù)器端獲得成功?
Rails如何讓ruby火起來?
Go在服務(wù)器端的應(yīng)用

  • Go語言
    本章主要是Go語言的介紹和入門知識, matz認為go很有前途
    New
    Experimental(實驗性)
    Concurrent
    GC
    Systems

  • Dart
    很想java的強類型語言, matz不看好

  • CoffeeScript
    對javascript的不滿導(dǎo)致的coffeescript的誕生, coffee的入門介紹. matz認為coffee參考了ruby和python(但主要是參考了python), coffee的設(shè)計非常精妙和恰到好處, 某些方面比ruby更好

內(nèi)容:

  • 聲明和作用域
  • 分號和代碼塊
  • 省略記法
  • 字符串
  • 數(shù)組和循環(huán)

第四章 云時代的編程


4.1 可擴展性

  • 信息的尺感度
  • 大量數(shù)據(jù)的查找
  • 二分法查找
  • 散列表
  • 布隆過濾器
  • 一臺計算機的極限
  • DHT(分布式散列表)
  • Roma
  • MapReduce

4.2 C10K問題

  • 何為C10K問題?
  • C10K問題引發(fā)的想當然
  • 使用epoll功能
  • 使用libev
  • 使用EventMachine

4.3 HashFold

  • HashFold庫的實現(xiàn)(Level 1)
  • 運用多核的必要性
  • 目前ruby實現(xiàn)存在的問題
  • 通過進程來實現(xiàn)HashFold(Level 2)
  • 抖動
  • 運用進程池的HashFold(Level 3)

進程間通信

  • 進程與線程
  • 同一臺計算機上的進程通信
  • TCP/IP協(xié)議
  • 用C語言進行套接字編程
  • 用Ruby進行套接字編程
  • Ruby的socket功能
  • 用Ruby實現(xiàn)網(wǎng)絡(luò)服務(wù)器

Rack和Unicorn

  • Rack中間件
  • 應(yīng)用程序服務(wù)器的問題
  • Unicorn架構(gòu)
  • Unicorn的解決方案
  • 性能
  • 策略

第五章 支撐大數(shù)據(jù)的數(shù)據(jù)存儲技術(shù)


5.1 鍵-值存儲

  • Hash類
  • DBM類
  • 數(shù)據(jù)庫的ACID特性
  • CAP原理
  • CAP的解決方案-BASE
  • 不能舍棄可用性
  • 大規(guī)模環(huán)境下的鍵-值存儲, 以Roma為例
  • 訪問鍵-值存儲
  • 鍵-值存儲的節(jié)點處理
  • 存儲器
  • 寫入和讀取
  • 節(jié)點追加
  • 故障應(yīng)對
  • 終止處理
  • 其他機制
  • 性能和應(yīng)用案例

5.2 NoSQL

  • RDB的極限
  • NoSQL數(shù)據(jù)庫的解決方案
  • 形形色色的各類NoSQL數(shù)據(jù)庫
    -面向文檔的數(shù)據(jù)庫
  • MongoDB安裝和啟動
  • MongoDB的數(shù)據(jù)庫結(jié)構(gòu)
  • 數(shù)據(jù)的插入和查詢
  • 用javascript進行查詢
  • 高級查詢
  • 數(shù)據(jù)的更新和刪除
  • 樂觀并發(fā)控制

5.3 用Ruby來操作MongoDB

  • 使用Ruby驅(qū)動
  • 對數(shù)據(jù)庫進行操作
  • 數(shù)據(jù)的插入
  • 數(shù)據(jù)的查詢
  • 高級查詢
  • find方法的選項
  • 原子操作
  • ActiveRecord
  • OD Mapper

5.4 SQL數(shù)據(jù)庫的反擊

  • "云"的定義
  • SQL數(shù)據(jù)庫的極限
  • 存儲引擎Spider
  • SQL數(shù)據(jù)庫之父的反駁
  • SQL數(shù)據(jù)庫VoltDB
  • VoltDB的架構(gòu)
  • VoltDB中的編程
  • Hello VoltDB
  • 性能測試

memcached和它的伙伴們

  • 用于高速訪問的緩存
  • memcached
  • 對memcached的不滿
  • memcached的替代服務(wù)器
  • Redis
  • Redis的數(shù)據(jù)類型
  • Redis的命令和示例

第六章 多核時代的編程


6.1 摩爾定律

  • 呈幾何數(shù)增長
  • 摩爾定律的內(nèi)涵
  • 摩爾定律的結(jié)果
  • 摩爾定律所帶來的可能性
  • 為了提高性能
  • 摩爾定律的極限
  • 超越極限
  • 不再有免費的午餐

6.2 Unix管道

  • 管道編程
  • 多核時代的管道
  • xargs-另一種運用核心的方式
  • 注意瓶頸
  • 阿姆達爾定律
  • 多核編譯
  • ccache
  • distcc
  • 編譯性能測試

5.3 非阻塞I/O

  • 何為非阻塞I/O?
  • 使用read(2)方法
  • 邊沿觸發(fā)和水平觸發(fā)
  • 使用read(2)和select的方法
  • 使用read+O_NONBLOCK標志
  • Ruby的非阻塞
  • 使用aio_read

5.4 node.js

  • matz的減負, 拖延, 委派
  • 非阻塞編程
  • node.js框架
  • 事件驅(qū)動編程
  • 事件循環(huán)的利弊
  • node.js的編程
  • node.js的網(wǎng)絡(luò)編程
  • node.js的回調(diào)風格
  • node.js的優(yōu)越性
  • EventMachine與Rev

5.5 ZeroMQ

  • 多CPU的必要性
  • 阿姆達爾定律
  • 多CPU的運用方法
  • 進程間通信
  • 管道
  • SysV IPC
  • Socket
  • Unix Socket
  • ZeroMQ, 連接模型
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末餐济,一起剝皮案震驚了整個濱河市否副,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌证芭,老刑警劉巖撒会,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遍尺,死亡現(xiàn)場離奇詭異质蕉,居然都是意外死亡挠轴,警方通過查閱死者的電腦和手機传睹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岸晦,“玉大人欧啤,你說我怎么就攤上這事∥海” “怎么了堂油?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碧绞。 經(jīng)常有香客問我府框,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任迫靖,我火速辦了婚禮院峡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘系宜。我一直安慰自己照激,他們只是感情好,可當我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布盹牧。 她就那樣靜靜地躺著俩垃,像睡著了一般。 火紅的嫁衣襯著肌膚如雪汰寓。 梳的紋絲不亂的頭發(fā)上口柳,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天,我揣著相機與錄音有滑,去河邊找鬼跃闹。 笑死,一個胖子當著我的面吹牛毛好,可吹牛的內(nèi)容都是我干的望艺。 我是一名探鬼主播,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼肌访,長吁一口氣:“原來是場噩夢啊……” “哼找默!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起场靴,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啡莉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旨剥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咧欣,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年轨帜,在試婚紗的時候發(fā)現(xiàn)自己被綠了魄咕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚌父,死狀恐怖哮兰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苟弛,我是刑警寧澤喝滞,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站膏秫,受9級特大地震影響右遭,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一窘哈、第九天 我趴在偏房一處隱蔽的房頂上張望吹榴。 院中可真熱鬧,春花似錦滚婉、人聲如沸图筹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽远剩。三九已至,卻和暖如春骇窍,著一層夾襖步出監(jiān)牢的瞬間民宿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工像鸡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人哈恰。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓只估,卻偏偏與公主長得像,于是被迫代替她去往敵國和親着绷。 傳聞我的和親對象是個殘疾皇子蛔钙,可洞房花燭夜當晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容