整理日期 2001/08/31
我對讀者來信的回應與整理,一方面是自己留個記錄,一方面
竊自以為對其他讀者容或有點參考價值。所以依序整理下來。
為保障讀者隱私,所有來信一律隱其名,隱其址。曾經特別
囑咐我不要公開者, 當然也不予公開.
(從本月開始,恢復為正向放置)

傳送日期: 2001年8月1日 PM 07:19
侯老師﹕您好﹗
我是一名您的讀者。最近有幸讀了您的兩本書《深入淺出 MFC》和《inside the
c++ object model》(中譯本)。覺的真是兩本好書﹐幫助我解決了以前很多不懂的問題。

現在我在全力看《inside the c++ object model》﹐看了前4章﹐有兩個問題一直沒搞清楚希望您的幫助。

1。究竟什麼樣的default constructor 才是trival constructor,什麼樣的default constructor 是nontrival constructor?(即有用的default constructor做了什麼﹖而 沒有用的default constructor又做了些什麼﹖)

2“基類的指針指向派生類對象”時﹐能否保證訪問到該派生類對象所擁有的全部虛擬函數﹖採用的是什麼機製﹖
如 P165圖4.2
如果有Base2 *pd2;
Derived Dobj;
pd2=&Dobj;
pd2->SpeakClearly;//ok?
如果OK﹐則是怎樣訪問到的(thunk?)
對虛擬函數而言﹐又是採用什麼機製來實現的﹖
急切的盼望您能為我解答這兩個問題。謝謝﹗﹗

●侯捷回覆:你的第一個問題,抱歉,我不能在此空中教學。請你多看書。給你提示:一個沒有繼承自任何 class(那就不必喚起 base class's ctor),也沒有內含任何 object members(那就不必喚起 object member's ctor), 而且自己不擁有任何 virtual functions(那就不必設定 vtpr 和 vtbl)的 class,就可以是 trivial default ctor 的擁有者。哎,我這不是說出答案了嗎?

第二個問題,如果是單一繼承,當然可以。如果是多重繼承,唔,你為什麼不自己先寫個小程式試試?這個程式估計不會超過30行。

我喜歡看到別人這樣發問:『侯先生,我做了怎樣怎樣的實驗,我發現怎樣怎樣的情況,而我不了解這種情況,是否您能為我解惑。』問題愈詳細,愈具體,愈是經過自己的努力,別人愈有可能幫助你。

 

 

傳送日期: 2001年8月1日 PM 09:03
從您的譯作看到您已涉獵了OOD的範圍,像您這樣的高手都要努力幾年才到OOD,吾等不
知要幾年。
不曉得可否給您一個建議,今天在看Design Pattern,覺得真的很不錯,但是我相信在OOP與
OOD之間應該還是有些距離的,有些人可能覺得太難了或是還沒有感覺;我覺得您可以寫
幾篇有關「從OOP到OOD」的文章,把一些OOP的精神慢慢導向OOD,相信會對許多人有幫助的。就像您網站上有一些文章也蠻不錯的。
我學淺,若有發言不好請原諒。

●侯捷回覆:滿好的建議,謝謝。

我鑽研一個技術,懂了之後還必須把它寫出來,雖然會因此比一般人深刻許多,但在技術板塊的前進路線上,也因此比一般(用功的)人慢。所以你不一定會比我慢。

眼下我很想寫本書,叫做「樣式導引」(註),導引大家進入 OOD, Design Patterns 的世界。但是,我手上的事情還非常多,不把它們做完,不可能著手這個計劃。

(註:健身術裡頭有一門叫做「太極導引」,我的命名出於此典)



傳送日期: 2001年8月1日 PM 09:40
你好﹕
我是湖北武漢的一個讀者﹐在一個星期天的下午﹐我到書店了呆了一個下午。想找本關於VC方面的書。就是找不到一本適合的書。看著滿書架的都是關於VC方面的書﹐可是﹐大陸的作者寫的書在水平方面總是跟人的感覺就是差那麼一點點﹐要不是翻譯help文件﹐要不是寫兩個例子﹐然後﹐滿書的圖片﹐給人總是那種空洞無物的感覺。正打算離開﹐突然看見一本《深入淺出MFC》,精美的插圖﹐深厚的功底﹐樸素的語言。令我感動。今天在網上看到了你將該書做成免費的電子文檔供自由下載﹐被你的精神所感動﹗祝愿你今後能寫出更加好的書出來!

●侯捷回覆:謝謝你的讚美。

 

 

傳送日期: 2001年8月2日 PM 10:35
尊敬的侯捷先生:
您好,我正在拜讀您的<深入淺出mfc>第二版.在閱讀過程中,我上機實踐您的例程mfccon.cpp,
第一次build時出現下面的錯誤:
Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/Mfccon.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

Mfccon.exe - 3 error(s), 0 warning(s)

然後,我在project\settings裡更改MLD為MT,在此build:
Linking...
LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library

Mfccon.exe - 0 error(s), 1 warning(s)

且運行後出現Debug Assertion Failed!的錯誤!
我實在不明白是怎麼回事,懇請您賜教!!!謝謝!!!!
一名北京的學生


●侯捷回覆:書中的程式例子,都有 command line 編譯方式。整合(集成?)環境的設定問題,請到論壇上發問。

 

 


傳送日期: 2001年8月3日 AM 07:03
主旨: C++ Primer 答客問 (27) 【標準與實作之間】

我是一個半路出家的一知半解的初學者,我試了你的codes,可以告訴你一些結果:

1 對于下列碼,在BCB5上是OK。

#001 #include <list>
#001
add using namespace std;
#002 ...
#003 const int list_size = 64;
#004 list<int> ilist1(list_size); //
BCB5 ok. VC6 ok
#005 list<string> ilist2(list_size); // BCB5 ok. VC6 ok
#006 list<int> ilist3(list_size, -1); // BCB5 ok. VC6 ok
#007 list<int> ilist4(list_size, 0); // BCB5 ok VC6 ok
#008 list<int> ilist5(list_size, 1); // BCB5 ok VC6 ok
#009 list<int> ilist6(list_size, -6); // BCB5 ok. VC6 ok

其中#001add是遺漏的。

2似乎按下面形式寫應該好一些,下面的碼可以通過編譯:

#001 #include <iostream.h>
#002
#003 typedef int (*PFV)();
#004 int f1() { return 1; }
#005 int f2() { return 2; }
#006
#007 PFV fFuncs[2] = { f1, f2 };
#008 PFV *pfFuncs = fFuncs;
// I have changed it
#009
#010 void main()
#011 {
#012 cout << fFuncs[0]() << endl; // 1
#013 cout << fFuncs[1]() << endl; // 2
#014
#015 cout << (*pfFuncs[0])() << endl;
// I have changed it
#016 cout << (*pfFuncs[1])() << endl; //
#017 }

3.下面的程式#006中你似乎構造一個指針(pointer),但在<string>中basic_string的生成子(constructor)是basic_string(const basic_string& rhs);

#001 #include <string>
#002 using namespace std;
#003 int main()
#004 {
#005 string *pstr_type = new string( "Brontosaurus" );
#006 string *pstr_type2( pstr_type ); // <== VC6 error.

#006 string str_type1("Brontosaurus");
#006
add string *pstr_type2=&str_type1;

我試了下面的codes, 它在cout輸出或debug檢查其值時,都不正確。I can not understand it. Would you please me about it? I am sorry for my represent my meaning in English because it is not well that my windows support Chinese. You can see it from above chinese fonts.

#006 string *pstr_type2=&string("Some Words");

There is no constructor that is the following type:

basic_string(basic_string*);

#007 delete pstr_type;
#008 delete pstr_type2;
#009 }

Other codes were checked because I can get more spare time. I hope to get your answer but it is no important because I know you are busy. Thank you for your good book on MFC.

●侯捷回覆:您絕對不是如自己所言「一知半解的初學者」。感謝給我這麼多寶貴意見。

(1) BCB4[x], BCB5[o]。你說的 using namespace std; 並非我遺漏了,而是被我涵蓋在 … 之中 :)

(2) 按你的方式修改,測試結果:VC6[o] BCB4[o] G++[o]
謝謝。不過這並不是我的測試初衷。

(3) 這看起來得花點功夫。以後再花時間研究,先謝謝你的線索。

以上結果將補注於《C++標準與實作之間》。

傳送日期: 2001年8月27日 PM 12:21
發信者同上
謝謝你的回信﹐我的確是半路出家的IT工作者。我原來是學數學的。現在改行玩電腦。哪樣也沒弄好。
不過﹐我會努力的。你的書寫的很好﹐很有風格﹐我非常欣賞。從你的書裡﹐我獲益匪淺。



 

 

傳送日期: 2001年8月3日 AM 09:35
侯先生:您好
我有幾個問題請教﹕
《深入淺出MFC》2e第十章﹕P463 在CScribbleDoc中加相應代碼時﹐我用VC6不能自動加入PENDLG.H的頭文件﹐必須手動加入﹐但您的書上並沒有相應操作。倒底是軟件版本的問題﹐還是我的錯誤呢﹖
p474: SCRIBBLEDOC.H的代碼中m_pointArray的類型是否應為CArray<CPoint,CPoint>﹖
p476: 最後一行﹕"rectSCB:2"應為"rect.SCB:2"。
P469﹕第一行我覺得您可能寫錯了。我覺得應該是"在Scrib1:1窗口上繪圖而未縮放Scrib1:2窗口的尺寸的話﹐在Scrib1﹕2窗口內看不到後續繪圖的內容"。

最近﹐從薛兆豐先生的網站(www.stevenxue.com)上又看到了一些好文字﹐與先生共賞。

摘自《與大師為伍》

“我們應該閱讀大師的原著。與其他領域的經典一樣﹐經濟學大師的著作﹐其精華在於他所構筑的“體系”和他所使用的“方法”。閱讀大師的作品﹐最大的好處是體會大師的思路﹐並在內心與大師對話。如果只是斷章取義﹐而不通讀原文﹐就沒有辦法理解大師眼中的世界﹐也沒有辦法體會大師對輕重的拿捏。”
“與大師為伍﹐是為了啟發“思考”﹐而非尋找“信仰”。我們不是要挑選“值得堅信”的書籍﹐然後奉為教條﹔我們是要尋找“值得思考”的經典﹐藉此開拓視野。張五常的《經濟解釋》符合這個標準﹐值得我們一再閱讀和思考。”

有朋友對先生翻譯Lippman的書挑了其中很多錯, 有點看法﹐以上文字不知道能不能解惑。

還有張五常先生在中山大學的一段演講﹐很有趣﹐一併奉上。

“讀垃圾書﹐越讀越衰”

找個好師傅很重要﹐啟發力強的﹐跟個好老師和看本好書是兩回事。學問好是可以看書看來的﹐跟個好老師可以跟著他想。不能想的﹐墨守陳規的﹐就不要跟他了。找一個思考得好﹐性情和你相近的。阿爾欽跟我近嘛﹐科斯最跟我近﹐後來弗裡德曼也跟我近嘛。

要想辦法﹐不要死讀書。到一個地方要停下來﹐想一想。我55歲開始寫書法﹐如果一段時間沒有進步﹐我就要想一想﹐什麼地方不妥了。我大學讀書的時候﹐花時間找書讀﹐多過讀書的時間﹐因為真正值得看的書是很少的。我到處問人﹐這本書行不行的。找到了普遍受人推崇的書了﹐我還不馬上讀﹐翻一翻﹐品嘗一下。如果是值得讀的﹐你要拼命去念。61、62年的時候﹐科斯一篇50多頁的文章﹐我整日擺在袋裡﹐會背了還不時拿出來翻翻。
你讀對了一本書﹐你就會判若兩人﹐你讀那些垃圾書﹐越讀越衰。方法對的話﹐事半功倍。

要想有所成就﹐總有一段時間是非常拼命的﹐這是無可避免的。你想做學者﹐大概要三年時間﹐聽不知音﹐食不知味。我是花了三年時間﹐帶上餅乾﹐幾乎睡在圖書館﹐之後再也不讀書了。我不想別人干擾我的思想﹐我聽都不想聽。我不是不給他面子﹐我是想自己思想﹐你不要騷擾我。

哈哈﹐“聽不知音﹐食不知味”﹐侯先生好像也有幾年這種光陰的故事吧。
祝﹕全家幸福。

●侯捷回覆:
P463: 版本驗證的問題,有勞各位了。
p474:
我沒找到你說的東西。
p476: 我沒找到你說的東西。
P469:
我找到了。唔,我是對的,你是錯的。

謝謝你轉來的文章。我對大陸人物不了解,請問張五常先生是?

我確實有幾年的光陰「聽不知音﹐食不知味」,鬧了不少笑話。印象最深刻的是有一次去提款,由於腦中正在構思書籍,從皮包中拿了一張不知是什麼卡插到提款機中,領不到錢,還回頭對美靜說:這台提款機壞了。

傳送日期: 2001年9月3日 AM 09:55
寄信者同上:
侯先生﹐您好﹗
上次提問的問題﹐我還是覺得您錯了。因為我實際作了各種操作來試驗。
傳送日期: 2001年8月3日 AM 09:35
P469﹕第一行我覺得您可能寫錯了。我覺得應該是"在Scrib1:1窗口上繪圖而未縮放Scrib1:2窗口的尺寸的話﹐在Scrib1﹕2窗口內看不到後續繪圖的內容"。
●侯捷回覆﹕P469: 我找到了。唔﹐我是對的﹐你是錯的。

