作品介紹

松本行弘的程序世界


作者:松本行弘     整理日期:2017-02-19 22:36:00


  《松本行弘的程序世界》是探索程序設(shè)計(jì)思想和方法的經(jīng)典之作。作者從全局的角度,利用大量的程序示例及圖表,深刻闡述了Ruby編程語(yǔ)言的設(shè)計(jì)理念,并以獨(dú)特的視角考察了與編程相關(guān)的各種技術(shù)。閱讀《松本行弘的程序世界》不僅可以深入了解編程領(lǐng)域各個(gè)要素之間的關(guān)系,而且能夠?qū)W到大師的思考方法。
  《松本行弘的程序世界》面向各層次程序設(shè)計(jì)人員和編程愛(ài)好者,也可以供相關(guān)技術(shù)人員參考。

作者簡(jiǎn)介
  松本行弘 Ruby語(yǔ)言的發(fā)明人,在1993年發(fā)布了Ruby語(yǔ)言的第一個(gè)版本,以后一直從事Ruby的設(shè)計(jì)與開(kāi)發(fā)。2011年加入著名SaaS廠商 Salesforce旗下PaaS公司Heroku,任首席Ruby架構(gòu)師,致力于加快Ruby Core的開(kāi)發(fā)。他還是NaCI及樂(lè)天技術(shù)研究所的研究員。著有Ruby in a Nutshell和The Ruby Programming Language 等書(shū)。他的博客地址http://www.rubyist.net/~matz/。

