:::相關網站

:::會員服務|快速功能

  • 今日66折
  • 天天BUY
TOP1000
松本行弘的程序世界

松本行弘的程序世界

  • 定價:450
  • 優惠價:87392
運送方式:
  • 可配送點:台灣、蘭嶼、綠島、澎湖、金門、馬祖、全球
  • 可取貨點:台灣、蘭嶼、綠島、澎湖、金門、馬祖
    香港、澳門、新加坡
載入中...
 

內容簡介

  本書為“Ruby之父”經典力作,展現了大師級的程序思考方式。作者憑借對編程本質的深刻認識和對各種技術優缺點的掌握,闡述了Ruby的設計理念,並由此延伸,帶領讀者了解編程的本質,一窺程序設計的奧秘。

  本書不是為了介紹某種特定的技術,而是從宏觀的角度討論與編程相關的各種技術。書中第1章介紹了作者對編程問題的新思考和新看法,剩下的內容出自《日經Linux》雜志于2005年5月到2009年4月連載的“松本編程模式講壇”,其中真正涉及“模式”的內容並不多,大量篇幅都用于介紹技術內幕和背景分析等內容,使讀者真正了解相關技術的立足點。另外,書中還包含許多以Ruby、Lisp、Smalltalk、Erlang、JavaScript等動態語言所寫成的範例。
 

目錄