僅僅縮放Scrib1:1的窗口﹐無法使Scrib1:2窗口重繪。所以需要縮放Scrib1:2的窗口才能顯示出由Scrib1:1窗口改動的文檔內容。
不知是否正確﹖
謝謝。

●侯捷回覆:噢,是的,你對了,我昏了。謝謝。將登錄於勘誤表。

 

 


傳送日期: 2001年8月3日 AM 10:34
居住省份﹕ 廣東省深圳市
對侯捷的建議﹕
讀大學時偶爾從網絡上看到了您的一些書評﹐感覺很棒﹐以後就留意起您的名字﹐您的書我就有幸買到了 深入淺出MFC第一版﹐對我的幫助很大。
其實我是做嵌入系統軟件開發的﹐VC++這些工具用的很少﹐但是您對軟件系統的理解﹐您對軟件學習方法的論述﹐才是我受益最多的地方。
我很高興中國人中有您這樣一位對青年人﹐對學問有如此責任感的老師。我也很高興網絡可以讓更多的人可以看到聽到您的聲音﹐特別是那些好學而貧窮的學生。
希望在大陸有您更多的好書出版﹐更希望讀到您更多的文章。學做事受益一時﹐學做人受益一生。你的文筆讓我﹐讓校內校外的青年人都受益無窮。

●侯捷回覆:我很高興我所寫的一些關於學習方向、學習態度的文章,真的對別人(尤其是年輕人)有幫助。特別強調年輕人,是因為,年輕人可塑性大,一旦有了正確的態度,終身受用無窮,也對週遭產生連鎖反應,影響很大。

 



傳送日期: 2001年8月3日 PM 05:59
居住省份(台灣讀者請寫縣市)﹕北京市朝陽區
對侯捷的建議﹕
做程序員是一份很辛苦的職業﹐而且﹐大部份勞動所得尚被他人掠走---試看各軟件公司的老闆就是明證﹐我想跟你討論一下﹐技術出身的工程師﹐怎樣向其他方向轉型﹐比如﹐管理層﹐或乾脆是其他專業﹖

●侯捷回覆:「大部份勞動所得尚被他人掠走」,這種話我並不同意。勞方和資方不需要一定採取敵對姿態。如果你不喜歡你的工作、你的環境、你的老板,你可以換個工作、換個環境、換個老板。或者你可以像我一樣,做個自由工作者。

程序員有程序員的苦水。管理階層有管理階層的苦水。老板也有老板的苦水。

不是每個老板都好,也不是每個老板都壞。不要懷有恨意或敵意,才是對自己最有利。

你想做怎樣的轉型,你就學習那一型的專業。是的,就是這樣。

 




傳送日期: 2001年8月3日 PM 07:09
居住省份﹕廣東省中山市
對侯捷的建議﹕
恨當初在校求學時為什麼沒有遇上過侯捷這樣的導師。
我本人是很勤奮的﹗所以上面的“恨”也只能說是相見恨晚了 :)
今天由於BBS的一張帖子﹐拜讀了侯先生的《漫談程序員與編程》﹐受益匪淺﹗
也從中找到了先生的網站 ……
從此以後﹐您就是我的清熱解毒劑了﹗每當浮躁難抑的時候必當到先生的網站一轉﹗
謝謝﹗

●侯捷回覆:網站還兼退火功能,真真始料未及也。我很開心。

 



傳送日期: 2001年8月3日 PM 10:09
很希望能夠早日買到這本Thinking in Java 2/e,
說實在想直接買原文書,因閱讀速度不快,
故一直遲遲未買,不管如何,還是期望你的出書計劃能夠順利。

●侯捷回覆:《Thinking in Java》2e 中譯本預定2001年底定稿。那麼,2002 年初應該便能上市。

 

 


傳送日期: 2001年8月4日 AM 01:09
侯先生您好﹗
吾乃一初涉VC++者﹐對WINDOWS編程不甚明瞭﹐想拜讀您翻譯的《深入Visual C++》一書﹐
不知是否有助于我﹖
另外﹐此書大陸是否有售﹖何處能買到﹖
謝謝﹗

●侯捷回覆:《深入 Visual C++》是 Inside Visual C++ 的繁體譯本。大陸也有譯本。由潘愛民先生主譯的第四版(清華出版)獲得極佳口碑,定價又遠低於繁體版譯本。你可以參考。

 

傳送日期: 2001年8月4日 AM 11:07
尊敬的侯老師﹕
我是中國大陸的一名讀者﹐以前我看了一些Visual C++ 6.0編程的書﹐對MFC類庫知道一些﹐自己也寫過一些小程序﹐但還是感到很模糊。一次在書店看到了您編的《深入淺出MFC第二版》這本書﹐我看了其中一部份內容﹐文字通暢有趣﹐還有您那追根求源的學習態度深深地打動了我﹐便當即決定買下此書﹐希望自己從中得到您的寶貴財富。我現在正在看第一章Win32程序基本慨念﹐遇到一些問題﹐想通過郵件向您請教﹐望給予教誨。
我用的計算機的操作系統是Windows 98 ﹐編程環境是Visual C++ 6.0。在本書配套的光盤上的程序裡面的文字註釋用的是日語﹐這是怎麼回事﹖第一章的範例程序Generic是在什麼環境下進行編譯的﹖在Visual C++ 6.0中這些程序又該怎樣進行編譯﹖

●侯捷回覆:我不知道我的書的光碟上怎麼會出現日語。從來沒有人反應過這事。書中程式的編譯環境,書中都有解釋。你如果不清楚,請上網絡論壇發問,謝謝。

 

 

傳送日期: 2001年8月4日 PM 05:09
侯先生﹕你好﹗
我是電子科技大學計算機系的學生
今天第一次來到你的主頁﹐沒想到收穫頗豐
其一是你超前的思維模式讓人感到驚喜
再就是這裡有適合我們學生如何提高對軟件的認識與掌握的能力的“鑰匙”
我想振興民族的軟件工業就需要你們這樣的導師來指引
希望今後能看到先生更多的譯作和著作問世﹗
能否譯一譯 [Lippman98] 和 [Struostrup97] 這兩本書呢﹖
謝謝﹗

●侯捷回覆: [Lippman98] 和 [Struostrup97] 都已有繁體中文版,前者正是侯捷所譯。

如果你指的是
簡體中文版,喔,據聞都正在組織翻譯之中。大陸出版消息我不甚了解。

讀者盼望哪一本書由誰來譯,這種事應該寫信給出版社。出版社才是手握版權的人。

 

 

傳送日期: 2001年8月4日 PM 04:53
候sir﹐您好﹗
我是向你求助來了!望你不嗇賜教﹗

我真正寫程序時間不長﹐但絕對執著。在學校畢業設計是計算機輔助機床設計(我學機電的)﹐就是那時開始的﹐BASIC﹐沒界面﹐就是些數字。在那時就認為寫程序就是一大堆算術公式﹐無聊。哪知出來工作對自己的專業一點興趣也沒有﹐卻對程序感興趣了。

開始是c﹐沒學透﹐因為沒機會上機。接著朋友介紹我學vb。這倒是快﹐不過還是沒機會上機(窮)每天都是看書、想象一下程序寫出來該是什麼樣子。終於有一天﹐我跳槽去了一家電腦網絡公司﹐那時時興的是php,asp,perl﹐vb沒用處﹐不過還是寫了個管理人事和攷勤的軟件﹐我自己都不滿意。然後我發狂的開始學﹐因為有電腦﹐結果php,asp,jsp都學會了﹐當然是asp最熟悉了。國內不喜歡vb程序員﹐喜歡delphi,我至今也沒搞懂為什麼。我覺得每個工具都有自己的優點。本來是要去學delphi的﹐但我一直想有機會就學C++,其實我一直在看oop和c++的書﹐開始我不能深入的理解oop﹐c++太不容易學﹐於是我選了java,oop的一切都是從這裡學會的。

現在我正向mfc進攻﹐可是卻聽說mfc要過時了。我該怎麼辦﹖

還有﹐為了理解windows的編程﹐我開始是看Charles Petzold的書寫﹐你知道那是c和api﹐
現在我來學mfc﹐總是想去看各種類的源文件﹐很累﹐有時自己告訴自己把它當作vb的控件用就行了。

到底我應該怎樣學呢﹖ 順便問一下﹐java有希望嗎﹖雖然sun制定各種規範﹐但我感覺亂糟糟的﹐每個廠家各用各的。我祇想寫c++和java,會不會太貪心﹖

我在拜讀貴大作《深入淺出mfc》﹐一本好書。
望先生能給我一點意見﹐讓我能走進windows的經脈裡去。
真切的盼望您的回復﹗

●侯捷回覆:侯捷網站上的諸多文章(關於學習方向),很能夠讓你「走進windows的經脈裡去」。

我對於任何「過時」之類的詢問,沒有興趣也不想回答,而且我也沒有答案。

我對於任何「有沒有希望」之類的詢問,沒有興趣也不想回答,而且我也沒有答案。

 

 

傳送日期: 2001年8月4日 PM 10:36
候捷老師(在此叫一聲老師﹐既來自于您的技術文章﹐更來自您的散文)﹐

我是一名研究生﹐今年夏天應該畢業。我的專業是生物醫學工程﹐
研究生階段主要從事醫學圖象處理方面的工作。主要的工作內容是
VC++環境下的編程﹐當然要結合專業方面的內容。

正是因為編程接觸您﹐也因為編程熟悉您。可是今天要向您討教的
是與技術無關的內容。

我非常同意您說的“興趣”主導您的工作和努力的說法。我也一直在尋找
自己的興趣。無奈的是自己的興趣太不持久﹐這麼多年來﹐興趣轉換非常大。
曾經也非常喜歡寫程序﹐也曾經非常喜歡圖像處理﹐如此種種﹐但是又會
常常很快失去興趣﹐從而沒有動力繼續下去。這實在是一件很讓人苦惱的事情。
馬上走上工作崗位﹐搞的是通訊方面的編程工作﹐只是因為薪水多。
我也想過﹐是不是多一些人生經歷會有好處﹐會讓我更看清未來﹐
從而找到真正的興趣所在。可是又沒有耐心等下去﹐畢竟26歲了。
“迷時師度﹐悟時自度”﹐我太想悟了﹐太想有大徹大悟的一天﹐難道
非要用時間來做為這種徹悟的代價嗎﹖為什麼不能儘快的走出迷霧﹐
以便集中精力﹐全力以赴的追求目標呢﹖您可以給一些建議嗎﹖

期待您的回信﹗

●侯捷回覆:誰能幫你悟?六祖惠能聽了金剛經一句話就悟,凡夫俗子要累世多久才悟?當然你知道的,99.999999999999999999999999999999% 的人都是凡夫俗子。

你說「我也想過﹐是不是多一些人生經歷會有好處﹐會讓我更看清未來﹐從而找到真正的興趣所在」。這話很對。你又說「可是又沒有耐心等下去﹐畢竟26歲了」,你已點出自己的缺點,不就該對症下藥嗎?26歲怎麼會讓你太心急呢?如果你一定要和26歲發明相對論的愛因斯坦比高,那就不該寫信給我(我沒資格和你對話)。

大家都想成功(或是想發財)想瘋了嗎?想瘋了,成功也不會無緣無故到來。無緣無故到來的成功,一定會無緣無故地走,相信我。

 

 

傳送日期: 2001年8月2日 AM 10:47
侯先生﹐您好﹕
在網站上看到對於你的前兩本 “深入淺出MFC“的介紹﹐請問現在該書最新的版本出到第幾版了﹖

本人屬於對C語言有點基礎﹐喜歡C++編程的那種﹐對於WINDOWS的程序開發真的很想了解﹐但是卻祇想用C++來編寫﹐而不是C語言﹔另外當然想好好的學習﹐做一個精通VSIUAL C++編程的程序員。
請問﹕我該買你的系列叢書中的哪幾本﹖最好給我你的系列叢書的書目和購買方法﹐當然還有金額﹗
謝謝﹐望速回信

●侯捷回覆:《深入淺出MFC》最新是第二版。

其餘問題的答案都在侯捷網站上。買書請找書店或出版社,不是直接找作者。

 

 

傳送日期: 2001年8月6日 PM 04:32
dear 侯先生:
作為一名程序員和您比起來﹐真是小巫見大巫﹐我很喜歡您的書﹐尤其是這本《深入淺出 MFC》﹐作為一名剛開始工作的人﹐我知道我要學的東西還很多很多﹐我剛剛畢業于西安電子科技大學﹐目前在杭州工作﹐因為剛剛參加工作﹐並不很寬裕﹐所以只好從網上下載了﹐我想以後一定會買您的書的﹗

●侯捷回覆:你安心地看。我開放電子書,目的就是讓不寬裕的人有機會看它。

 



傳送日期: 2001年8月7日 AM 02:45
侯大哥,可不可以把visual 4.0也開放電子書ㄚ.
因為我覺的這本書寫的超棒的,可是已經絕版了
這對後代來說相當可惜,希望侯大哥能夠
成全小弟

●侯捷回覆:這本書倒是符合我的開放條件,但是我現在好忙,沒時間做。

 

 

傳送日期: 2001年8月7日 PM 09:32
侯先生﹐您好﹗
我是中華人民共和國的一名學生﹐也就是有人說的大陸的學生
最近拜讀您的大作﹐深入淺出MFC﹐收穫頗豐。但我也有些疑惑。
其中最讓我難以理解的是書中第344頁方框下面的那段話﹕
從“當使用者單擊...............﹐“﹐ 到“ 後者在調用...."﹐
您說的消息CWinApp::OnFileNew是什麼時候調用的。是不是當心執行一個程序是由MFC調用的, 如果是﹐您能否結合第317頁的應用框架程序給我講講﹐再次我不勝感激。

 

 