目錄:
  第1 章 我為什么開(kāi)發(fā)Ruby  1
  1.1 我為什么開(kāi)發(fā)Ruby    2
  1.1.1 編程語(yǔ)言的重要性  2
  1.1.2 Ruby 的原則   3
  1.1.3 簡(jiǎn)潔性   4
  1.1.4 擴(kuò)展性   5
  1.1.5 穩(wěn)定性   6
  1.1.6 一切皆因興趣   7
  第2 章 面向?qū)ο蟆 ?9
  2.1 編程和面向?qū)ο蟮年P(guān)系   10
  2.1.1 顛倒的構(gòu)造  10
  2.1.2 主宰計(jì)算機(jī)的武器  11
  2.1.3 怎樣寫(xiě)程序   12
  2.1.4 面向?qū)ο蟮木幊谭椒ā ?2
  2.1.5 面向?qū)ο蟮碾y點(diǎn)  13
  2.1.6 多態(tài)性  13
  2.1.7 具體的程序  14
  2.1.8 多態(tài)性的優(yōu)點(diǎn)  15
  2.2 數(shù)據(jù)抽象和繼承  16
  2.2.1 面向?qū)ο蟮臍v史  16
  2.2.2 復(fù)雜性是面向?qū)ο蟮臄橙恕 ?8
  2.2.3 結(jié)構(gòu)化編程  18
  2.2.4 數(shù)據(jù)抽象化  19
  2.2.5 雛形  21
  2.2.6 找出相似的部分來(lái)繼承   22
  2.3 多重繼承的缺點(diǎn)  23
  2.3.1 為什么需要多重繼承  23
  2.3.2 多重繼承和單一繼承不可分離   24
  2.3.3 goto 語(yǔ)句和多重繼承比較相似   25
  2.3.4 解決多重繼承的問(wèn)題  25
  2.3.5 靜態(tài)語(yǔ)言和動(dòng)態(tài)語(yǔ)言的區(qū)別   26
  2.3.6 靜態(tài)語(yǔ)言的特點(diǎn)  26
  2.3.7 動(dòng)態(tài)語(yǔ)言的特點(diǎn)   27
  2.3.8 靜態(tài)語(yǔ)言和動(dòng)態(tài)語(yǔ)言的比較   27
  2.3.9 繼承的兩種含義   28
  2.3.10 接口的缺點(diǎn)  28
  2.3.11 繼承實(shí)現(xiàn)的方法   29
  2.3.12 從多重繼承變形而來(lái)的Mix-in   29
  2.3.13 積極支持Mix-in 的Ruby   30
  2.4 兩個(gè)誤解   31
  2.4.1 面向?qū)ο蟮木幊獭 ?1
  2.4.2 對(duì)象的模板 = 類(lèi)  33
  2.4.3 利用模塊的手段=繼承   33
  2.4.4 多重繼承不好嗎  34
  2.4.5 動(dòng)態(tài)編程語(yǔ)言也需要多重繼承  35
  2.4.6 馴服多重繼承的方法  35
  2.4.7 Ruby 中多重繼承的實(shí)現(xiàn)方法   37
  2.4.8 Java 實(shí)現(xiàn)多重繼承的方法   38
  2.5 Duck Typing 誕生之前  39
  2.5.1 為什么需要類(lèi)型  39
  2.5.2 動(dòng)態(tài)的類(lèi)型是從Lisp 中誕生的   40
  2.5.3 動(dòng)態(tài)類(lèi)型在面向?qū)ο笾邪l(fā)展起來(lái)了  41
  2.5.4 動(dòng)態(tài)類(lèi)型和靜態(tài)類(lèi)型的邂逅   42
  2.5.5 靜態(tài)類(lèi)型的優(yōu)點(diǎn)   42
  2.5.6 動(dòng)態(tài)類(lèi)型的優(yōu)點(diǎn)   43
  2.5.7 只關(guān)心行為的Duck Typing    44
  2.5.8 避免明確的類(lèi)型檢查    45
  2.5.9 克服動(dòng)態(tài)類(lèi)型的缺點(diǎn)   46
  2.5.10 動(dòng)態(tài)編程語(yǔ)言   46
  2.6 元編程   46
  2.6.1 元編程    46
  2.6.2 反射   47
  2.6.3 元編程的例子   48
  2.6.4 使用反射功能   48
  2.6.5 分布式Ruby 的實(shí)現(xiàn)   49
  2.6.6 數(shù)據(jù)庫(kù)的應(yīng)用   50
  2.6.7 輸出XML   51
  2.6.8 元編程和小編程語(yǔ)言  51
  2.6.9 聲明的實(shí)現(xiàn)  52
  2.6.10 上下文相關(guān)的實(shí)現(xiàn)  52
  2.6.11 單位的實(shí)現(xiàn)  53
  2.6.12 詞匯的實(shí)現(xiàn)  53
  2.6.13 層次數(shù)據(jù)的實(shí)現(xiàn)  54
  2.6.14 適合DSL 的語(yǔ)言,不適合DSL 的語(yǔ)言  54
  第3 章 程序塊  57
  3.1 程序塊的威力  58
  3.1.1 把函數(shù)作為參數(shù)的高階函數(shù)  58
  3.1.2 C 語(yǔ)言高階函數(shù)的局限  59
  3.1.3 可以保存外部環(huán)境的閉包  60
  3.1.4 塊的兩種使用方法  60
  3.1.5 最終來(lái)看,塊到底是什么  61
  3.1.6 塊在循環(huán)處理中的應(yīng)用  62
  3.1.7 內(nèi)部迭代器和外部迭代器  62
  3.1.8 在排序和比較大小中的應(yīng)用  63
  3.1.9 用塊保證程序的后處理  63
  3.1.10 用塊實(shí)現(xiàn)新的控制結(jié)構(gòu)  64
  3.1.11 在回調(diào)中使用塊   65
  3.1.12 塊處理的特別理由   65
  3.2 用塊作循環(huán)  66
  3.2. 1 塊是處理的集合  67
  3.2.2 塊應(yīng)用范圍的擴(kuò)展  68
  3.2.3 高階函數(shù)和塊的本質(zhì)一樣  69
  3.2.4 用Enumerable 來(lái)利用塊  69
  3.2.5 Enumerable 的局限  74
  3.3 精通集合的使用  77
  3.3.1 使用Ruby 的數(shù)組  77
  3.3.2 修改指定范圍的元素內(nèi)容  78
  3.3.3 Ruby 中的哈希處理  78
  3.3.4 支持循環(huán)的Enumerable  79
  3.3.5 用于循環(huán)的each 方法  81
  3.3.6 使用inject、zip 和grep  81
  3.3.7 用來(lái)指定條件的select 方法   82
  3.3.8 排序與比較大小的方法   83
  3.3.9 在類(lèi)中包含(include)Enumerable 模塊   84
  3.3.10 List 的內(nèi)部包和塊的區(qū)別   85
  第4 章 設(shè)計(jì)模式    89
  4.1 設(shè)計(jì)模式(1)   90
  4.1.1 設(shè)計(jì)模式的價(jià)值和意義   91
  4.1.2 設(shè)計(jì)模式是程序抽象化的延伸   92
  4.1.3 Ruby 中的設(shè)計(jì)模式  92
  4.1.4 Singleton 模式   92
  4.1.5 Proxy 模式  94
  4.1.6 Iterator 模式  95
  4.1.7 外部與內(nèi)部,哪一個(gè)更好   96
  4.1.8 內(nèi)部迭代器的缺陷   97
  4.1.9 外部迭代器的缺陷   98
  4.2 設(shè)計(jì)模式(2)  98
  4.2.1 模式與動(dòng)態(tài)語(yǔ)言的關(guān)系   99
  4.2.2 重復(fù)使用既存對(duì)象的Prototype模式   99
  4.2.3 親身體驗(yàn)Io 語(yǔ)言  100
  4.2.4 Ruby 中的原型   101
  4.2.5 編寫(xiě)抽象算法的Template Method模式  101
  4.2.6 用Ruby 來(lái)嘗試TemplateMethod   102
  4.2.7 動(dòng)態(tài)語(yǔ)言與Template Method模式  104
  4.2.8 避免高度依賴性的Observer模式  104
  4.2.9 Observable 模塊  105
  4.2.10 Observer 模式與動(dòng)態(tài)語(yǔ)言   107
  4.3 設(shè)計(jì)模式(3)   107
  4.3.1 軟件開(kāi)發(fā)的悲劇   108
  4.3.2 開(kāi)放— 封閉原則   108
  4.3.3 面向?qū)ο蟮那闆r  109
  4.3.4 非面向?qū)ο蟮那闆r  110
  4.3.5 OCP 與Template Method 模式   111
  4.3.6 Observer 模式   113
  4.3.7 使用Strategy 模式   114
  4.3.8 Strategy 模式與OCP   116
  第5 章 Ajax   119
  5.1 Ajax 和java script(前篇)  120
  5.1.1 通信及異步頁(yè)面更新  120
  5.1.2 技術(shù)要素之一:java script    122
  5.1.3 技術(shù)要素之二:XML  122
  5.1.4 XML 以外的數(shù)據(jù)表現(xiàn)形式   123
  5.1.5 技術(shù)要素之三:DHTML   124
  5.1.6 java script 技術(shù)基礎(chǔ)  124
  5.1.7 原型模式的面向?qū)ο缶幊陶Z(yǔ)言   126
  5.1.8 使用prototype.js 庫(kù)  127
  5.1.9 prototype.js 的功能   127
  5.2 Ajax 和java script(后篇)   130
  5.2.1 巧妙使用DHTML   131
  5.2.2 獲取document 節(jié)點(diǎn)  132
  5.2.3 獲取和更新標(biāo)簽數(shù)據(jù)  133
  5.2.4 設(shè)定事件處理程序  133
  5.2.5 追加標(biāo)簽節(jié)點(diǎn)  135
  5.2.6 本地HTML 應(yīng)用  135
  5.2.7 和服務(wù)器間的通信   137
  5.2.8 使用Prototype.js 的優(yōu)點(diǎn)   138
  5.2.9 在服務(wù)器上保存數(shù)據(jù)   138
  5.2.10 Web 應(yīng)用的脆弱性  140
  5.2.11 使用java script 的感覺(jué)   141
  第6 章 Ruby on Rails    143
  6.1 MVC 和Ruby on Rails    144
  6.1.1 模型、視圖和控制的作用  144
  6.1.2 用秒表的例子來(lái)學(xué)習(xí)MVC模式   145
  6.1.3 生成視圖和控制部分   147
  6.1.4 GUI 工具箱與MVC  148
  6.1.5 同時(shí)使用工具箱和MVC   149
  6.1.6 MVC 的優(yōu)缺點(diǎn)   151
  6.1.7 Web 應(yīng)用中的MVC    152
  6.2 開(kāi)放類(lèi)和猴子補(bǔ)丁   153
  6.2.1 開(kāi)放類(lèi)  154
  6.2.2 猴子補(bǔ)丁的目的  154
  6.2.3 猴子補(bǔ)丁的技巧   155
  6.2.4 靈活使用開(kāi)放類(lèi)的庫(kù)  159
  6.2.5 猴子補(bǔ)丁的幾點(diǎn)問(wèn)題  161
  6.2.6 其他辦法   162
  6.2.7 Ruby on Rails 和開(kāi)放類(lèi)  165
  6.2.8 ActiveSupport 帶來(lái)的擴(kuò)展  166
  6.2.9 字節(jié)單位系列   168
  6.2.10 復(fù)數(shù)形和序數(shù)   168
  6.2.11 大規(guī)模開(kāi)發(fā)和Ruby   169
  6.2.12 信賴性模型   170
  6.2.13 猴子補(bǔ)丁的未來(lái)  170
  第7 章 文字編碼  173
  7.1 文字編碼的種類(lèi)  174
  7.1.1 早期的文字編碼  174
  7.1.2 紙帶與文字表現(xiàn)  175
  7.1.3 文字是什么   176
  7.1.4 走向英語(yǔ)以外的語(yǔ)言(歐洲篇)   177
  7.1.5 英語(yǔ)以外的語(yǔ)言(亞洲篇)   177
  7.1.6 Unicode 的問(wèn)世  180
  7.1.7 統(tǒng)一編碼成16 位的漢字統(tǒng)合   181
  7.1.8 Unicode 的兩個(gè)問(wèn)題  181
  7.1.9 Unicode 的文字集  182
  7.1.10 文字表示的不確定性  183
  7.1.11 Unicode 的字符編碼方式   183
  7.2 程序中的文字處理   185
  7.2.1 文字編碼有多個(gè)意思  185
  7.2.2 只能處理文字集中包含的文字   185
  7.2.3 紛繁復(fù)雜的文字編碼方式   186
  7.2.4 影響力漸微的Shift_JIS 與EUC-JP  186
  7.2.5 Unicode 有多種字符編碼方式   186
  7.2.6 為什么會(huì)發(fā)生亂碼   188
  7.2.7 字符編碼方式錯(cuò)誤  188
  7.2.8 沒(méi)有字體  189
  7.2.9 變換為內(nèi)部碼時(shí)出錯(cuò)  189
  7.2.10 發(fā)生不完全變換  189
  7.2.11 文字集的不同  190
  7.2.12 字節(jié)順序錯(cuò)誤  191
  7.2.13 從編程語(yǔ)言的角度處理文字  191
  7.2.14 以變換為前提的UCS 方式  191
  7.2.15 原封不動(dòng)處理的CSI 方式  192
  7.2.16 使用UTF-16 的Java  192
  7.2.17 使用UTF-8 的Perl   193
  7.2.18 用UTF-16 的Python   194
  7.2.19 采用CSI 方式的Ruby 1.8  194
  7.2.20 強(qiáng)化了功能的Ruby 1.9  195
  7.2.21 是UCS 還是CSI  196
  第8 章 正則表達(dá)式   199
  8.1 正則表達(dá)式基礎(chǔ)   200
  8.1.1 檢索“像那樣的東西”  200
  8.1.2 正則表達(dá)式的語(yǔ)法  200
  8.1.3 3 個(gè)陷阱  203
  8.1.4 正則表達(dá)式對(duì)象  204
  8.1.5 選項(xiàng)  205
  8.1.6 正則表達(dá)式匹配的方法  206
  8.1.7 特殊變量  207
  8.1.8 字符串與正則表達(dá)式  207
  8.1.9 split 的本質(zhì)  207
  8.1.10 字符串的掃描  208
  8.1.11 置換  208
  8.2 正則表達(dá)式的應(yīng)用實(shí)例與“鬼車(chē)”   210
  8.2.1 解析日志文件的方法  211
  8.2.2 避免使用$的方法  213
  8.2.3 從郵件中取出日期的方法  215
  8.2.4 典型拼寫(xiě)錯(cuò)誤的檢索方法  216
  8.2.5 Ruby 1.9 的新功能“鬼車(chē)”   216
  第9 章 整數(shù)和浮點(diǎn)小數(shù)  219
  9.1 深?yuàn)W的整數(shù)世界  220
  9.1.1 整數(shù)是有范圍的   221
  9.1.2 嘗試位運(yùn)算  222
  9.1.3 操作特定的位  223
  9.1.4 表示負(fù)數(shù)的辦法  225
  9.1.5 Ruby 的整數(shù)  226
  9.1.6 挑戰(zhàn)公開(kāi)密鑰方式  227
  9.2 撲朔迷離的浮點(diǎn)小數(shù)世界  228
  9.2.1 計(jì)算機(jī)對(duì)小數(shù)的處理  229
  9.2.2 固定小數(shù)點(diǎn)數(shù)不易使用  229
  9.2.3 科學(xué)計(jì)數(shù)法也有問(wèn)題   229
  9.2.4 小數(shù)不能完全表示   230
  9.2.5 有不能比較的時(shí)候  231
  9.2.6 誤差積累   232
  9.2.7 不是數(shù)的特別“數(shù)”   232
  9.2.8 計(jì)算誤差有多種   233
  9.2.9 誤差導(dǎo)致的嚴(yán)重問(wèn)題   235
  9.2.10 BigDecimal 是什么   236
  9.2.11 能夠表示分?jǐn)?shù)的Rational類(lèi)   236
  第10 章 高速執(zhí)行和并行處理   239
  10.1 讓程序高速執(zhí)行(前篇)  240
  10.1.1 是不是越快越好   240
  10.1.2 高速執(zhí)行的樂(lè)趣與效率  240
  10.1.3 以數(shù)據(jù)為基礎(chǔ)作出判斷  241
  10.1.4 改善系統(tǒng)調(diào)用   241
  10.1.5 數(shù)據(jù)可靠嗎   243
  10.1.6 只需改善瓶頸   243
  10.1.7 profiler 本身成了累贅   245
  10.1.8 算法與數(shù)據(jù)結(jié)構(gòu)   245
  10.1.9 理解O 記法  245
  10.1.10 選擇算法   246
  10.1.11 調(diào)查算法的性能   246
  10.1.12 高速執(zhí)行的悲哀   247
  10.1.13 性能優(yōu)化的格言   248
  10.2 讓程序高速執(zhí)行(后篇)   248
  10.2.1 確認(rèn)程序概要     249
  10.2.2 發(fā)現(xiàn)瓶頸   250
  10.2.3 使用更好的profiler   251
  10.2.4 高速優(yōu)化之一:削減對(duì)象   252
  10.2.5 高速優(yōu)化之二:利用立即值   254
  10.2.6 高速優(yōu)化之三:利用C 語(yǔ)言   255
  10.2.7 高速優(yōu)化之四:采用合適的數(shù)據(jù)結(jié)構(gòu)  256
  10.2.8 全部以C 語(yǔ)言計(jì)算   257
  10.2.9 還存在其他技巧  257
  10.3 并行編程  258
  10.3.1 使用線程的理由   258
  10.3.2 生成線程   259
  10.3.3 線程的執(zhí)行狀態(tài)  260
  10.3.4 傳遞值給線程的方法  261
  10.3.5 信息共有所產(chǎn)生的問(wèn)題  262
  10.3.6 數(shù)據(jù)完整性的喪失   262
  10.3.7 死鎖   263
  10.3.8 用鎖來(lái)實(shí)現(xiàn)對(duì)資源的獨(dú)占  264
  10.3.9 二級(jí)互斥   265
  10.3.10 用隊(duì)列協(xié)調(diào)線程  265
  10.3.11 鎖模型與隊(duì)列模型的比較   267
  10.4 前景可期的并行編程技術(shù),Actor    268
  10.4.1 何謂Actor  268
  10.4.2 操作Actor 的3 種處理系統(tǒng)   269
  10.4.3 Erlang 的程序   270
  10.4.4 Pingpong 處理的開(kāi)始   270
  10.4.5 啟動(dòng)pingpong 程序   271
  10.4.6 Erlang 的錯(cuò)誤處理   272
  10.4.7 Erlang 的使用場(chǎng)所   273
  10.4.8 面向Ruby 的庫(kù)“Revactor”   273
  10.4.9 Revactor 的應(yīng)用場(chǎng)合  274
  10.4.10 另一個(gè)庫(kù)Dramatis   275
  第11 章 程序安全性    279
  11.1 程序的漏洞與攻擊方法  280
  11.1.1 4 種軟件漏洞   280
  11.1.2 因權(quán)限被竊取而成為重大問(wèn)題   281
  11.1.3 安全問(wèn)題的根源  281
  11.1.4 “守護(hù)神”引起的問(wèn)題   282
  11.1.5 多 樣化的攻擊手段   282
  11.1.6 緩沖區(qū)溢出   283
  11.1.7 整數(shù)溢出  284
  11.1.8 SQL 注入  285
  11.1.9 Shell 注入  286
  11.1.10 跨站點(diǎn)腳本攻擊   287
  11.1.11 跨站點(diǎn)偽造請(qǐng)求   288
  11.1.12 社會(huì)工程     289
  11.2 用異常進(jìn)行錯(cuò)誤處理   290
  11.2.1 異常的歷史   292
  11.2.2 Java 的受控異! 292
  11.2.3 Icon 的面向目標(biāo)判斷   293
  11.2.4 Ruby 的異常  294
  11.2.5 異常發(fā)生  295
  11.2.6 異常類(lèi)   296
  11.2.7 異常處理的設(shè)計(jì)方針  297
  11.2.8 異常發(fā)生的設(shè)計(jì)原則   298
  第12 章 關(guān)于時(shí)間的處理  301
  12.1 用程序處理時(shí)刻與時(shí)間   302
  12.1.1 時(shí)差與時(shí)區(qū)  302
  12.1.2 世界協(xié)調(diào)時(shí)間  302
  12.1.3 夏令時(shí)(DST)   303
  12.1.4 改歷  304
  12.1.5 日期與時(shí)間的類(lèi)   305
  12.1.6 2038 年問(wèn)題  308
  12.1.7 DateTime 類(lèi)  309
  12.1.8 Time 與DateTime 的相互變換  310
  第13 章 關(guān)于數(shù)據(jù)的持久化  313
  13.1 持久化數(shù)據(jù)的方法  314
  13.1.1 保存文本   314
  13.1.2 變換成文本的Marshal    314
  13.1.3 使用Marshal 模塊  315
  13.1.4 復(fù)制有兩種方式   316
  13.1.5 仔細(xì)看Marshal 的格式   316
  13.1.6 不能保存的3 類(lèi)對(duì)象  317
  13.1.7 制作面向?qū)ο髷?shù)據(jù)庫(kù)  318
  13.1.8 試用PStore    318
  13.1.9 變換為文本的YAML    320
  13.1.10 用YAML 制作數(shù)據(jù)庫(kù)   321
  13.2 對(duì)象的保存   322
  13.2.1 高速的Object Preva lence    322
  13.2.2 Object Preva lence 的問(wèn)題點(diǎn)   323
  13.2.3 使用Madeleine   323
  13.2.4 訪問(wèn)時(shí)刻信息  325
  13.2.5 讓Madeleine 更容易使用  326
  13.2.6 Madeleine 的實(shí)用例Instiki    328
  13.3 關(guān)于XML 的考察  328
  13.3.1 XML 的祖先是SGML    329
  13.3.2 XML 是樹(shù)結(jié)構(gòu)的數(shù)據(jù)表現(xiàn)  329
  13.3.3 優(yōu)點(diǎn)在于純文本  330
  13.3.4 缺點(diǎn)在于冗長(zhǎng)  331
  13.3.5 不適合重視效率的處理  331
  13.3.6 適合于信息交換的格式  332
  13.3.7 XML 的解析  332
  13.3.8 XML 處理庫(kù)REXML  333
  13.3.9 XML 的代替  336
  第14 章 函數(shù)式編程  339
  14.1 新范型——函數(shù)式編程  340
  14.1.1 具有多種函數(shù)式性質(zhì)的Lisp  341
  14.1.2 徹底的函數(shù)式編程語(yǔ)言Haskell   342
  14.1.3 延遲計(jì)算:不必要的處理就不做  343
  14.1.4 靈活的“靜態(tài)多態(tài)性”類(lèi)型系統(tǒng)  344
  14.1.5 近代函數(shù)式語(yǔ)言之父OCaml   345
  14.1.6 強(qiáng)于并行計(jì)算的Erlang  345
  14.1.7 用Ruby 進(jìn)行函數(shù)式編程  346
  14.1.8 用枚舉器來(lái)實(shí)現(xiàn)延遲計(jì)算  347
  14.2 自動(dòng)生成代碼  348
  14.2.1 在商業(yè)中利用Ruby  349
  14.2.2 使用Ruby 自動(dòng)生成代碼  350
  14.2.3 消除重復(fù)代碼  350
  14.2.4 代碼生成的應(yīng)用  351
  14.2.5 代碼生成的效果  352
  14.2.6 編寫(xiě)代碼生成器  353
  14.2.7 也可以使用XML  354
  14.2.8 在EJB 中使用代碼生成  355
  14.3 內(nèi) 存管理與垃圾收集   356
  14.3.1 內(nèi)存管理的困難  357
  14.3.2 垃圾收集亮相之前  358
  14.3.3 評(píng)價(jià)垃圾收集的兩個(gè)指標(biāo)  359
  14.3.4 垃圾收集算法  360
  14.3.5 引用計(jì)數(shù)方式  360
  14.3.6 標(biāo)記和掃除方式  361
  14.3.7 標(biāo)記和緊縮方式  362
  14.3.8 復(fù)制方式   363
  14.3.9 多種多樣的垃圾收集算法   364
  14.3.10 分代垃圾收集   364
  14.3.11 保守垃圾收集  366
  14.3.12 增量垃圾收集  366
  14.3.13 并行垃圾收集  367
  14.3.14 位圖標(biāo)記   367
  14.4 用C 語(yǔ)言來(lái)擴(kuò)展Ruby  368
  14.4.1 開(kāi)發(fā)與執(zhí)行速度的取舍  368
  14.4.2 擴(kuò)展庫(kù)  369
  14.4.3 看例題學(xué)習(xí)擴(kuò)展模塊  370
  14.4.4 QDBM 函數(shù)  372
  14.4.5 初始化對(duì)象  373
  14.4.6 實(shí)現(xiàn)方法  374
  14.4.7 關(guān)于垃圾收集的注意事項(xiàng)  376
  14.4.8 其他的Ruby API  376
  14.4.9 擴(kuò)展庫(kù)的編譯   376
  14.4.10 擴(kuò)展庫(kù)以外的工具   377
  14.5 為什么要開(kāi)源   380
  14.5.1 自由軟件的思想  380
  14.5.2 自由軟件的歷史   381
  14.5.3 Emacs 事件的發(fā)生   381
  14.5.4 開(kāi)源的誕生  382
  14.5.5 OSS 許可證  383
  14.5.6 開(kāi)源的背景  385
  14.5.7 企業(yè)關(guān)注開(kāi)源的理由   386
  14.5.8 Ruby 與開(kāi)源  386
  14.5.9 選擇許可證的方法  387





上一本:近代的超克 下一本:系統(tǒng)化思維導(dǎo)論

作家文集

下載說(shuō)明
松本行弘的程序世界的作者是松本行弘,全書(shū)語(yǔ)言優(yōu)美,行文流暢,內(nèi)容豐富生動(dòng)引人入勝。為表示對(duì)作者的支持,建議在閱讀電子書(shū)的同時(shí),購(gòu)買(mǎi)紙質(zhì)書(shū)。

更多好書(shū)