松本行弘的程序世界

出版時(shí)間:2011-8  出版社:人民郵電出版社  作者:松本行弘  頁(yè)數(shù):389  譯者:柳德燕,李黎明,夏倩,張文旭  
Tag標(biāo)簽:無(wú)  

內(nèi)容概要

  本書(shū)是探索程序設(shè)計(jì)思想和方法的經(jīng)典之作。作者從全局的角度,利用大量的程序示例及圖表,深刻闡述了Ruby編程語(yǔ)言的設(shè)計(jì)理念,并以獨(dú)特的視角對(duì)與編程相關(guān)的各種技術(shù)進(jìn)行了考察。閱讀本書(shū)不僅可以深入了解編程世界各個(gè)要素之間的關(guān)系,而且能夠?qū)W到大師級(jí)的程序思考方法。
  本書(shū)面向各層次程序設(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/。

書(shū)籍目錄

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

章節(jié)摘錄

版權(quán)頁(yè):插圖:最后,變量和算式分別有自己的類型,這使得我們能夠在一開(kāi)始就認(rèn)真考慮這些變量應(yīng)該扮演什么樣的角色。我們?cè)诰帉?xiě)程序時(shí)就要考慮數(shù)據(jù)類型,雖然要考慮的東西變多了,但是也不能簡(jiǎn)單地說(shuō)這是壞事。顯而易見(jiàn),這是我們開(kāi)發(fā)好的、可靠性高的程序所必需的。從以上幾點(diǎn)來(lái)看,靜態(tài)類型似乎全都是優(yōu)點(diǎn)。其實(shí)它也有幾個(gè)缺點(diǎn),或者說(shuō)是問(wèn)題。其中一個(gè)問(wèn)題是,若不指定類型就寫(xiě)不了程序。當(dāng)然,指定類型是靜態(tài)類型編程語(yǔ)言的特征之一。但是說(shuō)到底,數(shù)據(jù)類型只是一些輔助信息,并不是程序本質(zhì)。當(dāng)我們想把精力集中到程序處理的實(shí)際問(wèn)題時(shí),卻要一個(gè)個(gè)考慮數(shù)據(jù)類型的定義,這是很煩瑣的。并且,有時(shí)會(huì)讓人覺(jué)得,有的類型聲明僅僅是為了滿足編譯器的要求。程序規(guī)模也因?yàn)閿?shù)據(jù)類型的定義而變大,重要的部分反而容易被忽視。另外一個(gè)是靈活性的問(wèn)題。靜態(tài)類型本身限制了給某個(gè)變量只能賦值某種類型的對(duì)象,這種限制可能成為妨礙將來(lái)變化的枷鎖。前面學(xué)過(guò)的多重繼承和接口會(huì)產(chǎn)生令人費(fèi)解的繼承關(guān)系,這時(shí)怎樣設(shè)定適當(dāng)?shù)念愋途妥兊帽容^困難了??偨Y(jié)一下,用靜態(tài)類型編程語(yǔ)言的人通過(guò)定義類型,把更多的信息傳達(dá)了出來(lái),這算是給編譯器和將來(lái)讀程序的人減輕負(fù)擔(dān)的一種方法吧。2.5.6動(dòng)態(tài)類型的優(yōu)點(diǎn)前面介紹了靜態(tài)類型,那么動(dòng)態(tài)類型又怎樣呢?動(dòng)態(tài)類型編程語(yǔ)言的最大優(yōu)點(diǎn)是源代碼變得很簡(jiǎn)潔。編程語(yǔ)言的進(jìn)化使我們可以用更簡(jiǎn)單的程序來(lái)傳達(dá)給計(jì)算機(jī)更多信息。如果不用指定與程序本質(zhì)無(wú)關(guān)的數(shù)據(jù)類型,程序也完全可以正確執(zhí)行,也可以檢測(cè)出來(lái)錯(cuò)誤的話,這不是一種很好的想法嗎?得益于簡(jiǎn)潔,我們?cè)诰帉?xiě)程序的時(shí)候就不用考慮數(shù)據(jù)類型這些無(wú)關(guān)本質(zhì)的部分了,而是可以集中于程序處理的本質(zhì)部分,編寫(xiě)簡(jiǎn)潔程序的話,也可以提高生產(chǎn)力。另一方面,有人會(huì)擔(dān)心,簡(jiǎn)潔的程序雖然讓我們?cè)诰幊痰臅r(shí)候變得簡(jiǎn)單了,但是因?yàn)闆](méi)有類型信息,以后讀起來(lái)是不是就變得難以理解呢?雖然寫(xiě)的時(shí)候容易了,但難讀的程序也是不可取的。對(duì)于這樣的擔(dān)心,我的回答是,簡(jiǎn)潔的程序更突出了程序處理的實(shí)質(zhì),理解起來(lái)反而變得簡(jiǎn)單了。實(shí)際上,動(dòng)態(tài)類型的編程語(yǔ)言(例如Ruby)的程序規(guī)模和靜態(tài)類型相比,程序行數(shù)相差數(shù)倍的情況并不少見(jiàn)。很多人都感覺(jué)到動(dòng)態(tài)類型的程序更好理解。對(duì)于簡(jiǎn)潔程序的另外一個(gè)擔(dān)心是,動(dòng)態(tài)類型語(yǔ)言是否運(yùn)行緩慢呢?事實(shí)上是這樣的。同樣的處理,在大多數(shù)情況下,靜態(tài)類型編程語(yǔ)言運(yùn)行得要快些。

