Guru of the Week 條款13:物件導向程式設計 (轉)
GotW #13
著者:Herb Sutter
翻譯:kingofark
[宣告]:本文內容取自網站上的Guru of the Week欄目,其著作權歸原著者本人所有。譯者kingofark在未經原著者本人同意的情況下翻譯本文。本翻譯內容僅供自學和參考用,請所有閱讀過本文的人不要擅自轉載、傳播本翻譯內容;本翻譯內容的人請在閱讀瀏覽後,立即刪除其。譯者kingofark對違反上述兩條原則的人不負任何責任。特此宣告。
Revision 1.0
Guru of the Week 條款13:面向設計:namespace prefix = o ns = "urn:schemas--com::office" />
難度:4 / 10
(C++是面嚮物件語言嗎?與流行的觀點不同,本條款認為:既是又不是。)
[問題]
“C++是一門強大的語言,提供許多先進的物件導向技術構造,包括封裝、異常處理、繼承、模板、多型、強型別機制和完善的模組(module system)。”
請對這個命題展開討論。
[解答]
本條款的目的是引發對C++一些主要(甚至是缺失的)特點的討論,以提供一劑C++真實本質的營養處方。實際上,最初我還希望討論的最後結果能夠表達出三個要點——我並沒有失望:
1. 並不是所有人都對“什麼是物件導向”這個問題有一致的看法。大部分人應該都一致認為繼承和多型是屬於物件導向的概念;有一些人也會把封裝也算進去;可能只有少數人認為異常處理也屬於物件導向的概念;也許沒有人會把模板也算進去。到目前為止,人們對這個問題仍然有不同的看法。
2. C++是一門支援多種程式設計的語言,並不僅僅是面嚮物件語言。C++支援許多物件導向的特性,但並不強迫程式設計師使用這些特性。你完全可以用C++編寫非物件導向的程式——實際上很多人都這麼做。
3. 沒有哪一門語言是萬能的。今天,我用C++作為我的主要語言;到了明天,我會選擇最適合做我明天要做的事情的任何語言。C++沒有模組系統(module system)(且不說其完善不完善了),還缺少像垃圾收集機制(garbage collection)這樣的特性;C++有靜態的型別機制(static ty),但沒有必要的“強”型別機制(strong typing)。所有的語言都各有其優缺點。應該選擇最適合解決當前問題的語言,抵抗誘惑,避免成為那種目光短淺的語言狂熱者J
(完)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991267/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Guru of the Week 條款11:物件等同(Object Identity)問題 (轉)物件ObjectIDE
- Guru of the Week 條款19:自動轉換 (轉)
- Guru of the Week 條款27:轉呼叫函式 (轉)函式
- Guru of the Week 條款28:“Fast Pimpl”技術 (轉)AST
- Guru of the Week 條款09:記憶體管理(上篇) (轉)記憶體
- Guru of the Week 條款10:記憶體管理(下篇) (轉)記憶體
- Guru of the Week 條款24:編譯級防火牆 (轉)編譯防火牆
- Guru of the Week 條款30附錄:介面原則 (轉)
- Guru of the Week 條款05:覆寫虛擬函式 (轉)函式
- Guru of the Week 條款07:編譯期的依賴性 (轉)編譯
- Guru of the Week 條款14:類之間的關係(上篇) (轉)
- Guru of the Week 條款15:類之間的關係(下篇) (轉)
- Guru of the Week 條款23:物件的生存期(第二部分) (轉)物件
- java物件導向程式設計(轉)Java物件程式設計
- [.net 物件導向程式設計基礎] (13) 物件導向三大特性——多型物件程式設計多型
- Guru of the Week 條款22:物件的生存期(第一部分) (轉)物件
- 13 Python物件導向程式設計:裝飾器Python物件程式設計
- 物件導向的JavaScript程式設計 (轉)物件JavaScript程式設計
- 物件導向程式設計物件程式設計
- 物件導向設計的 10 條戒律物件
- Guru of the Week 條款21:程式碼的複雜性(第二部分) (轉)
- Guru of the Week 條款16:具有最大可複用性的通用Containers (轉)AI
- iOS 開發之 OOA (物件導向分析) & OOD (物件導向設計)& OOP (物件導向程式設計)iOS物件OOP程式設計
- [.net 物件導向程式設計基礎] (2) 關於物件導向程式設計物件程式設計
- 十三、物件導向程式設計物件程式設計
- js物件導向程式設計JS物件程式設計
- 程式設計思想 物件導向程式設計物件
- 十六、物件導向程式設計物件程式設計
- perl 物件導向程式設計物件程式設計
- LotusScript物件導向程式設計物件程式設計
- Javascript 物件導向程式設計JavaScript物件程式設計
- Guru of the Week 條款20:程式碼的複雜性(第一部分) (轉)
- JS物件導向程式設計(一):物件JS物件程式設計
- C++程式設計雜談:物件導向 (轉)C++程式設計物件
- Guru of the Week 條款08:GotW挑戰篇——異常處理的安全性 (轉)Go
- PHP物件導向程式設計的61條黃金法則PHP物件程式設計
- Scala的物件導向程式設計物件程式設計
- JavaScript物件導向程式設計理解!JavaScript物件程式設計