傳送日期: 2001年8月7日 PM 09:00
侯老師﹕你好﹗
看了您在網站上的一些精彩論斷﹐對我啟發很大。並且您在網上免費公開的三本windows的書籍﹐我也都下載下來了﹐並且正在看。但我心中始終有一個問題﹐至今不得其解﹐所以我想在這裡冒昧向你請教。
隨著今年來linux的日益發展﹐學習linux﹐研讀其源代碼的人越來越多了﹐很多原先在windows環境下開發的人都轉到linux下了。我們還有必要去花費很大力氣去從一個操作系統的外面借助于工具來窺視windows系統內部是如何運行的嗎﹖如果我們從linux的源代碼開始﹐豈不事半功倍﹖在現在的環境下﹐該如何真正掌握操作系統哪﹖
懇請您能結合自己的體會﹐談談您對這個問題的看法﹗
謝謝您在百忙之中抽空來看這封信﹗

●侯捷回覆:Windows或Linux,是你的選擇。你想走哪一條路,你就選擇研究哪一個操作系統。如果只是想對操作系統有個學理上的研究與實作上的印證,那麼當然選擇一個 open source(且被市場接受、被大眾使用)的系統是有利多了。

 

 

傳送日期: 2001年8月7日 PM 11:08
侯先生﹕
您好﹗
我看了(只是開始看)您的《深入淺出MFC》和<<WINDOWS95 SYSTEM PROGRAMMING SECRET>> ﹐卻被他們所吸引。從您的文風來看﹐我覺得台灣的“語文課”要比大陸的更有味道﹐您可以將技術性的東西寫的更活靈活現﹐真讓人佩服﹗所以﹐我想和您交流一下﹗
我是一名(中國(不知您對臺獨的看法﹐所以還是先加上個限定詞))哈爾濱工業大學大二學生﹐接觸計算機只有1.5年(其中前一年多是在“鑽研”游戲)。我現在也在參與一些計算機圖書的翻譯﹐並在讀一些此方面的書籍﹐我有兩個問題﹐請不吝賜教﹕

1﹐在翻譯一本書的過程中﹐如何恰切的加進自己的想法﹐使之看起來更有道理﹐更易于理解呢﹗畢竟我沒有您那麼大名氣﹐寫出來可能被認為是譁眾取寵呀﹗所以﹐我更多時候是直譯﹐使文章顯得很死板﹔AND

2, 現在有很多書可看﹐我是可以直接接觸最新的技術﹐還是要補回以前的基礎﹖我是沒經歷過DOS時代而直接見到WIN98的(雖然我曾自學過DOS)﹐沒有接觸過SOFTICE而直接得到了很多解密程式的﹐沒用過BASIC而直接學習C,C++的……或者說﹐我現在看技術上相對有點過時但確是基礎的東東還有必要嗎﹖可不可以略過這一課呢﹖(事實上學校也沒安排這些科目)

希望可以和您成為真心朋友(那我很榮幸呀)﹗
在此謝過﹗

●侯捷回覆:沒人一開始就有名氣。憑一顆良心,你就能做出好東西。翻譯一本書的過程中,加進自己的想法,只要這想法是有把握的,驗證過的,而且文責分明的,沒有人會笑你譁眾取寵。如果有人笑你,那是他們不成熟。說不定,通過這樣的細心,這樣的嚴謹治學,你便開始有名起來。

基礎的東西,如果你覺得需要,你就去把它補回來。如果你覺得不影響你的前進,你就大步邁前,不必回頭。

 


傳送日期: 2001年8月7日 AM 09:42
主旨: 關於Essential C++習題2.1的問題
侯老師: 你好!
學生是 c++的初學者,現在正研讀您和王建興先生合譯的 "Essential C++" 一書,在試作習題時,遇到了一點疑問,想請你指導一下,問題是這樣的

習題2.1解答中
if ( ch != 'y' || ch != 'Y' )
more = false;

這裡使用 " || " 好像不太對,如果輸入一個 'Y' 那麼第一項成立,執行"more=false;";若輸入'y',則第二項成立, 也執行"more=false;"

if(ch !='y' && ch!='Y')
執行結果才與預期結果相同。


●侯捷回覆:的確是個錯誤。我將刊於勘誤表,如下:

■p212 L-10(英文版錯誤)
原文:if ( ch != 'y' || ch != 'Y' )
更正:if ( ch != 'y' && ch != 'Y' )
感謝:seaweed
日期:2001/08/22

 


傳送日期: 2001年8月8日 PM 03:19
候先生﹕您好﹗
我從您的網站下載了《深入淺出MFC/2e》﹐可是無法閱讀。用Acrobat Reader3.0打開原文件時﹐提示“There was an error processing a page.A font contains a bad CMap/Encoding”按確定後又提示“This file contains information not understand by the viewer。Suppress further errors﹖”
再按確定後就無法打開文件﹐顯示一章白紙。
對於這個問題我實在是不知道該怎樣解決。

我好想閱讀這部書﹐如果電子版無法閱讀﹐我會立刻去買紙版。但不知道在武漢哪裡有賣的。

另外還要問您一個問題﹐就是《More Effective C++中文版》和《Effective C++ 2/e中文版》在武漢哪兒有賣的﹐我很想閱讀。

還有﹐我想問您幾個我一直都想不通的問題﹕我現在還是一個高中生﹐總是參加一些計算機競賽﹐但這些競賽都只考Pascal語言﹐而我最喜歡的是C/C++﹐於是我總在利用空閑時間(國內的學習是很緊的)學習C和C++。可我總在擔心﹐這樣又學Pascal又學C++最後可能什麼都沒有學好﹐我該怎麼辦呢﹖

●侯捷回覆:《深入淺出MFC/2e》電子版可讀,幾千幾萬人讀過了。試 Acrobat Reader 4.0。

《More Effective C++中文版》和《Effective C++ 2/e中文版》繁體版在大陸沒得買。《Effective C++ 2/e中文版》簡體版侯捷譯本將由華中科技大學出版社於2001/09/15出版。

語言一道,「精」比「多」重要。鼯鼠五技而窮。不要當鼯鼠。你想學 C/C++,就全力學習,何必為了參加計算機競賽而傷這種腦筋?

 

 

傳送日期: 2001年8月8日 PM 01:23
主旨: 虛擬繼承的疑問??
> 您好:
> 我在您的網站上看到"C++ Primer 答客問(62)",心裡覺得怪怪的,
> 因此馬上用手邊的compiler做測試(gcc 2.95.3 and IBM VisualAge
> for C++),得到的都是類似"`Base::Base()' is protected"的錯誤訊息。
>
> 於是翻一翻 C++ primer ,剛好在 18.5.2節看到相關訊息:
> "在非虛擬衍化行為中........"
>
> 由此看來,那段程式似乎不是如您說所的是BCB的error,而是語言
> 本身就是如此,不知您覺得如何??


●侯捷回覆:雖然您提醒了我另一條線索,但我還是要說 BCB4 是
「眾人皆醒我獨醉」。C++ primer 18.5.2節告訴我們,虛擬繼承體系中的
最底層衍生類別,有義務明白喚起 virtual base class's ctor;
中介層衍生類別在 ctor 內對virtual base class's ctor 的喚起動作
則一概被壓制。因此,本例的 A ctor 內應該寫出對 Base ctor 的直接喚起
動作才是。但C++ primer 18.5.2節也告訴我們,如果我們沒這麼做的話,
Base 的 default ctor 會被喚起;如果 Base 缺乏 default ctor,
這時候才會造成編譯錯誤。

我們的例子中,Base 擁有 default ctor,所以不應有錯。

不過,我先前說VC6的褒揚,也太衝動了,因為,C++ primer 18.5.2節
的例子,在 VC6,BCB4,BCB5都通不過(只有GCC29可以)。所以VC6在本例中的
好表現,只是歪打正著而已。

虛擬繼承真是一個晦暗的地帶。

我將補記於 "C++ Primer 答客問(62)"。

 

 


傳送日期: 2001年8月8日 PM 08:31
主旨: 關於local scope

侯先生你好,你在C++ Primer 3/e的393頁中提到在for loop初始狀態部份定義的變數在上一層的scope中不可見,但是我在VC6.0編譯下面的程式碼發現變數"j"在整個main()之中是可見的,
會不會是for loop初始狀態部份定義的變數是屬於for loop中local scope的上一層??,如有錯誤希望你能指正。謝謝


#include <iostream>
using namespace std;

void main()
{
  int i=0;
  for(int j=0;j<10;j++)
    {
    int i=j;
    cout<<i<<" ";
    }

  if(j==10)
    j++;

  cout << endl;
  cout <<i<< " " <<j ;
  cout <<endl;
}

●侯捷回覆:這是 VC6 的 bug.

 

 

 

傳送日期: 2001年8月8日 PM 01:33
侯先生: 您好:
我是一位剛參加工作的學生,由於工作的關係,有幸拜讀了您著的<<深入淺出MFC>>,與我幫助實在太大了,以往對MFC開發的程序僅僅是知其然而不知其所以然,現在總算明白了許多,雖然第一遍未能透徹其中的奧秘,但第二遍之後如魚得水,迫不及待地寫信向您表示謝意!
上海讀者

●侯捷回覆:很高興我的書為你扮演了水的角色。

 

傳送日期: 2001年8月9日 PM 09:57
你好:
很想給你寫一封信!

我接觸電腦有兩三年了,現在在讀大三,是學數學的.你是我遇到的第一位電腦技術大師.我以前學過powerbuilder,開發過一兩個小軟件,攢了幾百元.那是我第一次嘗試.從這以後,我更加迷戀技術,雖然我的人生目標是做一位咨訊業的企業家,但我覺得電腦是我最有力的跳板.我知道這條路充滿艱辛,但我不會退縮,路漫漫,其修遠兮,吾將上下而求索.

有時我老想,當程序員為了什麼!微軟數以千記的程序員成就了比爾.蓋茲,他們得到了什麼!誘人的工資?工作的樂趣?可沒有多少人知道他們,當他們老了,力不從心了,微軟踢開了他們,一個程序員的生涯也就結束了,那麼短暫,那麼悽涼,我想他們是多麼想能再繼續code.

我現在在學vc,你的大作<<深入淺出mfc>>實在是精彩,我花兩個星期就看到了第11章,有時都捨不得放下手.看你的<<無責任書評>>,我腦子裡就冒出一個問題:如何在這個知識大爆炸的時代,特別是電腦行業,保持自己立於不敗之地?

我是學數學的,以前總以為編程弄來弄去就是算法,但我現在明白那是錯的,編程還有一個整體規劃的問題.我有時陷入極度的煩惱,電腦技術那麼廣,應如何學電腦?自己應如何定位?我真的不知道.

學好電腦! ,是我規劃的第一步.這塊跳板一定要富有彈性.但我卻不知道如何去學.迷茫!!!
致敬
大陸 .湖北

●侯捷回覆:我不是電腦技術大師,以後請不要再這麼稱呼我。我真正不喜歡這種稱呼,一點都不喜歡。實際上也不是。

什麼叫做「微軟踢開了他們」?年輕人,這也許是事實,也許不是,我只問你,你看到了嗎?經歷過了嗎?想像的嗎?

別把程序員想像是什麼轟轟烈烈的偉大騎士,他們(含侯捷我)就像任何一個專業行業裡頭的一種專業人士一樣。大陸有太多人對程序員抱持著種種不切實際的憧憬與幻想。我完全不以為這是好的。

我不是從收入、前景的角度去點破各位的幻想,而是希望各位不要被什麼黑客精神、駭客傳奇、網路致富所迷惑。讀者(尤其是年輕讀者)喜歡看些傳奇故事,媒體就儘量耍弄傳奇故事給看。我是被採訪過很多次的人,媒體那一套,老實說,我很清楚。

 

 


傳送日期: 2001年8月9日 PM 08:09
侯捷先生﹕
您好。我是大陸一名計算機系的學生﹐正在看您的<<Inside C++ Object Model>>,感覺太好了﹐再之前看過<<Thinking in C++>>,<<Effective C++>>

我想聽聽您對<<Thinking in C++>>的看法 。

●侯捷回覆:《Thinking in C++》很不錯,但這本書的第二版早就出來了,大陸卻還在廣泛而熱烈地流行第一版,令人扼腕。第二版遵循 C++ 標準規格,這是很重要的差別。

大陸讀者長久以來得不到最棒最新的資訊,我為各位心疼。一本《Thinking in C++》1e 熱火朝天,其他經典書籍無人引進。讀者失去了其他好書的閱讀機會,也失去了許多競爭力。做出版事業,一定要多為讀者著想,放大地說,更為整個國家發展多想一點,不要死抱著一本過時的暢銷書,不思積極作為。大陸讀者缺乏海外購書的自由和經濟,學習的管道懸命於計算機書籍出版社,真是無奈。如果出版社更積極,更加強品質,讀者會把你們的荷包餵得飽飽的,並感激你們做了好事。

《Thinking in C++》1e(英文版)出版於1995年。如果書籍內容以核心為主,沒有太多變化,年代久遠不是問題(《Design Patterns》也是1995出版),但C++標準規格於1998年定案,這是一件大事,所有未遵循C++標準規格者,都應該退出市場。試問大陸現在有幾本與 C++ 標準規格相容的書?

