讀者來函 & 我的回覆 part4

侯捷


《C++ Primer 3/e 中文版》出版日期

我已於 08/13 交出本書完稿。幾近一個月了,尚未出書,讓我頗為驚訝。版上朋友的殷殷詢問,不是我不回答,是我無能回答。最近詢問出版社的結果是,09/13 入庫。入庫-->上市又要花多久時間?我不知道。

會花這麼多時間,依我的瞭解,一個原因是,此書由 Pearson Taiwan負責實際印務,眳p代理銷售;而 Pearson 是 Addison Wesley 和Prentice Hall 兩家公司日前合併後的母體,為了申請合法的出版執照,所以延誤一些時間。

anyway,但願下星期真的能在市面上看到這本書。雖然我手上有樣書,又怎抵得上實書的品質(況且樣書早被我劃爛了)。我和各位一樣期待。

這本書為減少厚度,採用 60 磅道林紙,總厚 4.9cm。60 磅紙質當然沒有 70 磅來得好,不過我曾雙面試印過數頁,視覺效果可以接受(以我的標準而言)。但是一整本書又會成怎麼個樣子?我不知道!

下禮拜就知道了。

●C++ Standard

研讀《C++ Primer 3/e》,各位會遭遇一個困擾:「沒有完全支援 C++ Standard 的編譯器」可用。在 template 方面,實作品(編譯器)落後規格書尤其多。

以我常用的 VC6 和 BCB4 而言,它們都未「完全支援 C++ Standard」。整體看來,BCB4 好很多,VC6 所未能支援的 member templates,nested types of class templates, class template partial specializations 等等,BCB4 都有支援。不過 BCB4 在 STL 方面有少數不應該的 miss。至於 template separation compilation model,
兩家編譯器都不支援。

你無法從兩家編譯器的手冊中看出它們支援什麼 features、不支援什麼 features(前述所列都是我實地檢測的結果)。所以各位在研讀《C++ Primer 3/e》的 chap10 Function Templates 和chap16 Class Femplates 時,如果書上程式無法通過手中的編譯器,請不要在其實無誤的程式碼上鑽三天三夜。

另外,書中程式常使用 max() 和 min() 兩個名稱做為 function templates,或 class template 的 member functions。你要親證程式碼時,最好把它們改改名字。因為 Borland C++ 編譯器提供有現成的 max() 和 min(),一個不小心,你在不知不覺中叫用了現成的那兩個函式,程式結果會讓你百思不解。我在這上面浪費了不少時間

●讀者來函 1

> Hello! 侯sir:
> 今日去書局買了本C++程式語言經典本,付賬時老板說C++Primer中文版
> 即將上市,這本大作已經完成,我想你最近應該比較有空回信了吧!
>
> 我是元智大學資工系的學生,今年要升大二,大一上學了C,大一下學了
> C++,C++的書我主要讀了二本,一是C++語言實務(旗標),另一是C++入門
> 與應用(C++ primer plus,松崗),基本上的語法及觀念我想我已不成問題,
> but,成長,是在高階(polymorphism)和低階(object model)之間反覆震盪,
> 才能夠震盪到更高的位階,而不是平平庸庸於中階(C++ syntax)的一灘死
> 水。
> 買了本“多型與虛擬”,前四章讀得還算懂,讀到第五章怎麼覺得難度大增,
> 讀得似懂非懂,是我前四章未融會貫通?還是有可能有其他原因?其他讀者會
> 這樣覺得嗎?

第五章的確是高難度,但你靜下心來思考並 trace,一定可以搞懂。
因為所需要的前置基礎都在《多型與虛擬》前四章。第五章的東西是從
MFC sources 萃取出來的(原 MFC source 更複雜得多),讓大家
見識所謂的 "工業強度"。

> 另外有個學習上的問題請教一下,記得某日你在BBS上發表了篇有關你的學習
> 經驗的文章,可是有人卻對你的看法不以為然,他認為不需要挖得很深,不需
> 要花時間在底層的機制上鑽研,還舉個學習英文的例子,我想你應該有看過這
> ?篇文章吧我也很困惑,鑽研這些底層機制,object model,對於programming
> 能力會有影響嗎?有什麼影響呢?


有不同的見解和聲音,很自然的事情。在我,我把走過的美好經驗說出來給大家分享;在你,你自己決定要採納什麼見解(或你有自己的見解)

如果《多型與虛擬》chap2 使你對 C++ 語言的某些問題豁然開朗,你就見證了「底層機制的瞭解究竟有沒有對 programming 帶來幫助」。某些影響不會表現在當下(例如馬上就比別人寫得快寫得好寫得多),但卻奠定日後進修更多高階技術的基礎。另外,我要提醒你,不是所有的知識都要表現在 programming 能力身上,才叫做收穫。

別忘了,我也說過,對絕大多數 programmer 而言,目標是OO programming(亦即運用 inheritance hierarchy 和 polymorphism)而不是 object model。對軟體開發而言,object model 只是一個過渡,讓你經歷「了然於胸」的狀態。

> 你的書我連一本都還沒看完,所以我不算是你的忠實讀者,但是你每本書的
> 序,無責任書評,及網路上所發表的文章我大概看過了,沒辦法,你的書不是
> 我們這種程度的人在看的。

每個人都有小時候。重要的是年紀雖小,眼界要大。

> 最後請問一下,葉秉哲那本書上怎麼沒留他的E-mail?

你可以寫到 BBS/CompBook 版問 william。我可不能自做主張把他的 email address 告訴你 :)

> ps:不知何時你能再回元智上課,我想大家都很歡迎你的!

也許 Y2K 我會回去開 OO programming 和/或 generic programming。不過這不是單方面決定的事 :)


●讀者來函 2

> 第三次「挑戰」您的 Dissecting MFC 2/e
> 這次是唸一些 C++ class,and 先唸了一些 Inside Visual C++
> 再回頭看您這一本....
>
> 我覺得,本立而道生,如果基礎不好,想要真的瞭解application framework
> 是「不可能」的!!!
> 而且,請不要把讀者預設有年紀的工程師,而請你把讀者擴大為大學生
> 我雖然沒有修過任何資訊科系的課,不過我所認識的同學中,只要是寫
> Windows programing 的幾乎人手一本!據說是老師會要求學生看。所以,
> 請您把這本書當成是「可能成為教科書」的可能性來編輯(與寫作)。

我會注意。

印象中的教科書是四平八穩、文句平淡(四平八穩當然文句平淡)。我喜歡說「我認為...」,不喜歡說「我們認為...」,更不喜歡說「筆者認為...」。所以,就文句風格而言,還真有不小的距離。我喜歡在書前加點有趣的自序,在書後加點有趣的小品,還喜歡把載墨鏡的酷照放在書裡及封底。這些想必都是「教科書」所不容。所以,我對自己的書成為「教科書」,實在沒有任何幻想 -- 雖然,寫出一本「教科書」,可以讓我產生許多經濟上的幻想 :)

--- the end