編輯推薦

《松本行弘的程序世界》為“Ruby之父”經(jīng)典力作,展現(xiàn)了大師級(jí)的程序思考方式。作者憑借對(duì)編程本質(zhì)的深刻認(rèn)識(shí)和對(duì)各種技術(shù)優(yōu)缺點(diǎn)的掌握,闡述了Ruby的設(shè)計(jì)理念,并由此延伸,帶領(lǐng)讀者了解編程的本質(zhì),一窺程序設(shè)計(jì)的奧秘?!端杀拘泻氲某绦蚴澜纭凡皇菫榱私榻B某種特定的技術(shù),而是從宏觀的角度討論與編程相關(guān)的各種技術(shù)。書(shū)中第1章介紹了作者對(duì)編程問(wèn)題的新思考和新看法,剩下的內(nèi)容出自《日經(jīng)Linux》雜志于2005年5月到2009年4月連載的“松本編程模式講壇”,其中真正涉及“模式”的內(nèi)容并不多,大量篇幅都用于介紹技術(shù)內(nèi)幕和背景分析等內(nèi)容,使讀者真正了解相關(guān)技術(shù)的立足點(diǎn)。另外,書(shū)中還包含許多以Ruby、Lisp、Smalltalk、ErIang、JavaScrlpl等動(dòng)態(tài)語(yǔ)言所寫(xiě)成的范例。Ruby之父佳作,進(jìn)入不同凡響的程序世界,深入剖析程序設(shè)計(jì)的道與術(shù),舉一反三,觸類旁通。

圖書(shū)封面

圖書(shū)標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    松本行弘的程序世界 PDF格式下載