我心疼各位大陸朋友呀。

 

 

傳送日期: 2001年8月11日 PM 02:23
侯先生﹕您好﹗
很抱歉打擾您。我是在今年剛來美國讀計算機的大陸學生。本來準備好好學學VC的(因為它在大陸比較流行)﹐還特意從家裡帶來了您的著作《深入淺出MFC》﹐但到了這兒才發現用Microsoft的Visual系列編程的公司極少。他們大多是需要能在UNIX環境下熟練編程的員工。公司都有自己的類庫﹐他們一般不用微軟的東西。據師兄說﹐只要會標準C++即可﹐不需要學MFC。連我們系的公共機房裡都不安裝VC﹐而只裝了Borland C++.

我覺得有點迷茫﹐如果市場需求真是這樣﹐那學VC還有什麼用處呢﹖

我今天給您寫信是想向先生請教﹐我是不是該順應大流﹐只需會標準C++﹖﹖﹗﹗
謝謝您的指點﹗

●侯捷回覆:如果你認為你所觀察的,代表了事實,你便相信你的眼睛。

你覺得你的取樣(sampling)廣泛嗎?

我不為哪家公司,哪家產品說話作廣告。你今天就算說得相反,我還是回應你一樣的話。

不過,Standard C++ 的確是最根源最重要的。不會走路哪能飛?

 

 

傳送日期: 2001年8月11日 PM 09:52
拜讀過您所寫的C++ Primer與深入淺出MFC獲益良多
可是我在讀visual c++6.0底下的一些.cpp .h時遇到了很多不懂得東西
查MSDN又查不到  能否請您告訴我那些是什麼跟做什麼用的
1.AFX_MODULE_STATE(afxstat_.h)
2._AFX_THREAD_STATE(afxstat_.h)
1跟2都是class 但我不知道他們代表什麼意思
3._afxThreadState (Afxstate.cpp)
這是一個物件或巨集吧

●侯捷回覆:如果你在 MSDN 上查不到,大概只有《MFC Internals》幫得了你。

 

 

 

傳送日期: 2001年8月11日 PM 11:46
居住省份﹕湖北省
對侯捷的建議﹕請寬恕我沒有好的建議﹐謹在此向您表達深深的敬意與感激之情。現在大陸市面上已有《深入淺出MFC》/2e 的簡體版(不知征得您的同意否﹐若沒有﹐我很抱歉)﹐但是由於本人財力有限﹐想買得該書﹐依舊困難。當然期望作者免費公開他的書稿是極其不切實際而且自私的想法﹐但我還是為我能得到該書的電子版向您表示深深的謝意﹐因為這是我期待很久能買到的書。最後﹐衷心祝愿您及您的家人朋友生活幸福、萬事如意﹗

●侯捷回覆:我很高興我所免費開放的書籍,有你這樣彬彬有禮的讀者。

 

 

 

傳送日期: 2001年8月12日 PM 01:41
侯先生﹕你好﹗
我是您北京的讀者﹐每次讀您的書心情又是激動又是興奮。您的書使我受益非淺﹐還有您的文章﹐對我的啟發非常大。我真心的說聲﹕謝謝。
在編寫程序的時候遇到技術性問題。我在網上求助﹐沒有得到幫助﹐又找不到人幫忙﹐也沒找到哪本書介紹這方面內容。只有向您求助﹐我知道您很忙﹐但我還是試一試﹐希望您能給我一些幫助。
在些打印代碼(MFC)時﹐要打印收據。針式打印機﹐紙張大小是210×114mm。每一頁都是相連的。在打印時﹐當連續打印多份時﹐收據與收據之間的間隔很大﹐中間留下大片空白﹐造成紙張浪費﹐並且收據內容打印在頁與頁之間的接縫處﹐不能撕下。我想可能是因為打印機打印每個收據時設置紙張的大小是A4的結果。
感謝您閱讀我的信﹗




傳送日期: 2001年8月13日 AM 08:44
居住省份(臺灣讀者請寫縣市):taiwan
對侯捷的建議:謝謝您開放download 深入淺出mfc 電子書
因為工作的關係要寫一個comm program而win98 、win2k、winxp 平台皆要run,
我正在找一些 winxx comm 的 data ,我用 bcb5.0 來寫程式,可是vcl跟 mfc 都包裝的美美的
想用的 function (eg. comm) 又沒有,只好 k 一些winapi 來完成comm,正好在台北縣立文化中心圖書館看到您的大作 深入淺出mfc ,將win程式解開說明,太高興了,因為本土的win程式 book 都只用vcl &mfc function 來完成,水準不高,太多的書都只是架構在 VCL & MFC 上, 而沒有
交代 WIN 程式的原裡.... TKS bye..

 

 

傳送日期: 2001年8月12日 PM 10:19
Hi!捷哥!
請問您Thinking in Java及您的書「泛形程式設計」何時出,謝謝!
用STL來學/復習資料結構及演算法好嗎?

●侯捷回覆:非常好。

《Thinking in Java 2e》繁體中文版預定於 2002 年初上市。

 

 

傳送日期: 2001年8月12日 PM 10:25
Hi!捷哥!
記得您曾在您的書提過您對譯作的要求,是要讓買了英文書的人也買中文書、要讓英文書滯銷;而我呢?我是原本沒有要學C++的,但是發覺現在C++的書(您譯及作的)具有相當高的品質,其中的觀念不只能適合C++,在其他語言Java、Object Pascal同樣適合;所以會很喜歡您的作品,希望下次在您的序中加上這一條:
讓沒有打算學C++的人,也因為您的書而想學STL、想看Effective C++…

C++大勢已去,但是它還是佔有重要的地位,目前開發大型專案應該會以Delphi、Java、.NET也比較多,這些語言與工具會逐漸吸去C++的玩家。

祝您 愉快

●侯捷回覆:「C++大勢已去」???

 

 

傳送日期: 2001年8月14日 PM 03:33
候sir﹕
尊敬的候老師您好﹗
在大約3年前﹐我剛開始學習VC﹐那時我不會C++﹐不會SDK﹐只會PASCAL和一些數據結構和算法(為了競賽用)。

我抱起VC的書﹐學了一個月﹐會糊裡糊塗的往裡頭添加代碼﹐實現了一個繪圖程序。但不會SDK﹐於是我便開始學習SDK﹐半年下來﹐熟悉了SDK﹐VC水平大漲﹐但對其框架仍然迷茫﹗有幸﹐看見你的《深入淺出》第一版﹐我只是在圖書館見的﹐於是貓在館子裡一個月﹐盡情研讀。對MFC六大技術五體投地﹐對候老師您也是一樣﹗

我十分同意您--勿在浮沙筑高臺﹐的建議﹗無奈﹐入門好書難求﹐高階好書更甚。現在我學習方法是﹐狂看書﹗剛開始不管好壞﹐當我能分辨好壞是在看好書﹐從分不出好壞﹐到分出好壞﹐是一個大進步﹐不知候sir是否同意﹖

對您的《深入淺出》﹐我有個建議﹐它把MFC機製說得無比清楚﹐但是MFC庫與SDK關係﹐卻稍為欠缺﹐如果能有一本從設計模式角度看MFC框架﹐從OOP思想看MFC封裝SDK的書本﹐候sir說“器可道﹐道不可道”﹐有MFC的器﹐那候sir不妨“寓道于器”﹐候sir的《深入淺出》便可再上一臺階。也讓人走更少的彎路。

再有,大陸市場反應候sir是看到的﹐其中潛力不言而喻。希望候sir能加快步伐﹐“利人利己”﹐候sir是同意的。

有個問題請候sir指教﹐現在我在作一個工程﹐但是技術和使用還是有差距的﹐我欠缺實踐﹐請問候sir﹐有什麼可以指導我工作的書本﹖讓我少走一些彎路。
天津 2001.8.14

●侯捷回覆:

(1) 「狂看書﹗剛開始不管好壞﹐當我能分辨好壞是在看好書﹐從分不出好壞﹐到分出好壞﹐是一個大進步﹐不知候sir是否同意﹖」這種亂槍打鳥法,很費子彈,而你的子彈,就黃金學習歲月而言,大約只有…嗯…頂多7300天。

(2) 「如果能有一本從設計模式角度看MFC框架﹐從OOP思想看MFC封裝SDK的書本...」,唔,我的確有個構想,把我所追蹤的 MFC, Java, STL 源碼中的 patterns 整理出來,寫一本「樣式導引」(註),導引大家進入 OOD, Design Patterns 的世界。但是,不要有任何期待,因為我手上的事情還非常多,不把它們做完,不可能著手這個計劃。(註:健身術裡頭有一門叫做「太極導引」,我的命名出於此典)

(3) 「我欠缺實踐﹐請問候sir﹐有什麼可以指導我工作的書本﹖讓我少走一些彎路。」欠缺實踐,就多實踐。自己想題目給自己寫。很多人不會自己想題目,我替他們悲哀。但是實踐之前,你可以多看看一些實作經驗的書,例如 C++ 有 Effective C++, More Effective C++, Java 有 Effective Java, Practical Java, MFC 有 The MFC Answer Book...等等等。

 

 

傳送日期: 2001年8月15日 AM 05:36
主旨: How to buy your boos from the internet
> Hi,
> How can I buy your books from internet using credit card, I can only find
> one book "c++ primer: answer book" in www.hooloo.com . I suppose there were
> some web sites in Taiwan and US selling your books.
>
> Regards,

●侯捷回覆:請上眳p(GOTOP)網站查詢。我不知道有沒有管道。

 

 

傳送日期: 2001年8月15日 AM 08:52
請問下列此書會在今年約幾月出版?
多型與虛擬 第2版
(Polymorphism in C++, 2/e)(精裝)

●侯捷回覆:我只敢說:以年底前定稿為目標。

 

 

傳送日期: 2001年8月15日 AM 09:59
候老師﹐您好﹗
我是上海交通大學模式識別與智能系統的2001年3月入學的博士生﹐前幾天從同學那兒看到您的《深入淺出MFC》﹐覺得這本書高屋建瓴﹐很合我的胃口﹐因為我學習東西的時候﹐很希望能有一個綱領﹐引導我一步步學習﹐你這本書﹐我認為是MFC方面綱領性的書﹐謝謝您的工作。祝您身體健康﹐萬事如意﹗

●侯捷回覆:很開心聽到你這麼說。請問「高屋建瓴」是什麼具體意義?我猜得出來,但沒學過這句成語。我竟然不知道這句成語,有點氣餒。



傳送日期: 2001年8月15日 AM 10:12
候俊杰老師,您好﹗
我是大陸西安交通大學計算機系的研究生﹐對C++比較感興趣。
最近我遇到一個名詞﹐總理解不清楚﹐想請教請教您。
您知道什麼是均勻的內存系統麼﹖是不是只有在均勻內存系統中才可以用new和delete來分配和釋放空間呢﹖
我聽說Windows是非均勻的內存系統﹐是什麼意思﹐能給我講講麼﹖
謝謝拉。致禮﹗

●侯捷回覆:我也不知道什麼是「均勻的內存系統」。不過,C++ 從來不存在對於 new 和 delete 的運用有什麼限制。


傳送日期: 2001年8月15日 AM 10:22
在你的書<<深入淺出mfc>>第二版(簡體中文)中﹐在書的327頁中﹐你說WM_CREATE消息將被CMainFrame::OnCreate截獲﹐可是現在還沒有進行getmessage和dispatchmessage呢﹖請您能夠給予我解答﹔

●侯捷回覆:是的,但是不影響,因為 message 產生出來後會被放在 message queue 中,等待被GetMessage() 和 DispatchMessage() 處理。p292 圖也很值得參考。

 

 


傳送日期: 2001年8月15日 PM 06:40
侯捷﹐你好﹕
今天看到一本很獨特的關於編程之道的書﹐特寄給你一覽。

先摘錄一段( 全文在附件裡 )﹕

  曾經有個人去參加一次電腦展示會﹐每天當他進入展館時﹐都對門衛說﹕
  “我是個大盜﹐我偷盜的本領是出了名的。事先警告你﹐這次展示會也在劫難逃。”
  這番話讓門衛坐立不安﹐因為裡面有價值數百萬美元的電腦設備﹐
所以他緊緊地盯住這個人。但這個人只是從一個展攤逛到另一個展攤﹐
嘴裡輕輕地哼ぴ小曲。
  當這個人出門時﹐門衛把他拉到一邊﹐搜查他的衣服﹐但一無所獲。
  第二天﹐這個人又來了﹐並對ぴ門衛囂張地嚷ぴ﹕“昨天我滿載而歸﹐但今天的收穫會更大。”於是﹐門衛盯他盯得更緊了﹐但仍一無所獲。
  在展示會的最後一天﹐門衛再也抑制不住自己的好奇心了。“大盜先生﹐”門衛說﹐“我被你搞糊塗了﹐實在想不明白。請告訴我﹐你究竟在偷什麼﹖”
  這個人笑了。“我在偷想法。”他說。

  一個程序應當是輕盈的、靈活的﹐它的子程序就像一串珍珠一樣連接著。它的精神和意圖應該貫穿始終。在程序中﹐內容既不應太多﹐也不應太少﹔既不應該有不需要的循環結構﹐也不該有冗余的變量﹔既不缺乏結構性﹐又不過份殭化。
  一個程序﹐無論多麼複雜﹐都應該以一個整體的方式運行。程序應以其內在的邏輯為指引﹐而非外在形態。
  如果一個程序不能達到這些要求﹐它將處於一種雜亂無章的混淆不清的狀態。唯一的方法就是重寫這個程序。