第1章 我為什麼開發Ruby
1.1 我為什麼開發Ruby
1.1.1 編程語言的重要性
1.1.2 Ruby的原則
1.1.3 簡潔性
1.1.4 擴展性
1.1.5 穩定性
1.1.6 一切皆因興趣
第2章 面向對象
2.1 編程和面向對象的關系
2.1.1 顛倒的構造
2.1.2 主宰計算機的武器
2.1.3 怎樣寫程序
2.1.4 面向對象的編程方法
2.1.5 面向對象的難點
2.1.6 多態性
2.1.7 具體的程序
2.1.8 多態性的優點
2.2 數據抽象和繼承
2.2.1 面向對象的歷史
2.2.2 復雜性是面向對象的敵人
2.2.3 結構化編程
2.2.4 數據抽象化
2.2.5 雛形
2.2.6 找出相似的部分來繼承
2.3 多重繼承的缺點
2.3.1 為什麼需要多重繼承
2.3.2 多重繼承和單一繼承不可分離
2.3.3 goto語句和多重繼承比較相似
2.3.4 解決多重繼承的問題
2.3.5 靜態語言和動態語言的區別
2.3.6 靜態語言的特點
2.3.7 動態語言的特點
2.3.8 靜態語言和動態語言的比較
2.3.9 繼承的兩種含義
2.3.10 接口的缺點
2.3.11 繼承實現的方法
2.3.12 從多重繼承變形而來的Mix-in
2.3.13 積極支持Mix-in的Ruby
2.4 兩個誤解
2.4.1 面向對象的編程
2.4.2 對象的模板=類
2.4.3 利用模塊的手段=繼承
2.4.4 多重繼承不好嗎
2.4.5 動態編程語言也需要多重繼承
2.4.6 馴服多重繼承的方法
2.4.7 Ruby中多重繼承的實現方法
2.4.8 Java實現多重繼承的方法
2.5 Duck Typing誕生之前
2.5.1 為什麼需要類型
2.5.2 動態的類型是從Lisp中誕生的
2.5.3 動態類型在面向對象中發展起來了
2.5.4 動態類型和靜態類型的邂逅
2.5.5 靜態類型的優點
2.5.6 動態類型的優點
2.5.7 只關心行為的Duck Typing
2.5.8 避免明確的類型檢查
2.5.9 克服動態類型的缺點
2.5.10 動態編程語言
2.6 元編程
2.6.1 元編程
2.6.2 反射
2.6.3 元編程的例子
2.6.4 使用反射功能
2.6.5 分布式Ruby的實現
2.6.6 數據庫的應用
2.6.7 輸出XML
2.6.8 元編程和小編程語言
2.6.9 聲明的實現
2.6.10 上下文相關的實現
2.6.11 單位的實現
2.6.12 詞匯的實現
2.6.13 層次數據的實現
2.6.14 適合DSL的語言,不適合DSL的語言
第3章 程序塊
3.1 程序塊的威力
3.1.1 把函數作為參數的高階函數
3.1.2 C語言高階函數的局限
3.1.3 可以保存外部環境的閉包
3.1.4 塊的兩種使用方法
3.1.5 最終來看,塊到底是什麼
3.1.6 塊在循環處理中的應用
3.1.7 內部迭代器和外部迭代器
3.1.8 在排序和比較大小中的應用
3.1.9 用塊保證程序的後處理
3.1.10 用塊實現新的控制結構
3.1.11 在回調中使用塊
3.1.12 塊處理的特別理由
3.2 用塊作循環
3.2.1 塊是處理的集合
3.2.2 塊應用範圍的擴展
3.2.3 高階函數和塊的本質一樣
3.2.4 用Enumerable來利用塊
3.2.5 Enumerable的局限
3.3 精通集合的使用
3.3.1 使用Ruby的數組
3.3.2 修改指定範圍的元素內容
3.3.3 Ruby中的哈希處理
3.3.4 支持循環的Enumerable
3.3.5 用于循環的each方法
3.3.6 使用inject、zip和grep
3.3.7 用來指定條件的select方法
3.3.8 排序與比較大小的方法
3.3.9 在類中包含(include)Enumerable模塊
3.3.10 List的內部包和塊的區別
第4章 設計模式
4.1 設計模式(1)
4.1.1 設計模式的價值和意義
4.1.2 設計模式是程序抽象化的延伸
4.1.3 Ruby中的設計模式
4.1.4 Singleton模式
4.1.5 Proxy模式
4.1.6 Iterator模式
4.1.7 外部與內部,哪一個更好
4.1.8 內部迭代器的缺陷
4.1.9 外部迭代器的缺陷
4.2 設計模式(2)
4.2.1模式與動態語言的關系
4.2.2 重復使用既存對象的Prototype模式
4.2.3 親身體驗Io語言
4.2.4 Ruby中的原型
4.2.5 編寫抽象算法的Template Method模式
4.2.6 用Ruby來嘗試TemplateMethod
4.2.7 動態語言與Template Method模式
4.2.8 避免高度依賴性的Observer模式
4.2.9 Observable模塊
4.2.10 Observer模式與動態語言
4.3 設計模式(3)
4.3.1 軟件開發的悲劇
4.3.2 開放— 封閉原則
4.3.3 面向對象的情況
4.3.4 非面向對象的情況
4.3.5 OCP 與Template Method模式
4.3.6 Observer模式
4.3.7 使用Strategy模式
4.3.8 Strategy模式與OCP
第5章 Ajax
5.1 Ajax和JavaScript(前篇)
5.1.1 通信及異步頁面更新
5.1.2 技術要素之一︰JavaScript
5.1.3 技術要素之二︰XML
5.1.4 XML以外的數據表現形式
5.1.5 技術要素之三︰DHTML
5.1.6 JavaScript技術基礎
5.1.7 原型模式的面向對象編程語言
5.1.8 使用prototype.js庫
5.1.9 prototype.js的功能
5.2 Ajax和JavaScript(後篇)
5.2.1 巧妙使用DHTML
5.2.2 獲取document節點
5.2.3 獲取和更新標簽數據
5.2.4 設定事件處理程序
5.2.5 追加標簽節點
5.2.6 本地HTML應用
5.2.7 和服務器間的通信
5.2.8 使用Prototype.js的優點
5.2.9 在服務器上保存數據
5.2.10 Web 應用的脆弱性
5.2.11 使用JavaScript的感覺
第6章 Rubyon Rails
6.1 MVC 和Rubyon Rails
6.1.1 模型、視圖和控制的作用
6.1.2 用秒表的例子來學習MVC模式
6.1.3 生成視圖和控制部分
6.1.4 GUI工具箱與MVC
6.1.5 同時使用工具箱和MVC
6.1.6 MVC的優缺點
6.1.7 Web應用中的MVC
6.2 開放類和猴子補丁
6.2.1 開放類
6.2.2 猴子補丁的目的
6.2.3 猴子補丁的技巧
6.2.4 靈活使用開放類的庫
6.2.5 猴子補丁的幾點問題
6.2.6 其他辦法
6.2.7 Rubyon Rails和開放類
6.2.8 ActiveSupport帶來的擴展
6.2.9 字節單位系列
6.2.10 復數形和序數
6.2.11 大規模開發和Ruby
6.2.12 信賴性模型
6.2.13 猴子補丁的未來
第7章 文字編碼
7.1 文字編碼的種類
7.1.1 早期的文字編碼
7.1.2 紙帶與文字表現
7.1.3 文字是什麼
7.1.4 走向英語以外的語言(歐洲篇)
7.1.5 英語以外的語言(亞洲篇)
7.1.6 Unicode的問世
7.1.7 統一編碼成16位的漢字統合
7.1.8 Unicode的兩個問題
7.1.9 Unicode的文字集
7.1.10 文字表示的不確定性
7.1.11 Unicode的字符編碼方式
7.2 程序中的文字處理
7.2.1 文字編碼有多個意思
7.2.2 只能處理文字集中包含的文字
7.2.3 紛繁復雜的文字編碼方式
7.2.4 影響力漸微的Shift_JIS 與EUC-JP
7.2.5 Unicode有多種字符編碼方式
7.2.6 為什麼會發生亂碼
7.2.7 字符編碼方式錯誤
7.2.8 沒有字體
7.2.9 變換為內部碼時出錯
7.2.10 發生不完全變換
7.2.11 文字集的不同
7.2.12 字節順序錯誤
7.2.13 從編程語言的角度處理文字
7.2.14 以變換為前提的UCS方式
7.2.15 原封不動處理的CSI方式
7.2.16 使用UTF-16的Java
7.2.17 使用UTF-8的Perl
7.2.18 用UTF-16的Python
7.2.19 采用CSI方式的Ruby 1.8
7.2.20 強化了功能的Ruby1.9
7.2.21 是UCS還是CSI
第8章 正則表達式
8.1 正則表達式基礎
8.1.1 檢索“像那樣的東西”
8.1.2 正則表達式的語法
8.1.3 個陷阱
8.1.4 正則表達式對象
8.1.5 選項
8.1.6 正則表達式匹配的方法
8.1.7 特殊變量
8.1.8 字符串與正則表達式
8.1.9 split的本質
8.1.10 字符串的掃描
8.1.11 置換
8.2 正則表達式的應用實例與“鬼車”
8.2.1 解析日志文件的方法
8.2.2 避免使用$的方法
8.2.3 從郵件中取出日期的方法
8.2.4 典型拼寫錯誤的檢索方法
8.2.5 Ruby.9的新功能“鬼車”
第9章 整數和浮點小數
9.1 深奧的整數世界
9.1.1 整數是有範圍的
9.1.2 嘗試位運算
9.1.3 操作特定的位
9.1.4 表示負數的辦法
9.1.5 Ruby的整數
9.1.6 挑戰公開密鑰方式
9.2 撲朔迷離的浮點小數世界
9.2.1 計算機對小數的處理
9.2.2 固定小數點數不易使用
9.2.3 科學計數法也有問題
9.2.4 小數不能完全表示
9.2.5 有不能比較的時候
9.2.6 誤差積累
9.2.7 不是數的特別“數”
9.2.8 計算誤差有多種
9.2.9 誤差導致的嚴重問題
9.2.10 BigDecimal是什麼
9.2.11 能夠表示分數的Rational類
第10章 高速執行和並行處理
10.1 讓程序高速執行(前篇)
10.1.1 是不是越快越好
10.1.2 高速執行的樂趣與效率
10.1.3 以數據為基礎作出判斷
10.1.4 改善系統調用
10.1.5 數據可靠嗎
10.1.6 只需改善瓶頸
10.1.7 profiler本身成了累贅
10.1.8 算法與數據結構
10.1.9 理解O記法
10.1.10 選擇算法
10.1.11 調查算法的性能
10.1.12 高速執行的悲哀
10.1.13 性能優化的格言
10.2 讓程序高速執行(後篇)
10.2.1 確認程序概要
10.2.2 發現瓶頸
10.2.3 使用更好的profiler
10.2.4 高速優化之一︰削減對象
10.2.5 高速優化之二︰利用立即值
10.2.6 高速優化之三︰利用C語言
10.2.7 高速優化之四︰采用合適的數據結構
10.2.8 全部以C語言計算
10.2.9 還存在其他技巧
10.3 並行編程
10.3.1 使用線程的理由
10.3.2 生成線程
10.3.3 線程的執行狀態
10.3.4 傳遞值給線程的方法
10.3.5 信息共有所產生的問題
10.3.6 數據完整性的喪失
10.3.7 死鎖
10.3.8 用鎖來實現對資源的獨佔
10.3.9 二級互斥
10.3.10 用隊列協調線程
10.3.11 鎖模型與隊列模型的比較
10.4 前景可期的並行編程技術,Actor
10.4.1 何謂Actor
10.4.2 操作Actor的3種處理系統
10.4.3 Erlang的程序
10.4.4 Pingpong處理的開始
10.4.5 啟動pingpong程序
10.4.6 Erlang的錯誤處理
10.4.7 Erlang的使用場所
10.4.8 面向Ruby的庫“Revactor”
10.4.9 Revactor的應用場合
10.4.10 另一個庫Dramatis
第11章 程序安全性
11.1 程序的漏洞與攻擊方法
11.1.1 種軟件漏洞
11.1.2 因權限被竊取而成為重大問題
11.1.3 安全問題的根源
11.1.4 “守護神”引起的問題
11.1.5 多樣化的攻擊手段
11.1.6 緩沖區溢出
11.1.7 整數溢出
11.1.8 SQL注入
11.1.9 Shell注入
11.1.10 跨站點腳本攻擊
11.1.11 跨站點偽造請求
11.1.12 社會工程
11.2 用異常進行錯誤處理
11.2.1 異常的歷史
11.2.2 Java的受控異常
11.2.3 Icon的面向目標判斷
11.2.4 Ruby的異常
11.2.5 異常發生
11.2.6 異常類
11.2.7 異常處理的設計方針
11.2.8 異常發生的設計原則
第12章 關于時間的處理
12.1 用程序處理時刻與時間
12.1.1 時差與時區
12.1.2 世界協調時間
12.1.3 夏令時(DST)
12.1.4 改歷
12.1.5 日期與時間的類
12.1.6 年問題
12.1.7 DateTime類
12.1.8 Time與DateTime的相互變換
第13章 關于數據的持久化
13.1 持久化數據的方法
13.1.1 保存文本
13.1.2 變換成文本的Marshal
13.1.3 使用Marshal模塊
13.1.4 復制有兩種方式
13.1.5 仔細看Marshal的格式
13.1.6 不能保存的3類對象
13.1.7 制作面向對象數據庫
13.1.8 試用PStore
13.1.9 變換為文本的YAML
13.1.10 用YAML制作數據庫
13.2 對象的保存
13.2.1 高速的Object Prevalence
13.2.2 Object Prevalence的問題點
13.2.3 使用Madeleine
13.2.4 訪問時刻信息
13.2.5 讓Madeleine更容易使用
13.2.6 Madeleine的實用例Instiki
13.3 關于XML的考察
13.3.1 XML的祖先是SGML
13.3.2 XML是樹結構的數據表現
13.3.3 優點在于純文本
13.3.4 缺點在于冗長
13.3.5 不適合重視效率的處理
13.3.6 適合于信息交換的格式
13.3.7 XML的解析
13.3.8 XML處理庫REXML
13.3.9 XML的代替
第14章 函數式編程
14.1 新範型——函數式編程
14.1.1 具有多種函數式性質的Lisp
14.1.2 徹底的函數式編程語言Haskell
14.1.3 延遲計算︰不必要的處理就不做
14.1.4 靈活的“靜態多態性”類型系統
14.1.5 近代函數式語言之父OCaml
14.1.6 強于並行計算的Erlang
14.1.7 用Ruby進行函數式編程
14.1.8 用枚舉器來實現延遲計算
14.2 自動生成代碼
14.2.1 在商業中利用Ruby
14.2.2 使用Ruby自動生成代碼
14.2.3 消除重復代碼
14.2.4 代碼生成的應用
14.2.5 代碼生成的效果
14.2.6 編寫代碼生成器
14.2.7 也可以使用XML
14.2.8 在EJB中使用代碼生成
14.3 內存管理與垃圾收集
14.3.1 內存管理的困難
14.3.2 垃圾收集亮相之前
14.3.3 評價垃圾收集的兩個指標
14.3.4 垃圾收集算法
14.3.5 引用計數方式
14.3.6 標記和掃除方式
14.3.7 標記和緊縮方式
14.3.8 復制方式
14.3.9 多種多樣的垃圾收集算法
14.3.10 分代垃圾收集
14.3.11 保守垃圾收集
14.3.12 增量垃圾收集
14.3.13 並行垃圾收集
14.3.14 位圖標記
14.4 用C語言來擴展Ruby
14.4.1 開發與執行速度的取舍
14.4.2 擴展庫
14.4.3 看例題學習擴展模塊
14.4.4 QDBM函數
14.4.5 初始化對象
14.4.6 實現方法
14.4.7 關于垃圾收集的注意事項
14.4.8 其他的RubyAPI
14.4.9 擴展庫的編譯
14.4.10 擴展庫以外的工具
14.5 為什麼要開源
14.5.1 自由軟件的思想
14.5.2 自由軟件的歷史
14.5.3 Emacs事件的發生
14.5.4 開源的誕生
14.5.5 OSS許可證
14.5.6 開源的背景
14.5.7 企業關注開源的理由
14.5.8 Ruby與開源
14.5.9 選擇許可證的方法
 