用戶評(píng)論 (總計(jì)69條)

 
 

  •   前陣子在圖書(shū)大廈看到此書(shū),翻了半天。由于當(dāng)時(shí)忘記帶圖書(shū)卡了(沒(méi)法打折購(gòu)買),就拍下了封面,來(lái)當(dāng)當(dāng)訂購(gòu)了一本。
    RUBY之父這本書(shū)讀起來(lái)更像是一本程序語(yǔ)言領(lǐng)域延展的雜記漫談,章節(jié)之間相對(duì)比較獨(dú)立,涉及程序語(yǔ)言歷史沿革等方方面面的問(wèn)題和一些細(xì)節(jié)。可以擴(kuò)展這方面的認(rèn)識(shí)。從中了解了一些程序語(yǔ)言發(fā)展過(guò)程中的變化和延續(xù)。書(shū)中涉及的RUBY本身的細(xì)節(jié)倒是不太多,RUBY只是作為了解釋一些語(yǔ)言特性的案例使用,也加入了和不同語(yǔ)言(比如JAVA)之間的實(shí)現(xiàn)對(duì)比。
    已經(jīng)讀完了兩章內(nèi)容,有些地方可能是翻譯錯(cuò)誤吧(比如某頁(yè)中把重載和重寫(xiě)的概念搞錯(cuò)了),無(wú)傷大雅,作為擴(kuò)展程序語(yǔ)言相關(guān)知識(shí)用的讀物還是很不錯(cuò)的。
    最重要的一點(diǎn)就是從一個(gè)程序語(yǔ)言設(shè)計(jì)者的角度比較和深入各種開(kāi)發(fā)語(yǔ)言之間的淵源,各自特性與實(shí)現(xiàn)等。
  •   從沒(méi)接觸過(guò)Ruby語(yǔ)言,以后也不會(huì)去學(xué)去用ruby,讀此書(shū)的目的不在ruby語(yǔ)言本身。
    軟件寫(xiě)到一定時(shí)候,應(yīng)該花時(shí)間想想軟件背后的本質(zhì),程序的本原是什么? 這本書(shū)提供了一個(gè)機(jī)會(huì),了解作者作為語(yǔ)言發(fā)明者,他在思考的東西是什么,為什么要怎么來(lái)設(shè)計(jì)語(yǔ)言。學(xué)習(xí)最主要的是學(xué)到思考方法,而不是知識(shí)點(diǎn)本身。
  •   原先我最喜歡的語(yǔ)言是Delphi的pascal,近幾年覺(jué)得最好的就是ruby,強(qiáng)大的控制和元編程能力。
    這本是我買的第一本ruby書(shū),看matz如何設(shè)計(jì)ruby的,即使不使用ruby的人,看看對(duì)其他語(yǔ)言的理解也能很不錯(cuò)。
  •   Ruby貫穿整本書(shū)。但書(shū)的內(nèi)容卻不局限于Ruby,甚至可以說(shuō),這種跨越語(yǔ)言的IT書(shū)籍,正是我想要的。要明白,這本書(shū)不是一本教程。你也不太可能通過(guò)這本書(shū)掌握Ruby。但是對(duì)讀者關(guān)于編程開(kāi)發(fā)的認(rèn)知,是大有裨益的。很適合作為開(kāi)發(fā)人員課外讀物。
  •   它并不是一本接收如何使用ruby的書(shū),而是通過(guò)使用其他語(yǔ)言的經(jīng)驗(yàn),列舉一些對(duì)比,讓讀者自己選擇合適的編程方式。當(dāng)然還是對(duì)ruby的一些特性和有點(diǎn)都做了介紹。
  •   看得出作者是在用心講解,知識(shí)涉及不只是ruby還有其它一些編程語(yǔ)言的講解。
  •   ruby發(fā)明者的編程感悟
  •   用Ruby寫(xiě)程序確實(shí)能讓人感到快樂(lè),是時(shí)候探究Ruby背后的世界了……
  •   不僅僅是ruby程序員,所有的程序員可以來(lái)看看,ruby語(yǔ)言是怎么設(shè)計(jì)的。他用大幅篇幅來(lái)講解各種語(yǔ)言的優(yōu)缺點(diǎn),對(duì)于我這種語(yǔ)言涉獵不多的人很有幫助。
  •   看看ruby語(yǔ)言的設(shè)計(jì)思想
  •   為什么Ruby這么可愛(ài)呢?看看作者的心態(tài)就明白了.這本書(shū)的安排,真不是一般作者可以寫(xiě)出來(lái)的.亞洲人,自然有亞洲人的思維方式,不錯(cuò).
  •   ruby作者的書(shū) 買來(lái)看看
  •   站在Ruby的角度講解,很喜歡
  •   學(xué)習(xí)ruby的一半經(jīng)典書(shū)籍
  •   雖然不懂ruby但是也能學(xué)到很多東西
  •   一個(gè)Ruby程序員的必讀書(shū)籍之一
  •   本來(lái)買這本書(shū)也沒(méi)有想要用來(lái)作為學(xué)習(xí)語(yǔ)言的參考書(shū),只是想看看 松本行弘先生當(dāng)時(shí)開(kāi)發(fā)的思想,像瞻仰一下巨人的想法。真本書(shū)不但可以教會(huì)大家學(xué)習(xí)的思路,還可以讓大家了解到語(yǔ)言設(shè)計(jì)者設(shè)計(jì)語(yǔ)言時(shí)候是怎么想的。是一本很值得閱讀的一本好書(shū)!
  •   很少能看到介紹編程語(yǔ)言設(shè)計(jì)方面的資料,本書(shū)用簡(jiǎn)單的語(yǔ)言的和道理解釋了很多現(xiàn)象背后的原因。
  •   松本的書(shū)就是寫(xiě)得不錯(cuò)!對(duì)于程序的開(kāi)發(fā)思維大有幫助,值得推薦!
  •   主要闡述面向?qū)ο蟮木幊趟枷耄芤娣藴\!
  •   剛看到第二章,對(duì)程序設(shè)計(jì)思想的觀點(diǎn)非常深刻,同時(shí)講述淺顯易懂,難得的好書(shū)
  •   寥寥幾句或幾段就能把事情講透徹,更難能可貴的,這竟然是一本計(jì)算機(jī)語(yǔ)言設(shè)計(jì)和學(xué)習(xí)的不可多得的筆記,市面上少有能到這個(gè)層面的資料。推薦程序猿必讀!
  •   一本很好的書(shū),適合于靜下心來(lái)好好讀一下,思想上的收獲會(huì)大于告訴你怎么編程
  •   程序程序好書(shū),值得認(rèn)真學(xué)習(xí),
  •   從設(shè)計(jì)語(yǔ)言的層面來(lái)講的,想深入了解語(yǔ)言設(shè)計(jì)方方面面的童鞋可以看看
  •   很喜歡作者的隨想,很多的思考也帶動(dòng)了起來(lái)
  •   通過(guò)讀讀語(yǔ)言發(fā)明人的想法,我們可以獲得更多。
  •   這本書(shū)才看了 兩章,不過(guò)在看第二章的時(shí)候 由衷的認(rèn)為介紹的非常清楚!對(duì)自己腦袋里的知識(shí)進(jìn)行了一定的整理。
  •   書(shū)的作者很用心 講的知識(shí)點(diǎn)很細(xì) 需要慢慢體會(huì)
  •   本書(shū)是用來(lái)開(kāi)闊眼界,同時(shí)也是對(duì)已知內(nèi)容的更深入解密。
  •   當(dāng)當(dāng)?shù)姆?wù)影響我的心情,以后買書(shū)還是去京東吧,不稀罕他送東西!
  •   內(nèi)容很好,很喜歡,書(shū)質(zhì)量也好
  •   看這本不只是一個(gè)技術(shù)性的書(shū),還深感是一個(gè)認(rèn)識(shí)事物的過(guò)程
  •   主要是思想方面的書(shū),這種東西很重要。
  •   書(shū)一般吧,快踢(快遞)太不給力了,第一次在當(dāng)當(dāng)網(wǎng)上買書(shū),也是最后一次?。?!
  •   學(xué)習(xí)大師的思維模式
  •   日本大牛的書(shū)值得一看
  •   看到書(shū)的目錄就感覺(jué)是一部不錯(cuò)的好書(shū),正好碰到搞活動(dòng),就下單了,大體過(guò)了一遍,沒(méi)怎么細(xì)看,應(yīng)該不錯(cuò)!
  •   大師之作 風(fēng)趣 實(shí)用
  •   簡(jiǎn)潔明了,內(nèi)容的編排上很容易讓人看得進(jìn)去
  •   這本書(shū)『程序員的課外讀物』可以這么形容吧,所需基礎(chǔ)不高。
  •   到貨快,好評(píng)
  •   幫老公買的,據(jù)說(shuō)很不錯(cuò)
  •   向大師努力!
  •   還行誒
  •   速度快 包裝好 質(zhì)量也很好
  •   大師出手不同凡響
  •   確實(shí)是本好書(shū)啊
  •   半個(gè)月的時(shí)間通讀了一遍, 感覺(jué)真是一本難得的好書(shū)。第一感覺(jué)就是這個(gè)日本人功底非常深厚,對(duì)語(yǔ)言的理解非常的深入。畢竟是自己來(lái)講述自己發(fā)明的東西, 細(xì)節(jié)非常到位。 不要僅僅以讀教程的方法來(lái)讀這本書(shū),因?yàn)樽髡咭彩窃跀⑹霭l(fā)明一種東西時(shí)所要考慮的東西。廢話少說(shuō), 如果手頭寬裕, 就拿下吧。
  •   頁(yè)面四周留的空白太少,插圖也都縮小后嵌入文字中,看的時(shí)候感覺(jué)不舒服。紙張質(zhì)量一般,好像是網(wǎng)絡(luò)上買到的書(shū)的通病。不知道是不是因?yàn)楸葧?shū)店便宜的原因。內(nèi)容還沒(méi)有看完。不過(guò)已經(jīng)可以看出作者行文樸實(shí),功力深湛,是本好書(shū)。書(shū)的定價(jià)不算便宜,這個(gè)價(jià)錢(qián)能把書(shū)的排版和紙張質(zhì)量弄好。就好了。
  •   看了一半,很多知識(shí)點(diǎn)比如對(duì)象,繼承,封裝之類的,有了重新的認(rèn)識(shí),偶爾比較不同語(yǔ)言的特性,也讓我大開(kāi)眼界,雖然我感覺(jué)書(shū)本有些地方有點(diǎn)偏向ruby語(yǔ)言,不過(guò)這的確是一本值得擁有的書(shū)。
  •   這是一本很爛的書(shū),既浪費(fèi)金錢(qián)又浪費(fèi)時(shí)間和精力。
  •   幫同事買的,反應(yīng)說(shuō)還挺好的~
  •   內(nèi)容是作者的真知灼見(jiàn)
  •   很不錯(cuò)的書(shū)籍,前面的幾章特別精彩,詳細(xì)講解開(kāi)發(fā)語(yǔ)言的發(fā)展,各個(gè)語(yǔ)言的不同,高級(jí)語(yǔ)言使用何種方式實(shí)現(xiàn)面向?qū)ο缶幊?。有種豁然開(kāi)朗的感覺(jué)。大師的思想,分析的很透徹!
  •   讀了很有收獲~~~~~~
  •   質(zhì)量不錯(cuò),期待閱讀!??!
  •   書(shū)籍很不錯(cuò). 不過(guò)我現(xiàn)在不想學(xué)ruby了.國(guó)內(nèi)用的比較少.
  •   書(shū)是不錯(cuò)的。但是!送來(lái)時(shí)有破損!賣家請(qǐng)注意嚴(yán)格包裝和檢貨??!我不滿意。但是一來(lái)一回的換貨太麻煩了。就這樣吧。
  •   本來(lái)覺(jué)得這本書(shū)寫(xiě)的不錯(cuò),可惜,第70到74頁(yè)內(nèi)容,和80到84頁(yè)內(nèi)容(除標(biāo)題外)完全一致,不相信原版書(shū)會(huì)出這么低級(jí)的bug.能出現(xiàn)這種問(wèn)題,不知道還能不能信中文版的內(nèi)容.
  •   紙張還可以,比以前明顯是翻印的好多了,書(shū)的內(nèi)容很不錯(cuò)。
  •   1.書(shū)中沒(méi)有太多關(guān)于Ruby的語(yǔ)法講解,所以最好先有一定基礎(chǔ),所以建議0基礎(chǔ)的暫時(shí)先不要入手,從最基礎(chǔ)的學(xué)起。2.里面的程序思想的講解占到多數(shù),建議有希望進(jìn)一步了解程序思想的初學(xué)者閱讀。3.資深程序員也可以參考。
  •   內(nèi)容淺顯易懂!適合初學(xué)者入門(mén)!
  •   值得一讀,了解ruby編程
  •   不錯(cuò)不錯(cuò),囤了慢慢讀
  •   正品正品正品正品正品
  •   松本行弘的程序世界
  •   對(duì)ruby先有一定的了解再看
  •   是否相當(dāng)于c++編程思想
 

250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版

京ICP備13047387號(hào)-7