感覺上文章作者很有那種早期理想主義的黑客精神。而這現在已不多見了。
順祝﹕工作順利﹔

●侯捷回覆:你附的那本「很獨特的關於編程之道的書」我看了。寫程序不是什麼很玄的事情,程序員也不是什麼很玄的人。駭客破解密碼,就像鎖匠開鎖一樣;程序員寫程序,就像土木工程師造橋鋪路一樣。

我實在地說,軟體工業,就是一個工業,一個產業。別把編程弄得玄之又玄。會編程的人多得是,編得好的人也多得是。只要有好的訓練就做得到,中等資質的人都可以做得很好。

別把程序員想像是什麼轟轟烈烈的偉大騎士,他們(含侯捷我)就像任何一個專業行業裡頭的一種專業人士一樣。對程序員抱持著種種不切實際的憧憬與幻想,恐怕不是好事。

傳送日期: 2001年8月26日 AM 11:52
發信者同上
侯捷﹐你好﹕

上次發了那本關於編程之道的書給你﹐今天到了你的網站看到你似乎持否定態度。可能你誤解我的原意了。事實上﹐我自己也編寫過很多小程序。知道編程的苦與樂。我說那本書好﹐是指其中有不少好的見解﹐適合我們休息時﹐看一看﹐放松一下 。而且書上的文筆也不錯﹐類似<<莊子>>的敘事風格。

關於程序員的偉大與否﹐我不認為這很重要﹐只要你自己喜歡編程並且投入其中就可以了。

別的﹐有時候感覺你在回信時浪費了很多時間在"安慰"那些迷茫恐慌的初學者。請抱歉我用這個詞與這麼說。我知道當你收到一些熱情可愛的朋友來信時,就會自然而然的使自己充滿做事情的熱情。而你肯佔用很多自己的時間﹐做這些為別人授業解惑的工作﹐這一點讓我很感動。
順祝﹕工作順利


 

 

傳送日期: 2001年8月16日 PM 04:11
尊敬的侯先生:
見信好!
有幸看了您的作品,讓我很有感觸!!
作為一個知識平平的軟件開發人員,我對自己的未來還很渺茫!
希望能從你的書中獲益,感謝您!




傳送日期: 2001年8月17日 PM 02:17
Hi,jjhou
最近正在拜讀您的《深入淺出MFC》和《深度搜索C++對象模型》﹐在看到後者的第三章的時候﹐心中一直有個一困惑﹐C++的對象在存儲的時候並沒有存儲Access Level的信息﹐即使我在類中改變public等時﹐類的大小並不發生變化﹐那麼C++是怎麼實現對成員變量及函數的Access Level控制呢﹖
打擾您了﹐謝謝

●侯捷回覆:恐怕是另做表格或什麼的,控制著吧。

 

 

傳送日期: 2001年8月18日 AM 12:35
侯老師﹐您好﹗
我是浙江聲的一個學生﹐我從來沒想過要給作者寫信。可是在看來你的《深入淺出MFC》一書後﹐我想要謝謝你給我們帶來這麼好的一本書。在拿到《深入淺出MFC》一書時﹐我正在開發一個工程。雖然很忙﹐可我還是一口氣把《深入淺出MFC》看了兩遍。以前的所有疑問都煙消雲散。另外我到你的站點看了你出的書﹐可是現在外面的書店裡找不到你的書﹐不知道在浙江怎麼樣可以買到其他的書﹖
再次說聲謝謝﹗致禮﹗

●侯捷回覆:侯捷網站上的書訊,其中唯有簡體版的書才能在大陸買到。如果你是指簡體版,而浙江買不到,請寫信給華中出版社。(天呀,浙江這麼大,你說得多麼籠統)

 

 

傳送日期: 2001年8月18日 AM 07:12
侯老師﹕
您好﹗
請問《Modern C++ Design 》一書會不會有簡體中文版﹖

●侯捷回覆:如果拿到譯權的出版社和我聯絡,就會有侯捷譯本,否則就會有其他人的譯本。也可能沒有簡體譯本 — 如果沒有任何大陸出版社對此書感興趣的話。

 

 

傳送日期: 2001年8月18日 AM 09:32
我現在很忙然﹐不知道是繼續將C語言學完﹐還是改學VC++。如果學VC++我需要具備哪些基礎知識﹐還要學習哪些知識﹖ 如能回信非常感激﹗

●侯捷回覆:看侯捷網站上的文章。


傳送日期: 2001年8月18日 PM 02:23
主旨: I Need "Thinking in Java 2/e"!!!
親愛的jjhou.
我在大陸﹐但此書並未列在大陸出版計劃中﹐我能夠買到此書嗎﹖
很急的﹗﹗﹗希望馬上就得到。再次感謝!!


●侯捷回覆:此書出版之時,不知道CSDN是否已開通海外購書活動。如果開通,便可透過CSDN購買。你不能馬上得到它,因為它還沒有完成,預計2002 年一月或二月出版。

 

 

傳送日期: 2001年8月20日 AM 10:48
Mr. hou:
你好﹗我是您的讀者。十分崇拜您﹐前些天從您的web上down了您放在網上的書看﹐於是就更崇拜您了。應您的要求﹐付個人簡表﹕
居住省份﹕安徽
我是一個熱愛編程的高一學生﹐在閱讀《程序員》時認識您的。我在學習中﹐遇到了不少問題﹐您能解答我的問題嗎﹖謝謝。

我有一個小問題﹕候捷 和候俊杰是不是一個人﹖﹖(我想是)
最後﹐祝身體健康﹗﹗

●侯捷回覆:你對了

 

 

傳送日期: 2001年8月19日 PM 09:29
候教授,您好:
我買了你寫的深入淺出的一本書
當我在看你的書自修MFC時我一直覺的
MFC有何優勢, 它的學習門檻這麼的高
有人願意用它出開發程式嗎

MFC寫出來的程式的執行效能比起VB,
快多少, 還是用它來開發程式好處很多
我非常的好奇, 可以告訴我嗎

 

 

傳送日期: 2001年8月19日 PM 09:49
hello:
那MFC到底是應用在什麼地方
是不是像power DVD, .蒙恬中文系統
才會用到MFC, 可是MFC 的效能, 又不比SDK,
會不會他們不用MFC也用SDK, 那MFC不是沒有用武之地了



 

傳送日期: 2001年8月19日 PM 03:05
居住省份(台灣讀者請寫縣市)﹕廣州
對侯捷的建議﹕
"有讀者告訴我﹐《深入淺出 MFC》1/e 簡體版在大陸被掃描上網。亦有讀者告訴我﹐大陸某些書籍明顯對本書侵權(詳細情況我不清楚)。"
如果是出版社侵權你的書,我也會覺得憤慨.對貪官污吏之類我是沒好感的.不過掃描上網這種事我是很贊成的.古代一樣東西可貴,因為稀少;而現代信息可以copy再用網路傳輸,這是我最喜歡現代的原因. 無論誰寫的書,首先是無法保護其"產權",其次我也不能理解現行的產權.人類的科技早就可以讓每個人都過的好得多,雖然那樣好不好還沒人說的上來.

建議你把電子書刻成光盤以人民幣10元左右的價格出售,那我一定會買一份的;否則面對80元的書,我還是會選擇下載電子書(不論盜版正版).當然,若我的薪水突然長了十倍,我會考慮去買一本正版書的.


●侯捷回覆:除了搖頭,我也不能說些什麼了。誰叫作者無法選擇讀者呢。
這讓我覺得傳送日期: 2001年8月11日 PM 11:46 那位讀者多麼可愛。強烈的對比。


 

傳送日期: 2001年8月20日 AM 10:31
主旨: 關于購買"Thinking in Java 2/e"
> 親愛的jjhou
>
> 看了你的譯著的前四章后覺得本書的确不同一般的JAVA著作,但遺憾的是你沒有列在大陸出計划中,因此我想請問我在大陸如何購買,我不愿意等到此書在大陸出版時才買。因為這樣可能是一二年后的事了。謝謝!!!


●侯捷回覆:此書出版之時,不知道CSDN是否已開通海外購書活動。如果開通,便可透過CSDN購買。此書預計2002 年一月或二月出版。

 

 

傳送日期: 2001年8月20日 PM 11:05
尊敬的侯老師﹕您好﹗
我們是c++初學者﹐最近買了一本您的《深入淺出MFC》﹐愛不釋手﹐除了書的正文之外﹐書評部份對我們也十分有價值﹐您為我們介紹了一系列的好書﹐我謝謝您﹗
同時﹐也想請教﹐作為一名初學者﹐我們該如何入手﹐如何起步及提高﹐希望您能在百忙之中給我們一些方法上的指點及推薦幾本適合我們的好書。
謝謝您的指教﹗盼望您的新書﹗


●侯捷回覆:見侯捷網站上的文章。



傳送日期: 2001年8月20日 PM 01:52
Dear 侯大哥:
居住:南投縣
建議:首先要跟你道歉,因為,我目前並沒有將你的書給讀完,我只大概的看了幾章,因為我不是以VC++來開發我的程式,我現在在寫一個數值模擬的程式,因為早期我使用VB來寫,我個人對於GUI的程式情有獨鍾,不能說VB有什麼不好(現在發現,跟C++比起來,VB太容易但結構太鬆散了!),我只是想多學幾種程式語言罷了,所以接觸了C/C++,但,由於學習環境使然(當然,一部份是自己的興趣),我決定在LINUX下發展我的程式,我用了KDE下Qt這個函示庫,但,有鑑於國內使用人口不多,參考資料也難取得(中文版),我是上網找尋資料時,無意間發現有這麼好的是,有這麼厚(我曾經在書店看過這本書,因為太厚且沒有C++字樣,而看都沒看,我是初學者嘛!!)一本書可以下載,就先下載了第一部份來看,這本書真是難能可貴,一者,國內能自己寫一本書者,不多了(大多是翻譯),再者,有些翻譯書,譯者逐字照翻,讓身為台灣人的我,看的非常不習慣,而且,看了幾個章節後,發現你把一些觀念講的非常的清楚(也許,是用中國人的用字遣詞的關係吧!),讓我受益良多,希望你繼續努力寫好書,最好能寫一本關於LINUX下GUI的程式設計更好了(人不為己,天誅地滅嘛!)......,啊!因為知道你還要接著翻譯一些原文書,希望你也如我所說,能將原作者的"語意"消化後,以中國人的"講法"傳達給讀者,而非"逐字照翻".......加油囉!




 

傳送日期: 2001年8月20日 PM 10:43
Dear 侯老師您好~~

很榮幸能在Java Two 大會裡聽您講解 Java & C++的異同,感覺受益良多! :)

雖然事後有向您請教General programing的問題,但是我還是忘記了另外一個我的疑惑!
所以只好打擾您,寫了這封信,希望您不吝指教!

您的講義中寫道:

Java的特點在簡易(相對)、安全、跨平台、OO性質優異
–Java的哲學:儘量讓編譯器承載責任。
–所謂安全:到處都有檢查動作:bound check, cast check, garbage check。Containers 元素型別卻沒檢查(不像C++可指定template argument)

請問這句「Containers 元素型別卻沒檢查(不像C++可指定template argument)」何解??


●侯捷回覆:意思是,Java 容器中的每一個型別都是 "Object",因此實際可為任何異質物件。
不像 C++ 可在容器的 template argument 中指定某種 type,使之成為同質容器。Generic Java 正是為了解決此事。

傳送日期: 2001年8月21日 PM 07:53
嗯.....原來如此........
不過這樣一來,一但加入了Generic Java. java的很多地方應該會做很大的更動吧,這樣一來,不知道會不會違反java complie once run anywhere的精神.

還有不知道老師對pattern的看法為何?

●侯捷回覆:Java 加入 Generic 性質,並不會違反 complie once run anywhere的精神,倒是,Java 一旦加入 operator overloading 和 generic programming,就更大幅度地靠近了 C++。這麼一來不知怎麼再呼應其主要宗旨「簡單易學」。

話說回頭,Java 從來沒有「簡單易學」過。Java 的能量相當於 OO + multi-threading + GUI framework + network + ...,每個主題都是一座巍峨山頭。

語言的發展過程中會參考、模彷,這是很自然的道理,language creator 會朝著他的理想去設計他的語言,而理想會有所變動(這個世界,不動的只有死人)。所以,那些狂熱的基本教義派(不管對什麼狂熱)都應該閉嘴,免得牙齒咬到舌頭 :)

patterns 很好,但富有相當經驗的人,才能心領神會。100 個說《Design Patterns》一書很好的人,98 個人云亦云(只不過他云對了)。

我可能會把演講內容整理成文章發表,並加上實例。


 

傳送日期: 2001年8月21日 PM 04:03
做個留言本如何?
這樣最直接的就可以看到大家的來信了﹗
至於gb-->big5﹐可以在網頁中實現﹗﹕-)

●侯捷回覆:很好,但可惜我做不來留言本,也沒有時間學做留言本。

 

 

傳送日期: 2001年8月21日 PM 02:16侯先生﹐您好﹗
前些時候在光盤上發現一篇文章《mfc四大天王》﹐在文章裡發現了您的大名﹐對您是由衷的佩服﹗咱中國人不比外國人差﹐能稱得上四大天王之一﹐您的書肯定了得﹗立嘛買了您的著作《深入淺出mfc》,由於工作緊張現在只看了第一章﹐感到確實不錯﹗希望能您介紹一下您的其他著作﹗祝:
工作順利
全家幸福


