- 1、本文档共135页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C++设计新思维.doc
C++ 設計新思維
泛型編程與設計範式 之 應用
Modern C++ Design
Generic Programming
and Design Patterns Applied
Andrei Alexandrescu 著
侯捷 / 於春景 合譯
譯序 by 侯捷 i
前衛的意義
侯捷譯序
一般人對 C++ templates 的粗淺印象,大約停留在「容器(containers)」的製作上。稍有研究 則會發現,templates 衍生出來的 C++ Generic Programming(泛型編程)技術,在 C++ 標準程 式庫中已經遍地開花結果。以 STL 為重要骨幹的 C++ 標準程式庫,將 templates 廣泛運用於容 器(containers)、演算法(algorithms)、仿函式(functors)、配接器(adapters)、配置器(allocators)、 迭代器(iterators)上頭,無處不在,無役不與,乃至於原有的 class-based iostream 都被改寫為 template-based iostream。
徹底研究過 STL 源碼(SGI 版本)的我,原以為從此所有 C++ templates 技法都將不出我的理 解與經驗之外。但是《Modern C++ Design》在在打破了我的想法與自信。這本書所談的 template 技巧,以及據以實作出來的 Loki 程式庫,讓我瞠目結舌,陷入沉思…與…呃…恍惚?。
本書分為兩大部分。首先(第一篇)是基礎技術的討論,包括 template template parameters(請 別懷疑,我並沒有多寫一個字)、policies-based design、compile-time programming、recursive templates, typelists。每一項技術都讓人聞所未聞,見所未見。
第二 部 分(第 二篇 ) 是 Loki 程 式 庫 的 產品設 計與 實 作,包 括 Small-Object Allocation1,
Generalization Functors, Singleton, Smart Pointers, Object Factories, Abstract Factory, Visitor,
Multimethods。對設計範式2(design patterns)稍有涉獵的讀者馬上可以看出,這一部分主題
都是知名的範式。換言之,作者 Andrei 嘗試以 templates-based, policies-based 手法,運用第一 篇完成的基礎建設,將上述範式具體實現出來,使任何人能夠輕鬆地在 Loki 程式庫的基礎上, 享受設計範式所帶來的優雅架構。
1 Small-Object Allocation 屬於底層服務的「無名英雄」,故而在章節組織上仍被劃入第一篇。
2 patterns 一詞,臺灣大陸兩地共出現三種譯法:(1) 範式 (2) 樣式 (3) 模式。我個人最喜歡「範 式」,足以說明 patterns 的「典範」意味。因此本書以「範式」稱 patterns。顧及大陸術語習慣,簡 體版以「模式」稱 patterns。本書所有 patterns 都保留英文名稱並以特殊字型標示,例如 Object Factories,
Visitors…。
Modern C++ Design
ii 譯序 by 侯捷
設計範式(Design Patterns)究竟能不能被做成「易開罐」讓人隨時隨地喝上一口,增強體力?
顯然範式社群(patterns community)中有些人不這麼認為 — 見稍後 Scott Meyers 序文描述。 我以為,論斷事物不由本質,儘好口舌之辯的人,不足取也。Andrei 所拓展的天地,Loki 所達 到的高度,不會因為它叫什麼名字而有差異,也不會因為任何人加諸它身上的什麼文字包裝或 批評或解釋或討好,而有不同。它,已經在那兒了。
本書涉足無人履踏之境,不但將 C++ templates 和 generics programming 技術做了史無前例的 推進,又與 design patterns 達成巧妙的結合。本書所談的技術,所完成的實際產品,究竟是狂 熱激進的象牙塔鑽研?抑或高度實用的嶄新設計思維?做為一個技術先鋒,Loki 的現實價值與 未來,唯賴你的判斷,和時間的篩選。
然而我一定要多說一句,算是對「唯實用論」的朋友們一些忠告。由來技術的推演,並不只是
問一句「它有用嗎」或「它現在有用嗎」可以論斷價值的。牛頓發表萬有引力公式,並不知道
三百年後人們用來計算軌道、登
文档评论(0)