Guru of the Week 條款13:物件導向程式設計 (轉)

worldblog發表於2007-12-11
Guru of the Week 條款13:物件導向程式設計 (轉)[@more@]

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章