●侯捷回覆:一定要注意一件事,那是名為侯捷的人所寫的文章,推薦一個名為侯俊傑的人所寫的書,而一開頭就有一段話:『我談這本書,可能會被譏以「分身替本尊說話」,但為了舉薦好書,以及秉持外舉不避仇、內舉不避親的原則,我不想閃躲』

我的作品都介紹在侯捷網站上。

 

 

傳送日期: 2001年8月21日 AM 10:32
侯老師﹐你好﹗
我是一位大陸的學生﹐最近在看您的近作“深度探索C++對象模型”。
書中在第六章的“針對數組的new語意”小節中寫到﹕
Point* ptr = new Point3d[10];
delete [] ptr;
將導致Point的destructor的調用﹐而不是Point3d的destructor。並且
各個數組元素的大小也是sizeof(Point)﹐不是sizeof(Point3d)。但是我
在Visual C++中測試時發現調用的是Point3d的destructor﹐且元素大小也
應該是sizeof(Point3d)。
是否這是由於Visual C++也是和Lippman提到的Sun編譯器一樣維護一個
“聯合數組(associative array)”的緣故﹖請侯老師指點迷津。另外附上
我的測試程序一個。

#include <iostream>
using namespace std;

class Base1 {
public:
  ~Base1() { cout << "~Base1()\n"; }
};

class Derived1 : public Base1 {
public:
  ~Derived1() { cout << "~Derived1()\n"; }
};

class Base2 {
public:
  int i;
  virtual ~Base2() { cout << "i=" << i << "~Base2()\n"; }
};

class Derived2 : public Base2 {
public:
  int j;
  ~Derived2() { cout << "j=" << j << "~Derived2()\n"; }
};

int main() {
  Base1* bp = new Derived1; // Upcast
  delete bp;
  Base2* b2p = new Derived2[3]; // Upcast
  Derived2* dp = static_cast<Derived2*>(b2p);
  for (int i = 0; i < 3; i++) {
    dp->i = i;
    dp->j = i + 10;
    dp++;
  }
  delete [] b2p; //if "delete [] dp;", throw a exception?
}


●侯捷回覆:你的測試程式,我看得頭昏腦脹,抱歉,不看了。

給兩個重點:
(1) base class 一定要設計出 virtual dtor,否則在 polymorphism(upcast)的情況下,當derived class object 被刪除時,喚起的將是錯誤的 dtor,造成 memory leak,甚至造成程式錯誤。
(2) new/delete 有兩種型式:針對 single object 者,以及針對 object array 者(帶有 [ ] 符號)。不能混用,否則會出錯。

可參考 Effective C++ 2e 條款 5 和條款14。此書之簡體版(侯捷捷本)即將於2001/09/15由華中科技大學出版社出版。

 

 


傳送日期: 2001年8月21日 PM 09:32
主旨: Essential C++ 一問

侯老師:
您好, 我是就讀於師大資訊的學生。上學期修過 C++ 之後,就對 C++ 產生了不小的興趣。
所以我就在暑假開始了一段 C++ 之旅,除了上課的課本《Object-Oriented Programming in C++》之外,我還向學長借了《世紀末軟體革命 I》來研讀。花了一個月的時間將這兩本書仔仔細細、完完全全地讀完一遍,有很大的收穫。

後來就在 "楓橋驛站" 的 CompBook 繼續找些大家都推薦的書來看。因為自己覺得還是從初級一點的書看起,所以我選擇了大家都推薦的入門書《Essential C++》,同時也買了《C++ Primer》一邊查閱。

雖然在查閱的過程中發覺《C++ Primer》並沒有想像的艱深,但既然已經買了《Essential C++》,我也就準備將他讀完。

但是進度趨於緩慢,因為暑假以來,一直想把自己的觸角再伸得廣一點,所以也開始碰一些 SDK 、MFC 和 軟工相關的書。

這其實也跟老師您有很大的關係,以前,我的電腦世界裡大概就只有所謂的 "ACM 大賽",以為程式世界裡就是演算法、資料結構,一直到發現了老師的網站之後,我才驚覺,原來電腦的世界還很廣,還有很多領域是我沒接觸過的。

就這樣,我著實興奮起來,拼命地想要瞭解這有趣的電腦世界,現在在我的書單中就還有...
《Programming Windows》、《Programming Visual C++》、《Programming Windows with MFC》與《Essential C++》、《C++ Primer》同時進行。

Windows programming 部分,進度可能稍嫌緩慢些,所以老師的《深入淺出 MFC》可能還得在等上一陣子才會翻閱囉...:P

但 C++ 部分,待這星期將《Essential C++》、《C++ Primer》看完之後,我就打算轉戰《Effective C++》、《More Effective C++》、《Writing solid code》等實務性書籍。

然後等著 《多型與虛擬 2ed》、《深度探索 C++ 物件模型》出版、 到手後再好好享受 C++ 的高階與低階層面。

這樣緊湊的行程裡,我也是讀得昏天暗地,偶爾還會被 BBS 看版所討論的諸如 "Java .net C#"、 "MFC 已死" 等主題給打亂心思,

但我還是堅信我要走這樣的方向,就當是打基礎好了,我會先把 C++、MFC 都弄通了,當成我的基底,再去想其他語言、其他 framework。

而且其實還是讀得蠻快樂的...:P

最近讀了些《Essential C++》,覺得書的層次架構真的很棒...用幾個相關的例子,就把一連串的機制串接起來並講解得頗清楚。也帶領我做思考,思考如何分析解決問題,思考這些機制的用處。

但中譯本有個很大的缺失 (或許原文本也是) --- 錯誤不少,常常只要看得覺得怪怪的,上網站一查 errata,就會發現,果然,又打錯了、 漏打了,這樣實在有點不保險。

像今天就讀到了 p.79~80 關於 iterator 程式碼如下 :

// 這是要插入一數值於 list 並使其保持遞增順序

list<int> ilist;
// ... 充填 ilist

list<int>::iterator it = ilist.begin();
while ( it != ilist.end() )
if ( *it >= ival )
{
  ilist.insert( it, ival);
  break;
}
if ( it == ilist.end() )
ilist.push_back( ival );

我對於 while 迴圈內沒有對 it 做 increment 的動作甚感懷疑,只有在 ( *it >= ival ) 的情況下 insert 並跳出迴圈。但是,小於呢? it 的值好像就都沒有變動了,好像會一直停留在 while 迴圈的執行。

我是懷疑,在 while 迴圈內是否少了對 "it++;" 這樣的 statement (當然也就少了大括號...:P)?
而網站上並沒有關於這程式的修正,但我還是覺得可能有錯,所以也只好寫信問問老師囉。

其實今天寫這封信的主要目的也就在於上面的疑問,至於最開頭寫的那些,則是希望跟老師聊聊我的歷程,因為老師算是我最崇拜的人之一,我實在很想跟老師說些話,也希望獲得老師的鼓勵或建議,那怕是隻字片語,都會夠我樂的了。

所以,如果前面寫得太繁雜了還請老師見諒啊...mOm (O 就是我的頭, 兩個 m 則是我的兩隻手,表俯首磕頭致意,是我憑印象亂發明的啦...:P)

對了,在我 BBS 的精華區中,我都有寫出我看過的書的心得與同學分享討論(當然不會抄襲...:P),也希望老師不會介意...(如果介意,我馬上鎖起來...:P)

其實,也自知自己的實力不夠,但我會繼續努力充實自己,以致能欣賞老師寫的好書。也希望老師能繼續寫好書、翻好書,當我們程度夠了也才又有好書可以看。

就這樣吧,時間到了,我又得回到書堆中囉...:P

敬祝 身體健康 萬事如意

●侯捷回覆:你看了許多經典,很好,但別忘了「實踐是檢驗真理的唯一途徑」。

BBS 上那些諸如 "Java .net C#"、 "MFC 已死" 等主題,可以邊喝咖啡邊看,不必當真。如果是深度技術評比,很值得一閱,但 BBS 上這些文章(說得上文章嗎?)作者是誰,多少斤兩,我們都不知道,既未顯現技術本質,徒然道聽途說人云亦云。何必在乎這種帖文?

我很贊同你在BBS 精華區中寫出看過的書的心得與同學分享討論,將心得寫下。這對於你的實力增長將有莫大幫助。旁人會以為這是蠢事,懂就懂了,何必再花力氣整理。但我告訴你,這種功夫對於你的求學之道,似遠實近。

感覺你是很有定見很踏實的一位學生,很好,加油。

現在回答你的問題。你說的 Essential C++ p79~p80 問題,的確是個錯誤,是英文版的錯。現在我寫一個完整例子於下,並刊於 Essential C++ 勘誤表。謝謝你。

// Essential C++, p79 最下
// 以下程式碼會將 ival 插入 ilist 內,並維持其遞增次序:
#include <list>
#include <iostream>
#include <iterator>  // for ostream_iterator
using namespace std;
int main()
{
  list<int> ilist;
  // ... 充填 ilist
  ilist.push_back(1);
  ilist.push_back(3);
  ilist.push_back(5);
  ilist.push_back(7);
  ilist.push_back(9);
  ostream_iterator<int> out(cout, " ");
  copy(ilist.begin(), ilist.end(), out); // 1 3 5 7 9
  cout << endl;
  int ival = 6;
  list<int>::iterator it = ilist.begin();
  while ( it != ilist.end() ) {
    if ( *it >= ival ) {
          ilist.insert( it, ival );
          break; // 跳離迴圈
    }
    it++;     // <-- note!!
  }
  if ( it == ilist.end() )
       ilist.push_back( ival );
  copy(ilist.begin(), ilist.end(), out); // 1 3 5 6 7 9
}


 

傳送日期: 2001年8月21日 PM 10:37
敬愛的侯老師﹐您好﹕
打擾您了﹐我懷著忐忑之心給您寫這份信。我是一個com初學者﹐在編程中遇到一些問題﹐不知如何處理。
問題一﹕在com接口方法中﹐實現自定義數據類型[in,out]參數時﹐內存管理應該由客戶端負責﹐還是服務器端(com組件)負責﹐抑或兩者之間協調處理﹖

問題二﹕我在用atl編寫一個界面組件時﹐需要彈出一個非模態窗體﹐他的確能夠正常顯示﹐但是﹐當焦點落在這個非模態窗體的時候﹐我的擊鍵操作回事程序陷入死循環(我懷疑是消息處理機製除了問題﹐但是解決不了)。開發平臺時windows2000,vc6.0,客戶端程序是基於mfc的對話框。我的非模態窗體由CWindowImpl<class >類派生而來。

不知我描述的是否清楚﹐如果您能在百忙之中抽空給我指點謎津。我感激不盡。
好了﹐不浪費您寶貴的時間了。
祝老師
身體健康﹐萬事如意。

●侯捷回覆:抱歉,我無法回答你,我很久沒有接觸 platform-specific 的東西了。
補記:另一位讀者有所回覆,請參考傳送日期: 2001年9月12日 AM 04:41

 

 

傳送日期: 2001年8月22日 PM 05:00
侯先生﹐您好﹗
看了您的《深入淺出MFC》受益匪淺﹐謝謝您﹗雖然因為個人原因不能夠說出我的真實姓名﹐但是﹐我還是對您致以最崇高的致意﹗

  

 

傳送日期: 2001年8月22日 PM 08:08
主旨: JavaTwo會後一點意見

侯Sir您好,

相當崇敬您著作上的專業,對於您譴詞用字的功力,以及許多見解更是佩服。然而,對於Sun JavaTwo上的「Java v.s. C++」研討,實在令晚輩我不得不三聲嗟嘆!

這是一個相當「龐大」的議程,Java淵源並借鏡於C++之處繁多,但兩者的歷史淵源、時空背景,甚至架構體系都有相當的差異,相信您也同意,藉由比較去分出優劣勝負,沒有太大意義。

想強調的是,身為一位講者和作家,是負有相當程度的道德及道義責任的。

並不反對您就Java和C++的語言特性作討論,Serialization、RTTI、 Reflection、Generic Programming... 也或許是每個Programmer必經的旅程。然而,整段整段"Thinking in Java"原文的引述,扣掉標題和最後的參考書及圖片,在講稿中佔了將近二分之一.....是的,這本書是經典,字字珠璣... 可是如此數百聽眾的場合,如此的講題,卻如此編排,面對嗷嗷群眾,無法興起,甚至反倒澆熄他們對學習的熱情,竊以為十分不妥。

但轉念想想,侯先生是C++界的權威,卻非Java的老手。也許您還未體會Java的概念與體系恢弘而美麗吧,或是已厭倦了語言的更迭?!才會在內容準備、講演中,缺乏了感動和感情。

雖十分可惜,然而僅僅是您的參與已為此研討會壯勢不少,非戰之罪,又何忍過於苛責呢?

讀過許多您與其他讀者們的筆戰,許多批評指教皆被視為若糞土,但祈這些許意見,能在往後講演時,讓您多做一些省思。

順問近祺
台北 讀者

●侯捷回覆

首先感謝您的來信。

如您所言,Java vs. C++ 是一個相當「龐大」的議程。在90分鐘裡面,我該做如何的內容安排,才能讓所有人都滿意?我肯定無法讓每個人都滿意。就像書籍的選題一樣。

所以我選擇「語言核心」的部份來講,演講一開始我就告訴大家,我選擇我專長的、我感興趣的、90分鐘內可談而不至於太空泛的主題。按說我應該選擇讀者所感興趣的,而不是我所感興趣的,但500位聽眾無法獲得公約數,我也無從事先知道「Java vs. C++」這個龐大的主題中,什麼是聽眾感興趣的。

