|
-- 會員 / 註冊 --
|
|
|
|
代碼的未來 ( 簡體 字) |
作者:[日] 松本行弘 | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 35640 詢問書籍請說出此書號!【有庫存】 NT售價: 395 元 |
出版日:6/1/2013 |
頁數:356 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115317513 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:《代碼的未來》是Ruby之父松本行弘的又一力作。作者對云計算、大數據時代下的各種編程語言以及相關技術進行了剖析,并對編程語言的未來發展趨勢做出預測,內容涉及Go、VoltDB、node.js、CoffeeScript、Dart、MongoDB、摩爾定律、編程語言、多核、NoSQL等當今備受關注的話題。 《代碼的未來》面向各層次程序設計人員和編程愛好者,也可供相關技術人員參考。 |
目錄:第一章 編程的時間和空間 1.1 編程的本質 3 編程的本質是思考 4 創造世界的樂趣 4 快速提高的性能改變了社會 5 以不變應萬變 8 摩爾定律的局限 9 社會變化與編程 10 1.2 未來預測 13 科學的未來預測 14 IT未來預測 14 極限未來預測 16 從價格看未來 16 從性能看未來 17 從容量看未來 18 從帶寬看未來 19 小結 20
第二章 編程語言的過去、現在和未來 2.1 編程語言的世界 23 被歷史埋沒的先驅 25 編程語言的歷史 26 編程語言的進化方向 30 未來的編程語言 32 20年后的編程語言 34 學生們的想象 34 2.2 DSL(特定領域語言) 36 外部DSL 37 內部DSL 38 DSL的優勢 39 DSL的定義 39 適合內部DSL的語言 40 外部DSL實例 42 DSL設計的構成要素 43 Sinatra 46 小結 47 2.3 元編程 48 Meta, Reflection 48 類對象 51 類的操作 52 Lisp 53 數據和程序 54 Lisp程序 56 宏 56 宏的功與過 57 元編程的可能性與危險性 59 小結 60 2.4 內存管理 61 看似無限的內存 61 GC的三種基本方式 62 術語定義 62 標記清除方式 63 復制收集方式 64 引用計數方式 65 引用計數方式的缺點 65 進一步改良的應用方式 66 分代回收 66 對來自老生代的引用進行記錄 67 增量回收 68 并行回收 69 GC大統一理論 69 2.5 異常處理 71 “一定沒問題的” 71 用特殊返回值表示錯誤 72 容易忽略錯誤處理 72 Ruby中的異常處理 73 產生異常 74 更高級的異常處理 75 Ruby中的后處理保證 76 其他語言中的異常處理 77 Java的檢查型異常 77 Icon的異常和真假值 78 Eiffel的Design by Contract 80 異常與錯誤值 80 小結 81 2.6 閉包 82 函數對象 82 高階函數 83 用函數參數提高通用性 84 函數指針的局限 85 作用域:變量可見范圍 87 生存周期:變量的存在范圍 88 閉包與面向對象 89 Ruby的函數對象 89 Ruby與JavaScript的區別 90 Lisp-1與Lisp-2 91
第三章 編程語言的新潮流 3.1 語言的設計 97 客戶端與服務器端 97 向服務器端華麗轉身 98 在服務器端獲得成功的四大理由 99 客戶端的JavaScript 100 性能顯著提升 101 服務器端的Ruby 102 Ruby on Rails帶來的飛躍 102 服務器端的Go 103 靜態與動態 104 動態運行模式 105 何謂類型 105 靜態類型的優點 106 動態類型的優點 106 有鴨子樣的就是鴨子 107 Structural Subtyping 108 小結 108 3.2 Go 109 New(新的) 109 Experimental(實驗性的) 109 Concurrent(并發的) 110 Garbage-collected(帶垃圾回收的) 110 Systems(系統) 111 Go的創造者們 111 Hello World 112 Go的控制結構 113 類型聲明 116 無繼承式面向對象 118 多值與多重賦值 120 并發編程 122 小結 124 3.3 Dart 126 為什么要推出Dart? 126 Dart的設計目標 129 代碼示例 130 Dart的特征 132 基于類的對象系統 132 非強制性靜態類型 133 Dart的未來 134 3.4 CoffeeScript 135 最普及的語言 135 被誤解最多的語言 135 顯著高速化的語言 136 對JavaScript的不滿 138 CoffeeScript 138 安裝方法 139 聲明和作用域 139 分號和代碼塊 141 省略記法 142 字符串 143 數組和循環 143 類 145 小結 146 3.5 Lua 148 示例程序 149 數據類型 149 函數 150 表 150 元表 151 方法調用的實現 153 基于原型編程 155 和Ruby的比較(語言篇) 157 嵌入式語言Lua 157 和Ruby的比較(實現篇) 158 嵌入式Ruby 159
第四章 云計算時代的編程 4.1 可擴展性 163 信息的尺度感 163 大量數據的查找 164 二分法查找 165 散列表 167 布隆過濾器 169 一臺計算機的極限 170 DHT(分布式散列表) 171 Roma 172 MapReduce 173 小結 174 4.2 C10K問題 175 何為C10K問題 175 C10K問題所引發的“想當然” 177 使用epoll功能 180 使用libev框架 181 使用EventMachine 183 小結 185 4.3 HashFold 186 HashFold庫的實現(Level 1) 187 運用多核的必要性 190 目前的Ruby實現所存在的問題 191 通過進程來實現HashFold(Level 2) 191 抖動 193 運用進程池的HashFold(Level 3) 194 小結 197 4.4 進程間通信 198 進程與線程 198 同一臺計算機上的進程間通信 199 TCP/IP協議 201 用C語言進行套接字編程 202 用Ruby進行套接字編程 204 Ruby的套接字功能 205 用Ruby實現網絡服務器 208 小結 209 4.5 Rack與Unicorn 210 Rack中間件 211 應用程序服務器的問題 212 Unicorn的架構 215 Unicorn的解決方案 215 性能 219 策略 220 小結 221
第五章 支撐大數據的數據存儲技術 5.1 鍵-值存儲 225 Hash類 225 DBM類 226 數據庫的ACID特性 226 CAP原理 227 CAP解決方案——BASE 228 不能舍棄可用性 229 大規模環境下的鍵-值存儲 230 訪問鍵-值存儲 230 鍵-值存儲的節點處理 231 存儲器 232 寫入和讀取 233 節點追加 233 故障應對 233 終止處理 235 其他機制 235 性能與應用實例 236 小結 236
5.2 NoSQL 237 RDB的極限 237 NoSQL數據庫的解決方案 238 形形色色的NoSQL數據庫 239 面向文檔數據庫 240 MongoDB的安裝 241 啟動數據庫服務器 243 MongoDB的數據庫結構 244 數據的插入和查詢 244 用JavaScript進行查詢 245 高級查詢 246 數據的更新和刪除 249 樂觀并發控制 250 5.3 用Ruby來操作MongoDB 251 使用Ruby驅動 251 對數據庫進行操作 253 數據的插入 253 數據的查詢 253 高級查詢 254 find方法的選項 256 原子操作 257 ActiveRecord 259 OD Mapper 260 5.4 SQL數據庫的反擊 264 “云”的定義 264 SQL數據庫的極限 264 存儲引擎Spider 265 SQL數據庫之父的反駁 265 SQL數據庫VoltDB 268 VoltDB的架構 269 VoltDB中的編程 270 Hello VoltDB! 271 性能測試 273 小結 275 5.5 memcached和它的伙伴們 276 用于高速訪問的緩存 276 memcached 277 示例程序 278 對memcached的不滿 279 memcached替代服務器 280 另一種鍵-值存儲Redis 282 Redis的數據類型 284 Redis的命令與示例 285 小結 289
第六章 多核時代的編程 6.1 摩爾定律 293 呈幾何級數增長 293 摩爾定律的內涵 294 摩爾定律的結果 295 摩爾定律所帶來的可能性 296 為了提高性能 297 摩爾定律的極限 302 超越極限 303 不再有免費的午餐 304 6.2 UNIX管道 305 管道編程 306 多核時代的管道 308 xargs——另一種運用核心的方式 309 注意瓶頸 311 阿姆達爾定律 311 多核編譯 312 ccache 313 distcc 313 編譯性能測試 314 小結 315 6.3 非阻塞I/O 316 何為非阻塞I/O 316 使用read(2)的方法 317 邊沿觸發與電平觸發 319 使用read(2)+select的方法 319 使用read+O_NONBLOCK標志 321 Ruby的非阻塞I/O 322 使用aio_read的方法 323 6.4 node.js 330 減負 330 拖延 331 委派 332 非阻塞編程 333 node.js框架 333 事件驅動編程 334 事件循環的利弊 335 node.js編程 335 node.js網絡編程 337 node.js回調風格 339 node.js的優越性 340 EventMachine與Rev 341 6.5 ZeroMQ 342 多CPU的必要性 342 阿姆達爾定律 343 多CPU的運用方法 343 進程間通信 345 管道 345 SysV IPC 346 套接字 347 UNIX套接字 349 ZeroMQ 349 ZeroMQ的連接模型 350 ZeroMQ的安裝 352 ZeroMQ示例程序 352 小結 354
版權聲明 356 |
序: |
|