K&R 訪談摘錄

      百無聊賴,讀了Koenig和Moo的書,厭煩的時候,將電子書拖到了最後,才發現了一段有意思的訪談,反覆體會,既深刻又精闢。

 

 提問:二位怎樣看待C++教育的現狀?

 Koenig: 太糟糕了,很多教材都是C語言書結尾貼上一點點C++材料,誤導讀者字符串乃是定常字符數組,應該用標準庫中的STRCPY和strcmp來操作,一個程序員一旦開始就掌握這些東西,就會根深蒂固,揮之不去。C++是個非常低級的語言,唯有利用庫,才能寫出高 層次的程序,初學者不能構造自己的庫,要麼利用現成的標準庫,要麼寫低層次的程序。

 Moo: 庫,優於語言細節,學習者可以包裝低層次語言細節,更容易建立整體語言的全局觀念,瞭解其真實威力,知道如何使用庫,很容易去理解類和構造類,唯有拋棄語言細節,才能真正理解C++,更多的利用庫,而不是指針漫天飛。

 

 提問:C++希望面對把實用性放在首位的羣體,但在實踐中,很多程序員抱怨要形成一個好的C++程序設計太難,對奉行實用主義的C++程序員有何建議?

Koenig:中國也會有這樣一句諺語:糟糕的手藝人常常責怪自己的工具,還有一句就是,當你拿着錘子的時候,整個世界都變成了釘子。編程問題彼此不同,一個問題產生良好的設計方案的途徑,就是使用一種允許你進行各種設計的工具,這樣一來,你纔可以選擇最適合該問題的設計方案,如果選擇了一樣工具,就要負責選擇合適的設計方案。 所謂面向對象編程,就是使用繼承和動態綁定機制編程,如果知道有一個很好的程序使用了繼承和動態綁定,你能做出怎樣的判斷?在我們看來,這意味着該程序中有兩個和兩個以上的類型,至少有一個共同的操作,也至少有一個不同的操作,否則就不需要繼承機制。此外,程序中必然有一個場景,需要在運行時從這些類型中挑選一個出來,否則就不需要動態綁定機制。 我們所寫的東西實際上是想戰士我們這樣的觀點,除非你首先掌握了良好的構造類的技術,否則急忙去研究繼承就是拔苗助長。

 

提問:在C++沉思錄這本書裏,反覆強調的一句話:用類來表示概念,假設我能再記住一句話,你們覺得應該是什麼?

 Koenig,Moo:避免重複。 如果你發現自己在程序的兩個不同部分裏做了相同的事情,試着把這兩個部分合併到一個子過程中,如果你發現兩個類的行爲相似,試着把這兩個類的相似部分統一到基類或模板中。

 

提問:有時編寫平臺無關的C++程序比較困難,而且開發效率也不能滿足需求,您是否認爲吧C++和其他語言,尤其是類似Python和TCL/TK那樣的腳本語言合併使用是個好主意?

是的。我最近在學習Python,得出的看法是,Python和C++構成了完美的一對組合,Python程序比相應的C++程序短小精悍,但C++程序執行更快,因此,我們可以用C++來構造那些對性能要求很高的部分,用Python將其粘在一起

 

提問:最後一個問題,我們希望中國的讀者都成爲更好的C++程序員,請給我們你們認爲最重要的建議,好嗎?

 Koenig,Moo: 1:避免使用指針;  2:提倡使用程序庫; 3:使用類來表示概念

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章