題目和大綱,很早就給了主辦單位,主辦單位該如何讓參加者儘早得知題目和大綱,這是您可以向主辦單位反應之處。當天您所拿到的議程表上明白寫出了我的演講主題,如果您不喜歡這個主題,您或許可以選擇另一個廳所進行的另一個主題。至於這樣的活動將來是否可以讓參與者提早獲得更詳細的資訊、甚至提早獲得演講投影片內容,這個我早就向主辦單位建議了,也許明年會是這樣(我不知道)。

投影片中引用《thinking in Java 2e》一書(及其他書籍)內容,我覺得非常洽當,沒有絲毫不妥。也許您認為該有「創新」,那麼或許 Java creator 來演講才會有所謂的創新。這種研討的性質是先覽、教育、推廣。我如果未曾明白打出 ref "thinking in Java" page xxx 字樣,可能您反倒不會有此一議。我的用意是,90分鐘畢竟無法談到太具體的東西,因此我明白標示出可以於會後讓聽眾繼續 follow 之處。這一向是我的作法,目的是讓這份投影片帶給聽眾的價值更高一些。如果我有 java 著作,我會引用自己的作品,但我還未有 Java 著作,所以引用一本被您稱讚為「字字珠璣」的經典,這樣聽眾更能確知我所講的東西有所本、有所實證,也容易於會後找到更多完整資訊。我對我所講演的每一個小題,都做過實證,這向來是我的行事風格。目前正打算撰寫一篇文章,將整個演講談到的所有東西,以具體的程式呈現出來,但是90分鐘裡頭不能有如此作法。

> 也許您還未體會Java的概念與體系恢弘而美麗吧,或是已厭倦了語言的更迭?!才會在內容準備、講演中,缺乏了感動和感情。

我在我所專注的領域內,充份體會了 Java 和 C++ 的異同,也為演講做了充份的準備。我在我的演講中充滿了對聽眾的感情(至於「感動」,我不敢用這個詞)。但既然您有以上的認為,我知道對您而言,這場演講是失敗的。在一個500位聽眾以上的大型演講中,我也事先知道,我無法滿足每一個人。

> 讀過許多您與其他讀者們的筆戰,許多批評指教皆被視為若糞土,但祈這些許意見,能在往後講演時,讓您多做一些省思。

有些讀者意見確實被我視為糞土。有些讀者意見我很尊敬。完全要看這個意見是否顧及全面,是否客觀,亦或一己之私。當然讀者也可以認為侯捷的意見是糞土、不全面、太主觀、一己之私…,每個人都可以有自己的看法,很公平。

我希望聽到的批評是『你的講演內容有誤,應該是這樣這樣,請看我的實證…』,我希望聽到的讚美是『你的講演內容,導正了我原先的錯誤觀念…』。至於「選題」這東西,永無定論;您不知道我要講些什麼,正如我不知道您想聽些什麼,一樣的道理。「選題」意見當然很值得反映,因為您是付費的聽眾,但反應給主辦單位會更有價值。如果數量夠多,一定能夠導引明年的選題。

我對我的每一場演出,不論是寫作或演講或授課,從不敢掉以輕心,永遠努力以赴。從您的來信,我想您並不這麼認為。我在這裡很誠懇地告訴您,我是這樣。

您對這場演講的抱怨,是您應有的權利。反應給主辦單位,會更有幫助更有影響。我已將您的這份意見,連同我的回覆,轉給 Sun Education 總經理。如果這樣的回應很多,肯定對於 Sun Education 下次邀請講者及訂定主題時,能起重要的參考作用。

謝謝您的來信。
P.S. 很快我會在侯捷網站上公開我的所有 JavaTwo 演講投影片

傳送日期: 2001年8月23日 AM 09:26
主旨: RE: JavaTwo (Java vs C++)
侯老師,
您好. 剛剛看完這封信,我想您說的沒錯,
"但500位聽眾無法獲得公約數,我也無從事先知道「Java vs. C++」這個龐大的主題中,什麼是聽眾感興趣的。"
我猜,大家衝著您的身分地位來聽您的演講,或許是想要聽聽"辛辣"的吧!
從信中看得出來這位朋友覺得Java的"宗廟之美"並沒有在您的演講之中提到.
"也許您還未體會Java的概念與體系恢弘而美麗吧,或是已厭倦了語言的更迭?!才會在內容準備、講演中,缺乏了感動和感情。"
感覺起來,侯老師有點像天主教教宗,遇到了基督教的信徒,怎麼說也說不清.

我常常在教書,
事實上,連一般20個人的課程都不可能做到人人都滿意,
或是讓人人都學到他預期的東西,更何況是500人以上.
就算之前把講題寫的再清楚,一樣會有人認為不是他要的.

 


傳送日期: 2001年8月22日 PM 11:12
居住省份﹕四川
對侯捷的建議﹕現很少有又重理論又有強實踐性的書﹐許多書看起來很乏味﹐而國外的教材確有較好的理論結構﹐每一章後有許多常見程序的源代碼(如windows自帶的扑克游戲)﹐又有一些針對性很強的習題﹐並提供Note告訴你一些常用的編程技巧﹐希望能在以後見到許多這樣的好書。
由於個人才疏學淺﹐有不當提議之處﹐盡請諒解。
附言﹕本人于2001.8.20在網上下載此書。

●侯捷回覆:謝謝建言。

 



傳送日期: 2001年8月23日 AM 10:37
侯sir﹐您好﹗

不知道上次的email和附件中的C++ View第2期以及一篇文章收到了嗎﹖侯sir似乎只有星期五收發email﹐是嗎﹖

看了8月的讀者來函﹐有些想法﹐隨便寫寫吧。

“高屋建瓴”台灣的中文課本上沒有嗎﹖在我印象裡﹐台灣對傳統文化的保存在不少地方好于大陸(能砸的都砸光了﹐剩下的倒也更值錢)﹐我擔心這是50年來大陸發明的成語﹐看起來又不像。查了一下﹐出自《史記•高祖本紀》﹕“(秦中)地勢便利﹐其以下兵于諸侯﹐譬猶居高屋之建瓴水也。”高屋頂上倒水﹐勢不可擋的意思﹐不過後來也有層次高﹐看得遠﹐總領的意思吧。

C++ View第三期本來想開設一個專欄﹕MFC與Design Patterns﹐主要靈感是來自CSDN上一個帖子“MFC,STL,COM,ATL中使用了哪些設計模式? ”(http://www.csdn.net/expert/Topic/159/159235.shtm)。我試圖聯繫帖子的作者﹐但是沒有回音。在codeproject上也有T. Kulathu Sarma對於MFC和Design Patterns的一系列文章。我本來已經請了一位網友來做這個專欄﹐但是他嫌自己水平太低﹐放棄了﹐這個專欄也只好成為遺憾。看到侯sir有意寫《樣式導引》﹐感覺不錯﹐希望早日看到這本書。

至於看到廣州有位仁兄希望侯sir配合﹐“把電子書刻成光盤以人民幣10元左右的價格出售”﹐我 faint……

最近在考慮寫一系列《深入淺出VCL》的文章(借借侯sir的光^_^)﹐準備發在C++ View上﹐很希望侯sir能幫忙看看﹐但又擔心侯sir實在沒空……

致禮﹗



●侯捷回覆

上次的email和附件中的C++ View第2期以及一篇文章,都收到了,謝謝。文章中讀者給你的信,其中寫到我的部份,我沒有任何回應(只要不是寫到我這裡來,我都不會有回應)。

> 侯sir似乎只有星期五收發email﹐是嗎﹖

我的電腦24小時在網上,隨時收信看信,但隔一段時間才做整理。

謝謝你告訴我「高屋建瓴」的典故。我查閱手上的「成語熟語詞典」,也查到了。「成語熟語詞典」是一本我很喜歡的工具書,大陸出版品,因徵引古籍,故援辭源之例,以繁體字排印。

> C++ View第三期本來想開設一個專欄﹕MFC與Design Patterns...

非常好的構想。這個專欄將使你的雜誌立於世界水平。

> 最近在考慮寫一系列《深入淺出VCL》的文章(借借侯sir的光^_^)﹐準備發在C++ View上﹐很希望侯sir能幫忙看看﹐但又擔心侯sir實在沒空……

對於 VCL,我僅能欣賞,沒有能力給意見。「深入淺出」是一個很常用的字眼,人人可用,完全不是借我的光,千萬別這麼說。

相當欣賞你的電子雜誌。

能否麻煩你把“MFC,STL,COM,ATL中使用了哪些設計模式? ”複製一份並轉為繁體給我?我能夠在 CSDN 上閱讀,但對於下載以及轉換字碼,很頭痛( shtm 是什麼格式?)。

謝謝你。

傳送日期: 2001年8月23日 PM 02:40
寄件人同上
侯sir﹐您好﹗
shtm文件其實是微軟對html的發揮﹐當成html文件就行了。我把那篇帖子轉成了WORD文檔﹐放在附件裡﹐同時還有上次email裡提到的T. Kulathu Sarma對於MFC和Design Patterns的一系列文章﹐我也不知道全不全。這系列文章沒有按照patterns的格式﹐說的似乎也不是特別詳盡﹐總之供侯sir參考﹐希望能對侯sir的新書有幫助。

“MFC與Design Patterns”這個專欄想是一回事﹐但是沒人做又是一回事。如果侯sir有興趣﹐在研究過程中寫兩篇文章﹐就當是為寫書做準備﹐那就太棒了﹐Andrei、Herb他們也經常這麼做。

不知道侯sir能不能讓台灣的朋友一起加入到C++ View的行列來(比如您的學生)﹖大家互相交流﹐總是好的。另外我覺得可以統一一下翻譯的術語﹐至少希望在C++ View裡和侯sir在兩岸出版的書裡先採用﹐侯sir以為如何﹖另外這次翻譯到Design by Contract﹐意思好懂﹐翻譯很頭疼﹐侯sir一般如何翻譯呢﹖

第3期C++ View想作一些調整,歸並為三類:
1、多半是以雜志的名義作的一些專欄,一般就是前幾篇文章,比如采訪、灌水、評測、介紹、讀者熱線等等;
2、散的文章,也是單篇的文章。
3、專欄系列文章。

我想為這三類起三個名字,想來想去,頭疼,希望侯sir能賜名。

  

 


傳送日期: 2001年8月23日 AM 11:35
主旨:  一件困擾我好久的難題
Mr侯﹕
我是大陸的一名大學生﹐讀了你的<<深入淺出MFC>>﹐佩服得五體投地。技術層次上很深入﹐以前我買過不少關於Visual C++的書﹐越讀越糊塗﹐只知其然不只其所以然(我喜歡打開黑箱弄其工作原理﹐然後才放心大膽地使用)。譬如﹐this指針﹐從來沒有那本書告訴我那是VC編譯器給成員函數加的隱含參數。讀了您的書﹐感覺非常好﹐很多學習C++語言留下的困惑解決了﹐而且還了解了幾個VC的關鍵技術。

但我還是有個疑點向您求教。在RTTI所構建的類別型錄網中﹐CObject有一個CRuntimeClass對象classCObject﹐CDocument也有一個CRuntimeClass對象classCDocument﹐但是CDocument派生自CObject﹐那麼CDocument豈不也有一個classCObject﹖我試用sizeof檢驗﹐卻令我大吃一驚﹕sizeof( CObject ) 竟然小於sizeof( CRuntimeClass )﹗﹗﹗三思而不得其解﹐還請您指點迷津。非常感謝您的答復﹗


●侯捷回覆:人家都說「百思而不得其解」,你只有三思,所以還有97次的努力要進行 :)

CObject 內的確有個 CRuntimeClass,見《深入淺出MFC 2e》簡體版 p104,#0050~#0062。但請注意 #0061 的關鍵字 static,這表示CRuntimeClass 的大小獨立於CObject(及其派生的任何 classes)之外。這是屬於 object model 的知識,如果你不甚清楚,可參考《深度探索C++物件模型》(簡體版)第三章。《深入淺出MFC 2e》對這個觀念也有提及,我就不替你找了。

 

 

 

傳送日期: 2001年8月24日 PM 07:14
候老師﹕您好﹗
首先感謝您為我們開放《深入淺出MFC》2/e的內容﹐讓我們能夠方便地用計算機閱讀。下面是我的一些資料﹕
居住省份﹕江蘇省無錫市
小小建議﹕我學VC很多年了﹐對MFC的運行機製大致有所了解﹐現在來閱讀《深入淺出MFC》2/e雖問題不是很大﹐但由於MFC機製的複雜性及內核的綜合隱藏性﹐總是有很多問題難以理解﹐而且特別是對於剛接觸MFC編程的初學者來說﹐更是顯得無從下手﹐高深莫測。所以希望候老師能夠出一本針對初學者的、更淺顯易懂的、介紹MFC運行機製的書籍﹐不知妥否﹐請候老師考慮。再次表示感謝﹗祝候老師寫出更多、更好的書﹗


●侯捷回覆:很難再寫一本更淺顯的書。一項複雜的技術,本身就有學習門檻。初學者無從下手,不是因為他們初學 MFC,而是因為他們的基礎不足,包括 C++ 基礎不足,message based, event-driven 基礎(所謂 SDK 基礎)不足。本書第三章「MFC 六大模擬」,其中的 C++ 就讓很多人吃不消。

