投我以桃 報之以李

侯捷 1998.11.25


●投我以桃 報之以李

最近有一件事情,讓我很開心。

台北蕭祖台先生 email 給我,希望我在我自己的書籍的印刷方面能有更好的管控。他說他手上的《深入淺出 MFC》2e/1p 有些錯別字,而書店中的新刷書籍雖更正了錯誤,卻又形成了新的缺點:好幾頁印刷模糊。

我看了之後,便回信致歉,並寄上一本最新的 <深入淺出 MFC> 2e/5p 表示我的歉意。這一刷已修正了我以及熱心讀者所發現的所有錯誤(都是一些還算容易判別之錯別字,無技術上的錯誤),而且所有模糊頁次都重製了(這也是讀者反應之功)。

蕭先生收到書後,立刻回信給我,向我指正了一個懸宕我心中已久的疑惑(後述)。如果沒有蕭先生的指正,我不知道當我開始動手 <深入淺出 MFC> 3e 而必須重新面對這個疑惑時,會白花多少時間在不正確的方向上(自己看自己的碼難免有盲點)。

蕭先生寫信給我,並未指望我會贈書給他;我贈書給蕭先生,也並未指望他會給我什麼回餽。現在,我們都得到了意外的收穫。當然,收穫比較大的是我啦,NT$ 860 哪值得上蕭先生的這個指正。

以下就是我對蕭先生指正的回覆。

●《深入淺出 MFC》2e, chap3, frame7 and frame8, bug fix.

在《深入淺出 MFC》1e, chap3 中,我曾以 frame7 和 frame8 兩個小小的 DOS-like 程式模擬 MFC 的 msggage mapping 和 command routing。這程式在 VC4.0 是好的,但當我撰寫 <深入淺出 MFC> 2e,這兩個程式怎麼就是過不了 VC4.2 和 VC5.0 的關口。當時一下子找不出 bug,自忖這只是份模擬,設計架構和模擬結果也都交待很清楚了,只是移植有問題,所以也就打了個馬虎眼,附上的仍是 VC40 所編譯的可執行檔。

原因出在,我為了模擬 msggage mapping 和 command routing,必須設計一些 structures 以及 macros,那是從 MFC source afxmsg_.h 中學來的。而為了與 MFC 儘量雷同,我連我自己的檔名也叫做 afxmsg_.h。

壞就壞在,應該 #include "afxmsg_.h" 的地方,我卻寫成 #include <afxmsg_.h>。這在 VC40(MFC40)陰錯陽差地 OK 了,但在 VC42+(MFC42)中則因為 MFC 內部的變化,導至 error msg C2102 : & on constant.

所以,只要把書中的 #include <afxmsg_.h> 改為 #include "afxmsg_.h",就 OK 了。但又陰錯陽差地,由於我曾在程式中使用 CN_COMMAND 這個常數,卻忘記在自己的 afxmsg_.h 中定義,所以一者是加上這個定義(隨便定義為什麼常數都行,因為其實它在程式中沒有實際用途),一者是把程式中的 CN_COMMAND 全改為 0。

整理如下



●個人網站

我應該有個更有系統的方法來維繫讀者與我之間的溝通、公佈書籍的 bug fix、個人的寫作計劃。計劃於 1999 上半年度完成個人網站。目前實在是沒有時間,很抱歉。

<深入淺出 MFC> 在大陸出了簡體版(但竟是 1/e 的簡體版,時效有點...)

u002-simplied.jpg (14892 bytes)

許多大陸讀者寫信來(幸好我在 IE 中安裝了簡體版元件,看得懂)。所以我真的是愈來愈需要一個網站了。

我想,明年學會一套工具,然後,編織網頁的日子一定很曼妙。

●關於印刷品質

蕭先生說:

> 希望您能嚴格要求出版社的校正和印刷,...

一直很努力要求這一點,事實上出版社也都願意從善如流。所以,希望讀者看到什麼缺點,能夠主動向作者或出版社反應。

●好話不妨大聲說

收到 Michael 讀者對於【汗如雨下.雜感】的回應。其中有些想法大家不妨參考參照。

此外,我以為,如果要稱讚一位作者,或一家出版社,不妨大聲說出來。我相信,受到讚美的人,下次會做得更好。我可以告訴各位,我所認識的出版社,都在看這個版。你們的意見傳達得到。

Michael 的文字並沒有涉及隱私或不妥,所以我就代他登出了。我想公開討論更有意思些。

以下是 Michael 的來信(>> 是 jjhou> 是 Michale):

>> 我們讀者是否都願意就書籍的優缺點,寫在免貼郵票的回函卡上,
>> 寄給出版社,讓好的發揚,壞的改善呢?沒有,99% 的讀者懶得
>> 這麼做!罵還是要罵的,但是...動手寫...唔...有點懶耶!


> 侯老師...這點我同意你的說法...有太多的人只想在網路上罵罵罷了...
> 而不喜歡寫回函卡...
> 不過..我希望出版商能將書籍作(譯)者的 email 或網頁公布,
> 這樣讀者與作者會有較多的互動...
> 而且作者能夠更直接知道讀者的需求與其著作的優缺點...


>> 出版社未能在發書之前檢驗出印刷的問題,這一點,身為作者
>> 以及讀者的我,考量到出版業務的實際情況,可以諒解。
>> 如果我指出了這個缺點,而出版社卻沒有回應,那就不可原諒。
>> 再者,一如我從前所言,一本書的內容修訂,作者自己是否
>> 配合,配合度如何,也只有合作雙方心知肚明。
>>
>> 松崗公司對於我所指出的缺點,都儘力做了修正,所以我必須就
>> 這一點為他們說句公道話。