詳細資料

  • ISBN:9787115255075
  • 規格:平裝 / 389頁 / 普通級 / 單色印刷 / 初版
  • 出版地:大陸

最近瀏覽商品

 

相關活動

  • 「得到APP・羅輯思維」最受歡迎專欄,騰訊前副總裁吳軍博士,和你深談工作和成長,談出駕馭時代的卓越《見識》
 

購物說明

大陸出版品書況:因裝幀品質及貨運條件未臻完善,書況與台灣出版品落差甚大,封面老舊、出現磨痕、凹痕等均屬常態,故簡體字館除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。 

 

請注意,部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

調貨時間:若您購買海外庫存之商品,於您完成訂購後,商品原則上約45個工作天內抵台(若有將延遲另行告知)。為了縮短等待的時間,建議您將簡體書與其它商品分開訂購,以利一般商品快速出貨。 

若您具有法人身份為常態性且大量購書者,或有特殊作業需求,建議您可洽詢「企業採購」。 

退換貨說明 

會員所購買的商品均享有到貨十天的猶豫期(含例假日)。退回之商品必須於猶豫期內寄回。 

辦理退換貨時,商品必須是全新狀態與完整包裝(請注意保持商品本體、配件、贈品、保證書、原廠包裝及所有附隨文件或資料的完整性,切勿缺漏任何配件或損毀原廠外盒)。退回商品無法回復原狀者,恐將影響退貨權益或需負擔部分費用。 

訂購本商品前請務必詳閱商品退換貨原則

  • 暢銷1000
  • 新書3本75折
  • 曬書節3折起

訂閱電子報

想獲得最新商品資訊,請訂閱免費電子報