技術的學習與攻堅,是一種積木堆壘、板塊移動過程,也像是一種拼圖遊戲。要完成1000塊拼片的大型拼圖遊戲,一定是由角落開始,然後四週,然後向中央靠攏。一開始就把目標放在花色最繁複、形式最複雜的中心區域,一定鎩羽而歸。這個道理大家肯定都懂的 :)



 

傳送日期: 2001年8月25日 PM 02:41
侯先生﹐您好﹗
我是你的讀者﹐我下載了你的《深入淺出 MFC》一書的電子版﹐目前正在閱讀﹐感覺的確是本好書啊﹗我是用Delphi的﹐不過近來隨著學習的深入﹐發現用VC寫的程序大大多于Delphi寫的﹐不得已﹐為了繼續學習 只好再次學習VC﹐可惜目前進展緩慢啊。

居住省份﹕重慶市
對侯捷的建議﹕希望先生能在.net出爐後寫本書的3/e版﹐^_^
祝你快樂﹗期待你的回信﹗


 

 

傳送日期: 2001年8月25日 PM 08:30
侯老師﹕您好﹗
我是南京理工大學 OOO 的一名學生。感謝您對祖國大陸學生的愛護。希望不久的
將來﹐台灣島回到祖國懷抱的時候﹐來到南京來玩。也希望您能為祖國同一盡一份力。
衷心祝福您生活快樂﹗﹗﹗

 


傳送日期: 2001年8月26日 PM 05:41
主旨: 我下載您的電子書, 謝謝.
侯先生您好, 敝人於您的網站下載 "深入淺出MFC Second Edition" 電子書, 在此跟您道謝. 我自民國75年唸大學開始即閱讀您的大作(C, TSR, Assembly), 由於我並非就讀資訊科系, 因此這些書籍對我在資訊科技的啟蒙扮演重要角色, 也促使我走向資訊這條饒富樂趣與甘苦的路. 非常感謝您.
居住省份(臺灣讀者請寫縣市):台灣省台北縣

 

 

 

傳送日期: 2001年8月26日 AM 12:00
jjhou﹐您好﹗
請問侯先生﹐您的《深入淺出MFC》中的第六章中的 Hello MFC 程序該如何在
VC++ 6.0中把代碼敲進去呢﹖如果新建工程時﹐選擇 MFC Wizard【Exe】的話﹐
根本就生不成書中那個樣子﹐我請教了一些人﹐他們也說不清﹐麻煩您給解釋一下。
多謝﹗


●侯捷回覆:第六章是個純手工程式。第七章開始,才使用 wizard。

 

 

 

傳送日期: 2001年8月27日 PM 07:01
主旨: 有關 STL
侯先生你好:
由於研究的需要,我需要模擬有上百萬的甚至上千萬的封包
我利用 STL 的 list 來記載封包到達時間,當封包被處理過之後就 被 pop掉,
我的程式不斷的 針對 某一list push.back 和 pop.front ,
照理說,pop,fornt 應該會free 掉 memory(這是我的想法,不知對不對)
可是發現該程式佔系統記億體卻越趨成長,可以發現Win2000 是以硬碟當的虛擬記憶體來跑,造成我的程式效能低落很嚴重,
請問一下,有無解決的方法?很冒昧問你這樣的問題!!


●侯捷回覆
:我觀察了 SGI STL source,發現 list 的 pop_front() 會釋放記憶體。
其他的 STL implements 我沒有興趣追蹤,你可以自己看看(源碼就在你手上)。
我想,pop_front() 應該是要釋放記憶體的,否則說不過去。

 

傳送日期: 2001年8月27日 PM 02:42
主旨: Thinking in Java 2/e
侯老師您好:
由於上了Nicholas的課而認識了您
一時興起因而尋獲到您內容如此豐富的網站
期待這本的大作已久
如今獲知有中文版發行,
令初涉入JAVA領域的我感到欣喜若狂
拜讀幾篇譯文後,
深深感覺到之前買的那幾本都可以丟了
請問Thinking in java2何時付梓?
真的迫不及待的想看到了

雖然本身不是學C,但是在侯捷散文中看到的
卻是身處任何領域的人都十分受用
也希望您在百忙中,能再播下java的種子
正如同您在C中的耕耘一般
造福甫進資訊浩海的我們

 

 

傳送日期: 2001年8月27日 PM 01:15
候先生﹕
您好﹐讀了你的幾本著作﹐真是有相見恨晚之感。尤其佩服您的選材獨特的品味和娓娓而敘的筆調﹐您的書使我感到醍醐灌頂之功效。
當然溢美之詞也不必多說﹐相信太多與我有同感的人會給您寫信表達他們的感謝。而我寫此信的另一主要目的就是想請教您有關軟件工程方面的問題。
我是一個計算機專業的學生﹐剛從大學畢業﹐馬上要讀研。軟件工程是我的主要方向之一﹐我熱衷于編程但又不願停留在編程的層次﹐我想進一步發展但又感到不知從何作起。我感到軟件工程的學習太過抽象﹐請問對我來說應該學些什麼﹐應該怎樣學﹖
最後﹐也祝您能夠寫出更多膾炙人口的作品。

●侯捷回覆:我在研究所生涯中也選修過「軟體工程」。上課老師是資策會的軟體開發處長,整個修課過程是模糊乏晰(fuzzy :))、天馬行空、無味至極。從教學品質來看,我斷定這位先生沒有實務背景。

我現在這麼說,不是要否定「軟體工程」,而是希望告訴各位,這門課,這個技術,應該是實際參與過大案子的人才有所體會(不論教或學),而且師資和教材都非常重要。這種課絕對不要理論派,要的是實務經驗。一個案子拿到手上,該怎麼切割模組,該怎麼 documentation 自動化、build 自動化、version control 自動化、bug listing 管理自動化、有哪些優秀輔助工具可用…。軟體工程是一門實踐性很強的科目,理論無用(拿學位和學分可以)。

就算有很棒的老師,告訴你一個案子拿到手上,該怎麼切割模組,該怎麼 documentation 自動化、build 自動化、version control 自動化、bug listing 管理自動化、有哪些優秀輔助工具可用…,如果學生的基礎不到,他也是鴨子聽雷茫茫然。這不是多看書可以長進的。

大陸現在有一股軟件工程熱潮。我相信許多基礎不足火候不到歷練不足的人會跌得鼻青臉腫。

「我熱衷于編程但又不願停留在編程的層次」,這是不錯的想法,人總是希望往更高層次發展。但是要做大廚,不能不先從撿菜洗菜切菜開始;要練好功夫,不能不先從馬步運氣基本功開始;要管理企業,不能不先從基層認識開始(至少要有相當的「認識」)。我無法知道你的實務經驗有多少,不過你現在剛只是大學畢業,唔…。

「軟件工程的學習太過抽象﹐請問對我來說應該學些什麼﹐應該怎樣學﹖」軟件工程的確十分抽象,只有親身實踐的老師,才有能力使它具象,只有具備相當實務基礎的學生,才可能聲聲入耳化為具象。這沒有一蹴可及的法門,真的沒有。

軟件工程的另一部份涵括管理,可能包括人事管理,薪資管理,時程管理、甚至涉及心理學、領導統御學,這都不在我的討論範圍內。

 

 

 

傳送日期: 2001年8月27日 AM 11:31
侯先生你好﹐自從看了你學生李書良翻譯的《Windows95 編程指南》一書後﹐發現確實獲益非淺。但你還在此書的序中說Charlest Petzold 的 《Programming Windows95》同樣好﹐
於是想問侯先生﹐哪兒還有Charlest Petzold 的 Programming Windows95 書購買或下載。希望侯先生能在百忙中給我一個回應。

●侯捷回覆:學著使用網路搜尋引擎。

 

 

 

傳送日期: 2001年8月28日 AM 04:32
尊敬的候先生:
拜讀您的大作真是令人無比快慰的事,從事軟件已經好几年,從VB到Delphi到Java,一直沒有仔細研究C++,最近一個大項目要用到此工具,?推荐?了?本書,?我竟舍不得借給別人,真心感謝您!

 

 

傳送日期: 2001年8月28日 AM 08:11
侯先生: 您好!
常在您網站上留連,看了許多對於您譯筆風格的討論,主要是
關於英文字保留的做法,我支持您的做法,我的學歷是台東農校
初級部畢業,42年次,第一次接觸電腦時已快超過十大傑出青年
選拔的年齡限制,這樣的背景,讀您的技術書籍,如果可以有
'聞道的快樂',我想保留原文術語對於理解書中內容,有其
正面的幫助.我所有的電腦知識皆來自坊間販售的書籍,讀了許多
全譯本,有時看到某一中文名詞,無法立即在腦中浮起相對應的
'東西', 反而有隔霧看花的感覺.

最初是喜歡無責任書評的文筆風格而買您的書,之後買了
深入淺出MFC,COM本質論,深度探索C++物件模型供奉在書架上,
那些書超出我的程度了,之所以買,只因覺得高階的技術書籍
必須有市場支持,否則日後就沒好東西了.在讀了 C++ Primer
譯本之後,書架上的書終於有機會露臉,算是老天對我好心的
獎賞.

純粹由於偶然興趣學習電腦技術 (開始摸電腦時,我還是一家
小配電盤廠老闆),這一路讀來,興味盎然,卻沒想到由於景氣之
故,中年失業後,轉而以軟體維生(目前主要工具是Delphi,感謝
李維,錢達智,陳寬達,他們的書是是我的指導教授),人生真是際
遇難料.


●侯捷回覆:一本技術書,應該是對個人派得上用場,才會引發購買欲。您只因對作者的喜愛與支持,就買下了一堆一時無用的書,這真是叫身為這些書的作者的我感動呀。但我還是想,您有需要時再買,就好了。

人生際遇難料。嗯,人生際遇難料!也許哪天我們會見面。

 

 

傳送日期: 2001年8月28日 AM 10:00
侯先生您好﹗
《深入淺出MFC》中﹐第十五章的定制 Custom Appwizard 的最後一步﹐即 Build Top Studio Appwizard 以後﹐Output 窗口總是 "Making help include file...", 書上說﹕“集成開發環境激活了 MicroSoft Help Workshop﹐ 而且把它極小化﹔你得把它叫出來﹐讓它操作才行。”請您告訴我﹐怎樣把它叫出來﹐另外﹐如果要關掉﹐應該如何關掉。



傳送日期: 2001年8月28日 PM 06:22
我是台灣的一所科技大學的學生
在讀了你的深入淺出MFC 及深入Virtual C++ 和書評
介紹的Programming Windows With MFC , Programming Windows,
MFC Internals 使我對MFC SDK有了透徹的領悟 更可以運用自如

由於對MFC的Source Code有深入了解
所以對一些類別庫 可以再短時間內就可以上手 如BCB 的VCL 及 Qt

最近侯老師出的書如 Essential C++ , Effective C++, More Effective C++,
C++ Primer 和書評介紹的Inside the C++ Object Mode
The Design and Evolution of C++
Large Scale C++ Software Design

我都有在研讀 使我對C++的精神 有了徹底的領悟 對如何撰寫
大型程式有了很大的影響

最近再寫thread時 你介紹的
Multithreaded Applications inWin32
Advanced Windows 3/e
有很大的助力

有個問題想請問你

Acive x 及 Ole 有何差異
以及.NET 的功能是如何
我在市面上一直找不到  "ActiveX 控制元件徹底研究"
不知何處有賣





傳送日期: 2001年8月29日 PM 07:23
尊敬的侯先生﹕
我是一名剛剛從大學畢業的本科生﹐我的專業是電力系統自動化。我現在所從事的工作的就是設計電力系統自動化軟件﹐目前所使用的開發工具是vc,而且也正在看您的大作《深入淺出mfc》,我給你寫信不是想詢問書中的問題。而是我注意到﹐您寫這本書的時間是1997年﹐現在是2001年﹐已經過去了四年﹐我想軟件業應該有了很大發展﹐就拿我們公司來說﹐有的人用PB,有的用delphi,用VB的也有﹐最近borland公司的C++Builder5.0也受到很大的關注。我想問的是﹐這麼多開發工具﹐而且相比起來似乎vc最難﹐我還有必要學習vc嗎﹖我在學校裡學習過VB,還用C++Builder編過軟件﹐後來到公司來﹐又重新學習vc,一開始感覺非常的迷惑﹐現在學了兩個月了﹐感覺好了一些﹐但還是有很多不明白的地方。現在微軟推出了ms.net﹐又出了C#,還有sun的java,linus,覺得眼花繚亂﹐我該怎麼辦﹖有的人說﹐做軟件﹐工具是次要﹐重要的是編程的思想﹐可我想細節的地方還是不一樣吧﹐總之現在很迷茫﹐很冒昧給您寫這封信。我看到您的書上登了很多讀者給您寫的信﹐便很受鼓舞﹐我想您的讀者都把您當成良師益友了吧。最後祝您身體健康。

●侯捷回覆

Q : 我想問的是﹐這麼多開發工具﹐而且相比起來似乎vc最難﹐我還有必要學習vc嗎﹖
A : 評估之後,如果你認為你需要 VC 來幫助你完成工作,你就學 VC。否則就不必學。

Q : 現在微軟推出了ms.net﹐又出了C#,還有sun的java,linus,覺得眼花繚亂﹐我該怎麼辦﹖
A : 基礎紮實,學什麼都快。閱歷多了,就知道取捨。

Q : 有人說﹐做軟件﹐工具是次要﹐重要的是編程的思想﹐可我想細節的地方還是不一樣吧
A : 編程工具和編程思想,如一朝風月,如萬古長空。不可以一朝風月昧卻萬古長空,不可以萬古長空不明一朝風月