> 我是蠻喜歡松崗的服務態度的...只不過是去要 <深入淺出> 第二版
> 第三刷所缺的圖...他們就用限時掛號寄來了...

>> 前不久我在版上
>> 貼了一篇 <C++ 的沉迷與愛戀>,曾被網友譏為「老人」的學習方式,


> 呵...侯老師...我跟你一樣都是老人的學習方式....
> 不過...也就因為這樣...我真的才更了解它在做什麼...它為什麼會這樣做


>> 回過頭說,如果什麼都從「application 的開發」角度出發,
>> 眼光其實已經狹隘了。


> 畢竟系統的東西...枯燥乏味......
> 應用程式花花綠綠....
> 大家都喜歡五彩繽紛的世界嘛.....


>> <Delphi 學習筆記> 作者錢達智先生,是我的好友。我們之間對於 RAD
>> 有段討論,或許你想聽。
>>
>> ■侯:BBS(News)上時有關於 RAD 的工具見解。我認為你很夠資格
>> 說些話。不少人對 RAD 有誤解。如果你能點醒大家 :
>>
>> (1) RAD 是很好的開發工具
>> (2) 使用 RAD 並不代表不需要底層紮實的基礎,
>>
>> 那麼誤解的人就會比較少一點,知道該怎麼做的人就會比較多一點。


> 這是真的...學了Delphi一段時間...
> 發現一切都是在雲端飄浮著...好沒有安全感喲...
> 因為我只會在那邊敲元件...
> 幸得到...錢先生的 <Delphi學習筆記> ...著實讓我撥雲見日...
> 現在我發現一點....若一本書的作者沒有挖深層內部的東西...總覺得怪怪的
> 可能是受到侯老師和錢先生的影響了...變得自己也喜歡去挖程式碼來看了

>> ■錢:過去在 DelphiChat、NEWS Group 以及我的書中,這樣的想法
>> 都不只一次宣揚過。
>>
>> 其實,就我接觸過的人,不論是網路或者是學生,RAD的使用者的確
>> 是比較急功近利,也難怪會有這樣的刻板印象。 :(


> 說實話...誰不想一蹴可幾呢...
> 像我就想要一下子...像網路上的 四眼王蟲 一樣幫大家解決一堆的困難...
> 又會全部的程式語言...顯示自己是多麼的厲害...
> 但是吃過苦頭才知道...
> 按步就班才是不二法門...一次一樣就夠了...沒人是什麼都會的全才...


>> 錢:
>> 上週,當我列出一些步驟,應用 Delphi 的 MIDAS 那組元件,
>> 就讓可以說完全不明白 DCOM 是什麼的學員實作出一個應用
>> DCOM 技術的 Application Server,寫好一組 3 Tier Client/
>> Server 程式,而且,與他們過去開發資料庫應用程式的經驗
>> 相去不遠。那時,我不免要提到 MIDAS 包裝了 DCOM 等技術,
>> 然而,當我想要更進一步時,卻發現難以啟齒於 MIDAS 所蘊含
>> 的 DCOM 與 CORBA...當時,課程已近尾聲,我卻發現學員
>> 未來竟有這麼多東西要學。


> ...若是錢先生這樣的教法...看樣子...我會每次都逃課喲....呵...
> 不然...就是會被我煩死了....呵
> 真想問錢先生一下...想不想出CORBA方面的中文書呀.....
> 只有原文...讀起來太累了說......
> 我也想要寫什麼N-tier方面的程式....但是我知道...我沒有DCOM與CORBA
> 的基礎....就想挖一些這方面的書籍來看...哪知...這類書少之又少....
> 幸好...有李維先生的Delphi 4.x實戰篇.....講了DCOM


>> 『David Kruglinski 的 <Inside Visual C++> 系列與我十分有緣,
>> 同時也是很值得翻譯的好書。我不排除任何可能。看機緣吧』
>>
>> 現在決定不譯了(不管有沒有人來找我)。


> 那一本書...好貴喲...上次去看最新的講 VC++6.0 要一千多元....
> 若有人出中文本,一千元內就搞定了...這也是大家想請侯老師你
> 多出一些有價值的書一部份原因吧...至少...我就有這樣子想...呵...


★★ 侯:要我譯書,是為了中文譯本比較便宜?傷心哪!



●來自 USA

這是一封來自 USA 的 email,其中有很多像 &#36807; 這樣的碼解不開來。所以只能半猜半測,轉得如下內容,給大家參考。我猜這是看了【汗如雨下.雜感】後的回應;放在這裡,希望原發信人也看得到(我記得我的回信好像失敗)。

> 侯 sir,您好。看了您的一些指導學習方向的文章,非常??基?。
> 可是,在商?如??,大多數的公司都采用 RAD,如 Delphi。
> 或受到潮流影響,大量 web 節目上網,
> 以求最快的速度和最大的利益,基本上雖然
> 是無可厚非的,但??就導致人才市場的不正常現象,
> 許多自認為程式經驗丰富的人,其實只會拉拉控件,填填代碼,
> 根本缺乏自己的思想,基礎很差。我曾經面試過不少這類的人,
> 他們要求的薪金都不低。長此以往,恐怕無法提高和獨立我?在
> 世界????的地位,我深感??...希望您不只在教學方面為學生
> 指引方向,也能為整個軟體提醒。