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

傳送日期: 2001年9月1日 AM 01:49
居住省份(台灣讀者請寫縣市)﹕廣東深圳
對侯捷的建議﹕ 我非常感謝您對我的指導﹐是您的書將我帶入了WINDOWS程序設計﹐謝謝﹗非常希望能拜讀您的每一篇大作。


 

傳送日期: 2001年9月1日 AM 09:59
主旨: think you for you job
> Mr. hou:
> i am a begineer of c++, in fact i almost nothing about it,
> but i decide to learn it well beacuse i like programming,
it is said that these who use c++ to make program is a true programmer.
> i have down your e-book, i think i can benefit a lot from it,
> you are so kind, you know so many young men of mainland show respect to you and what you do.
> anyway, you are my teacher from now on, i hope i can often write to you and get you teaching.
> with respect

●侯捷回覆:「C++ 程序員才是真正的程序員」?別扯了。這是一種封建思想。種族歧視者和狂熱激進派,都是令我避之唯恐不及的人,會說出「C++ 程序員才是真正的程序員」的人,身兼兩種性質 :)

 

 

傳送日期: 2001年9月1日 PM 01:24
> 居住省份(臺灣讀者請寫縣市):基隆市
> 對侯捷的建議:由同學的介紹買了你所譯的Primer 3/e,看了前言以及你所設立的網
> 站,學得很欣賞你的心胸,對於我目前的思維正是一記當頭棒喝!

 

 

傳送日期: 2001年9月1日 PM 02:49
捷哥:
我覺得您的多形與虛擬寫得很好啊!其中剖析的架構與觀念也適用於各種語言,如像Delphi、Java、Perl、Python、C#、Action Script,不曉得您有沒有想要把多形與虛擬Port到上面,另寫兩本「多形與虛擬 for Delphi」、「多形與虛擬 for Java」;比如說像Object Pascal有dynamic、inherited等關鍵字,就是C++沒有的。
哦!對了Object Pascal還有Meta Class的概念,C++沒有,在Persistence上面,作法會不一樣,Delphi沒有巨集,得用Meta Class才行。
怎樣?

●侯捷回覆:的確,我將寫一本《多型與虛擬 in Java》和一本《泛型技術 in Java》。以後會不會有《多型與虛擬 in C#》和《泛型技術 in C#》,則在未定之天。

 

 

傳送日期: 2001年9月1日 PM 03:22
侯捷老師﹕您好。
前段時間認真看了大陸機械工業出版社的〈設計模式〉一書﹐可能是我水平不夠﹐總不能領會該書的妙處﹐看完後除了累以外沒有感覺。您在網上對該書推崇倍至﹐您能告訴我該書的定位﹐適用場合﹐以及閱讀該書所需的基礎和方法嗎。
如果您能在您的網站上發表一篇〈設計模式導讀〉之類的文章﹐我想一定是普渡眾生的舉措。
我在amazon上看到一本〈Design Patterns Explained:....〉的書﹐說是解釋設計模式的﹐不知道您讀過沒有﹐有沒有電子版。
我現在正在攻〈Thinking in java>的英文版﹐有以Java為例的設計模式的書嗎﹖
謝謝。祝好。

●侯捷回覆:

《Design Patterns》一書,需要高階程序員才能有所體會,需要歷練過相當多、相當大程式的人才能有所體會。我自己也曾經歷很長一段「沒有體會」的過程。現在好些了。

我的確有興趣寫一《Design Patterns 導讀》,但對該書沒有體會的人,在僅僅一篇文章中依然不會有所體會。因此,我更有興趣的是寫一Design Pattern 導引》。但願 2002 年開始動筆(但時間上實在沒有把握呀)。

請注意,我把 patterns 譯為「樣式」,因為「模式」太通泛了,容易起誤會。術語必須有專一性。雖然,臺灣和大陸的《Design Patterns》中譯本都譯為《設計模式》,但截至目前吾志不改。我週遭有許多人稱 patterns為「樣式」(更多人直接稱 patterns)。

Bruce Eckel 有一本《Thinking in Patterns for Java》,尚未完成。
查書請至 www.amazon.com。

 

 

傳送日期: 2001年9月2日 PM 03:32
居住省份﹕廣東省
對侯捷的建議﹕
尊敬的侯捷先生﹐
首先對您公開自己作品電子版表示欽佩﹗我很佩服你以電子版免費下載公開自己作品的舉
措。在眾多作者中﹐你差不多是第一人。我看到你的電子版作品也是沒有任何限制的﹐在此我建議您對您的電子版作品加一些約束﹐如禁止打印等。
Thank you for your work!

●侯捷回覆:Bruce Eckel 的 Thinking 系列書籍都是免費在網上公開。和他相比,我太微小。

《深入淺出MFC》當初著眼就是希望免費給大陸讀者看(臺灣讀者買的到,也普遍有購買能力),所以沒有任何限制。將來時機成熟了,觀念進步了,經濟改善了,能夠以很便宜的價格(大約紙本書價的 1/4)銷售電子書時,我會把我的每一本書都做成電子書,並鎖死列印功能。讀者因此在電子版和紙版之間多一種選擇。市面上有各種破解密碼的工具和奇怪人士,列印功能的鎖定其實是防君子不防小人。當然,我相信,我的讀者都是君子。

 


傳送日期: 2001年9月2日 PM 02:31
侯老師:
        您好!
        感謝您在百忙之中打開這封信!我想??您的?件??,可怎么努力也不成功!
    只好求助您本人!
        ??您是不小心之?到了您在《程序員》的文章,寫得很經典!然后理所當然的上了您的鏡像网站!可我不知道您什么時候?出?新的文章!有??感覺很失落!所以才想到??您的?件??。
    不好意思,現在在看您的《深入淺出MFC》不?是第一版,看了?次,還有一些不懂的地方!我會努力的!
    ??您對我和其他想成為优秀程序員的人?的經典的文章!我有更多的期待,您能?足??

 

 

傳送日期: 2001年9月3日 PM 12:07
侯老師您好:
從網站上下載並拜讀了您翻譯的 Thinking in Java2e,不論在文章內容的深入淺出,以及您翻譯的文筆方面,都是我所看的Java書中的首選。
我看過國內不少 Java 的翻譯書,不知道是出版社為了搶時效或是翻譯者太不負責任,往往一本很不錯的巨著,被翻得不知所云(有時候我還得將中文翻回成英文才能猜到它的意思),因此閱讀過您的翻譯,叫人忍不住拍案大呼過癮,唯獨至今只能看到第四章,不免心癢難耐,我也下載了原文檔,雖然看原文對我而言並不會造成太大障礙,但總比不上看中文來得一氣呵成,所以引頸企盼老師能盡快定稿出版,我一定第一時間讓他出現在我的書架上。   :)

有幾個問題想請教侯老師,我向來都是自修學習程式語言,對於某些高階的語言有些瞭解,
有一些物件導向的概念,但沒學過C++,在這種情形下,如果我直接跳過C++而學Java是否合適?我前一陣子去上了一些 Java 的課程,感覺還不至於聽不懂,但畢竟沒有很多實戰經驗,
心裡面感覺不是很踏實,因此想請教侯老師的意見。

另外,以目前觀之,似乎 Java 隱隱然有取代 C++ 而成為物件導向語言主流的趨勢,老師您的看法呢?在時間不是很多,沒辦法把兩者都作很好的學習的情況下,
老師您會建議從哪一個入手比較好?
祝  安康

●侯捷回覆:就目前觀之,Java 和 C++ 是 OOPL 的兩個實用主流。將來誰比較突出或吃香,誰知道?太過關心這類問題是沒有必要的,只要你精通其中一個,你就能夠快速精通另一個(我是指單純的語言而言。一般所說的 Java 其實泛稱了太多東西)。

學習一樣技術,我們往往有這樣的迷思:選擇最受就業市場歡迎的(工作機會最多)的技術。然而當我們預見Java和C++在短時間(十數年內)都將是學術界、工業界的重要工具時,精熟其中任何一種語言,遠比猶豫不決於取捨,重要太多太多了。

《Thinking in Java 2e》很快就要開放至第7章。

Q:「對於某些高階的語言有些瞭解,有一些物件導向的概念,但沒學過C++,在這種情形下,如果我直接跳過C++而學Java是否合適?」
A: 合適。學習 Java 並不需要以 C++ 為前導。

 

 

 

傳送日期: 2001年9月3日 PM 01:37
侯先生﹕你好﹗
不知該稱呼你為侯俊杰還是候捷﹐你在《深入淺出 MFC》中的分身術把我弄暈了。

20分鐘前我剛剛讀完了你的這本書﹐用時15天。用句公道的話講“
是本不錯的書﹐但很貴”。我認真的看完了書中的每一頁﹐哪怕是讀者來函。
我大概學不出那些狂熱分子的感激涕零的話語﹐只是想冷靜的告訴您這其中
都出現了什麼。畢竟﹐象您這樣純以技術見長的書﹐不論厚度價錢來參照﹐
我讀過了超過15本。

我其實並不像你在書中對大幅源碼解釋的那樣去想﹐想想看﹐我在
.cpp、.h中看到的不是更直觀﹐用紙書來裝載大量的代碼在任何其他出名的
前輩那裡幾乎看不見﹐舉其一﹐Kruglinski的《VC++技術內幕》就不是這樣。
您﹐佔用了我太多的地方﹐或許說金錢才對。

全書對mfc內部的挖掘很深﹐這是我讀過的微軟出版物中不曾見識的﹐
但你別指望我能把其中一段一段誰調用誰記得清楚﹐看看代碼﹐也許在實際
工作中老闆對我說﹐你去找找CMyTwentyFitstDialog的第19曾做了什麼﹐那時
我倒想問問他要做什麼﹐可惜不敢。

全書我讀的很透﹐只用了很短的時間﹐要不是因為別的原因﹐10天不到
便可完成任務。其中第一章我的印象最深﹐第三章最不好懂。後者你的讀者都
談到了﹐為什麼這樣。我想談談前者﹐在學習程序設計的早期﹐我接觸的是
比較容易入門的VB﹐象您所說﹐她是以快速簡單著稱的﹐並不能做到Win32編程
的透徹分析﹐後來陸續的接觸了VFP﹐C﹐Asm﹐Pascal,學彙編是因為C中調用的緣故﹐
也是為了編病毒﹐可惜沒有成功。雖然C++承襲了C的語法﹐但在編程模式上
有了質的改變﹐窗口﹐內存﹐資源等等﹐我根本無法適應。呵呵﹐可笑的是﹐
為了滿足最大的學習野心﹐進入C++領域開始的竟然是mfc﹐您知道我對純Win32
api的程序有多大的嚮往嗎﹐那遠比我得到一份五子棋的算法大的不知多少。
您的第一章恰巧就解釋了一個簡單的win32api程序的原理﹐不錯﹐很細緻﹐
擊節高歌。

讀書就不能不談到文筆﹐實話是﹐很佩服。我很想不通﹐一個過了而立
之年的前輩怎麼保持如此的詼諧。這樣﹐在我讀書的左右不會因為煩瑣的代碼切換
而枯燥。但我覺得這樣的地方多了一點﹐默應該幽在最恰當的地方﹐才會產生
好的效果﹐精簡是最好的催化劑。

你的有一個觀點我不大同意﹐現在我來替VB說說話。在vb6開始﹐微軟正
讓這個軟件無所不能﹐包含了windows的? W雋翔e?□ゝ荒譟噹掑D闋齷□鏡畝Е?br>﹐而淪為所謂的快速開發工具。單就使用api而言﹐就會花去一個面嚮市場軟件的大
部份時間﹐大的驚人。既然支持了api就不可避免的擁有了對窗口函數﹐內存分配﹐
打印管理﹐圖形處理的幾乎所有windows編程領域﹐或許強求ぴ談﹐VxD和Dll她做不出。
我曾經做一段純粹api打印的程序﹐代碼超過200行。要是說快速﹐也許就只是ActiveX
方面﹐確實快的多﹐內部卻一概不知。在我給別人上的程序入門課中﹐一般都是
VB開始﹐沒有必要先去會Basic﹐認識對象最重要。VB把對象的概念做了少
許改動﹐但是量不是質。

說著說著就跑題了﹐上面大都是損人的話﹐先生請別介意﹐畢竟﹐我是一個
嗜書如命的傢伙﹐比您更喜歡喝咖啡。現在正拌著出書熱發痴的夢想著出一本真正
面嚮出學者的書﹐但絕不是一本初級的書。其實買您這本書的原因之一是借鑒其中
的語言魅力﹐容我說﹐真的很好。

另外﹐作為一個您的忠實讀者的請求﹐請您教教我如何在編程環境下改變win32(PE)程序
的圖標。謝謝您﹗
好了﹐我在哈爾濱﹐您可能聽說過﹐大陸北方的冰城﹐也許是您最遙遠的
讀者了。您應該高興﹐您的書真? 暮苡屑際醯姆枷悖□藝獗呶諾攪耍?br>

●侯捷回覆:(原信有些亂碼,無法閱讀亦無法轉換)。

(1) 書看這麼多了,學問做這麼久了,怎麼還說出「但你別指望我能把其中一段一段誰調用誰記得清楚」這種話。書是拿來建立觀念、檢索查閱用的,不是拿來背記在腦海裡的。這本書是要大家對 Application Framework、Dynamic Creation、Serialization、Message Map、Message Routing 建立起具體概念,從而知道自己所寫的 MFC applications,到底怎麼運行。要給讀者具體概念,我就得給出具體程式碼(源碼說明一切),畢竟抽象思維對絕大多數人而言門檻太高。如果你認為程式碼很多,浪費了你的錢,你不該買這本書 — 它並沒有用保鮮膜包起來,你在書店站3分鐘就可以清楚看到它有多少程式碼在其中。
(2) 「想想看﹐我在.cpp、.h中看到的不是更直觀」,你有這個能力,很好,你更不該購買這本書,應該直接看 MFC sources,那是免費的,就在你的 VC++ CD 內。
(3) 讓我告訴各位,《深入淺出MFC》對於編程實務,只有「無形」的幫助,沒有「有形」的幫助(如果所謂「有形」就是教大家使用 100 種 classes,做出 200 種 features,完成300個 dialogs!@#$%^)。無形就是無所不在。只要對MFC的運作胸有丘壑,撰寫 MFC applications 只不過是 Classes/APIs 查閱功夫而已(和查字典沒什麼兩樣)。
(4) 我從來不曾貶抑 VB 的實業價值,別給我戴帽子。
(5) 禮貌的熱情讀者,對於一本為他帶來幫助的書,去信感謝作者,你卻說出「我大概學不出那些狂熱分子的感激涕零的話語」這種明顯帶輕蔑的話。我不欣賞你這種讀者,也不希望你成為我的讀者。

 

 

 

傳送日期: 2001年9月3日 AM 08:05
主旨: Hello, I want to ask a question about " Inside The C++ Object Model "
Hi,
I am a C++ programmer who is reading the book " Inside The C++ Object Object " which has been translated into Chinese by you. But I meet a question which I cannot understand. I think you can help me, so I write this letter to you. The question is followed.

In NRV optimization of the book at Page 67, it is said that a class can be NRV optimized by compiler only if the class has a explicit copy constructor. Why? In the example, there is the bitwise copy semantics so that complier can make a default memberwise initialization. In the other hand, NRV optimization according the book only calls the default constructor, not calling the copy constructor. Oh, I cannot understand it.

I'd like to hear anything from you.
Best regards,


●侯捷回覆:請看先前的討論。C++ Object Model 答客問 (3) - NRV 最佳化 2000.03.25

 

 

 

傳送日期: 2001年9月3日 PM 02:53
侯捷先生﹕
您好﹐在簡體版本還買不到的時候﹐下載了您的《深入淺出MFC》﹐以下是我的個人資料﹐供您參考。我不是一個鐘情于技術的人﹐但是很喜歡您的文章和文筆。
祝 健康平安﹗
居住省份﹕北京

 

 

傳送日期: 2001年9月3日 PM 03:08
主旨: I appreciate your works!
About two years ago i bought your bool "
Dissecting MFC" first edition in simplified chinese. I enjoy the contents in it very much. Today i just downloaded the "Dissecting MFC" second edition from expert.csdn.net/jjhou. I think it is my obligation to inform you. I really appreciate your works very much including your professional attitude, your translation style, etc. I hope you will do better in the future. In the end, I wonder whether you will translate "Mfc Internals" in the near future.
Sincerely,

●侯捷回覆:我對《MFC Internals》的翻譯工作沒有興趣。面對 MFC 架構,我鑽研至《Dissecting MFC》所表現的那個程度為止。再下去太過繁瑣,對編程實用價值而言已經太偏太專,所以我沒有興趣翻譯《MFC Internals》。書很不錯,但我沒有興趣譯它。

 

 

 

傳送日期: 2001年9月3日 PM 04:47
> 居住省份(臺灣讀者請寫縣市):台灣省台北縣
> 對侯捷的建議:
> 因我只是初學者,功力尚淺,所以還未能有任何想法可供你參考,不過,
> 看過你在RUN PC雜誌的專欄,回答讀者的來信,十分令人感佩,你不但熱
> 心誠懇且虛懷若谷,我想這點對任何的學習者來說,都是相當窩心的,而
> 我認為這也是自己應時時勉勵自己的學習態度。

 

 



傳送日期: 2001年9月3日 PM 08:32
侯老師﹕您好﹗
很冒昧給您寫信。
我是一名剛畢業的大學生﹐剛參加工作不到兩個月。以前在學校學的都是基礎知識﹐對編程認識很膚淺﹐用C編程時很少用標準函數庫﹐程序也是很簡單的小模塊﹐現在開始學VC++﹐用的書是《Visual C++ 6從入門到精通》〈美〉Michael J.Young著。感到VC++的編程就是MFC類的調用﹐就像用別人做好模塊搭積木般﹐而要用VC就要掌握MFC類﹐不像C編程時用掌握的標準語句就可以寫程序﹐
感覺很不自由
而我也看到很多程序員對MFC類並沒有掌握﹐也可以寫出不錯的程序﹐是否
學VC並不用學MFC類﹖學VC有沒有快速上手的途徑﹖
如有時間請賜教
祝生活愉快


●侯捷回覆:你要某種自由,你就喪失某種復用性(reusibility)。你要完全的自由,你就完全喪失復用性。而復用性正是 "Software IC" 最最強調的,也是軟體工業發展到現在,最有價值的地方。所謂「C編程時用掌握的標準語句就可以寫程序」﹐這句話錯誤,你不是時時用著 C runtime library 嗎?只不過 procedural based proramming 讓你覺得很簡單,Object Oriented programming 讓你覺得不適應而已。這個不適應過程,每個人都有(我也有,而且不短)。

學VC而不用MFC,就好像使用 C++ compiler 來開發 C program一樣。只有所謂「學MFC」而沒有所謂「學VC」 — VC只是一套整合環境(IDE),其中有 compiler, linker, wizards, editors...。這些工具的學習,一天就夠了(好吧,兩天)。

ps. 以後不必說 MFC 類,因為 MFC 就是 Microsoft Foundation "Classes"。

做學問,沒有快速上手的道理。快速上手的,都不紮實。

 

 

傳送日期: 2001年9月4日 PM 02:25
侯杰同志﹕
你好﹗我是華中科技大學計算機學院的研究生﹐仰望你大名久已﹗﹗聽說你要到武漢來講課、交友﹖我太興奮了﹐我期待與你交心﹐請你告訴我具體的時間、地點。其次﹐你應該加快在大陸出書的 計劃﹐好多書我都等的冒青煙了﹐希望早日拜讀

 

 

傳送日期: 2001年9月4日 PM 04:55
侯老師﹕
您好﹗今年買了一本《深入淺出MFC》﹐雖然還沒有看完﹐可是覺得非常好。現在微軟出了C#﹐它和VC有什麼不一樣的地方﹖如果在。NET裡面有了VC﹐那以前的MFC是不是學了就沒有用了﹐這個問題一直困擾ぴ我﹐因為我害怕白浪費了精力﹐所以您能否在百忙之中回答一
下這個問題﹐以解我心中疑惑。十分感謝﹗﹗﹗
一個北京的大學生

●侯捷回覆:面對一個向來重視「回溯相容」的公司(微軟),我樂觀以對任何新變化。一個好公司,必須確保客戶的投資不會因為新產品的推出而從此成為泡影。這樣你了解我的意思嗎?在Windows環境上開發程式,透過 .net,可以,不透過 .net,也可以。透過 .net,就是新的 programming model,不透過 .net,就是現有的 programming model。

這個世界上,有無以數計以 MFC 開發的應用程式,需要維護。有無以數計的程式員,喜歡繼續在他們熟悉的環境和模式中開發程式。世代替換,需要一段時間。Windows 從 16 bits OS 進化到被市場普遍接受的 32 bits OS,經過了多少時間?這樣你了解我的意思嗎?如果 .net 和 MFC 對你都是全新的,究竟學哪一個比較有「勝算」?啊,我甚至不一定敢說是 .net。

 

 

 

傳送日期: 2001年9月5日 AM 10:12
侯俊杰先生﹐您好﹗
居住省份(台灣讀者請寫縣市)﹕現在北京工作﹐老家。云南省﹐建水縣
對侯捷的建議﹕ 你的書﹐華工出的太差了﹐印刷質量太差﹐(一版好多的印刷錯誤)買的又貴。為什麼不找家更好的出版社來出版。在大陸機械工業出版社﹐清華大學出版社還不錯。
謝謝。

●侯捷回覆:以我對我的責任編輯周筠女士的了解,她會很樂意看到您對她的批評。他們犯錯,但他們努力改進。我自己也犯錯,我也努力改進。我找不到一家不犯錯的出版社,就連找一家面對錯誤積極改進的合作夥伴,也不是很容易。其他出版社肯定也有很好的編輯,目前我的這位,很好,我們合作愉快。

臺灣出版界朋友最近給了我一封信:

我們會對某些議題作進一步的計劃和部署,
而幾乎每一家出版社都提到希望能爭取您的著作版權,

臺灣出版界另一位朋友給了我另一封信:

最近去了幾趟大陸,幾家跟我們合作的出版社都提到你,
可見你在大陸業界也享有極高的知名度,這當然也是
對你作品的肯定.

只是他們都很納悶,為什麼你的書,不是與一線(前十大)
的出版社合作?這是我在大陸所得到的訊息, 供你參考.

我的回答嘛,唔,讀者來函傳送日期: 2001年5月26日 PM 06:30 的回覆說得很清楚。



 

傳送日期: 2001年9月5日 AM 11:07
侯捷先生﹕
我是廣州中山大學計算機系的學生。近日有幸讀到您的《深入淺出windows MFC程序設計》(第二版)一書﹐部份內容正為我學習VC++時所苦惱無處求解之處﹐非常的感謝您能夠寫出這本書。
目前看到的是您的書的電子版本﹐書中的源代碼均無處看到。正如您書中所說﹐原始碼說明一切﹐不知道何處有您的該本書的源代碼的壓縮文件下載﹖打擾之處﹐還請見諒。期待您的回信。




傳送日期: 2001年9月5日 PM 08:12
尊敬的侯前輩﹕
  您好﹗我是一個和Windows 打交道一些時間的學生。可是問題多多﹐買書不少﹐可內容無涉及Windows98 與 MS-DOS 關係的﹐且學生對Windows98 的引導過程亦迷霧團團﹐對於前面的兩個問題﹐望不吝指教。
  最近﹐有幸拜讀了您的《深入淺出MFC 2e》對很多問題實有茅塞頓開之感﹐只是本人知識有限﹐不少概念不甚知解﹐如 Handle 實為何物﹐至今不祥﹐望賜教或推薦有關的書于學生。望得指點﹐不勝感激﹗

●侯捷回覆:handle 就是一個…唔…號碼牌。你擁有某個號碼牌,你就擁有該號碼牌所代表之物的擁有權。將 handle 譯為「句柄」,是一種錯誤譯法,無法望文生義。handle 該譯為什麼才好?不要譯最好。

 

 

傳送日期: 2001年9月4日 PM 02:52
居住省份﹕上海
剛從學校畢業的時候,從事windows下使用VC SDK進行開發.早就聽說您的大作是一本相當好的MFC學習材料,從各種論壇上經常可以看到別人的推薦.由於工作上的原因和時間問題,一直沒有機會好好學習MFC,最近由於工作上的需要,嘿嘿,對新進員工進行VC培訓,所以正好自己也好好學習一下MFC,以前只是很簡單的用了一些最基本的類,大都是直接使用Windows API進行編程.
很感激你對這些編程做出的工作,我只能代表我和我的同學感謝你.真的非常感激.特別是你能夠提供免費的電子版的下載.

對侯捷的建議﹕
沒什麼可以多說的了,我會在看完您的大作以後再寫信給你,希望那時候能夠提出更有參考價值的意見. 真心希望你能夠給我回信,雖然我知道你一定很忙,但是這對我一個程序員來說會是莫大的鼓舞.


 

 

傳送日期: 2001年9月6日 PM 05:04
侯老師;
自從我看過您的"MFC四大天王"後,就想把這四本書買齊,可惜的是,一直沒找齊,最近買到
<<Programming Windows with MFC>>/2e的英文版,可是不知道為甚麼沒看過這書的中文版,這麼優秀的書籍,為何就是沒人翻譯?不知道您是否知道有<<Programming Windows with MFC>>/2e的中譯本嗎?如果沒有,不知道您是否會去翻譯呢?

 

 

傳送日期: 2001年9月6日 AM 11:16
侯老師:
我是北京的一名醫學生,正在拜讀您的譯著<inside the c++ object model>.但我有一處不明:
此書第三章84頁處: "sizeof x 的結果為 1",這裡base class 的大小為何不受Alignment的影響.
讀您的書是一種樂趣,我盼望您的回復.

 

 

傳送日期: 2001年9月6日 PM 09:46
jjhou 你好﹕
今天給你發了2封信﹐顯得很.....﹐我是初學者﹐但我還是買了lippman的這本
書(請別見笑)﹐以下是我的疑問﹕
我在拜讀你的<<深度探索c++對象模型>>時﹐對書中第33頁的一句話不太明白﹕
“將za或b的地址﹐或pp所含的內容(也是個地址)指定給pza﹐顯然不是問題﹐
一個pointer或一個reference之所以支持多態﹐是因為它們並不引發內存中任何
“與類型有關的內存委託操作”﹔會受到改變的只是它們所指的內存的“大小和
內容解釋方式”而已”

以上的“與類型有關的內存委託操作”這句話是什麼意思﹖

對於“改變它們所指的內存的“大小和內容解釋方式””我也想不明白﹐
我認為(就用書中的例子吧)當把b的地址指定給za時﹐這時za所指的內存
的“大小和內容解釋方式”不應發生變化﹔你看書中的例子﹕
ZooAnimal*pz=&b﹔
............... //省掉若干行
((Bear *)pz)->cell_block﹔

若發生變化﹐那麼在第2句經過cast之後﹐也發生了變化(根據Lippman對cast
的解釋)﹐這一前一後的兩次變化不知有什麼意義﹖此其一﹔其二﹕若在第1句
就使pz所指的內存的“大小和內容解釋方式”發生了變化﹐那麼我們就可以
直接﹕pz->cell_block.(編譯時會產生error﹐若發生了變化﹐就不應有error)
而不需要經過cast之後再訪問cell_block﹔所以真正的“大小和內容解釋方式”
的變化是發生在cast之後。因此我對文中的“za所指的內存的“大小和內容解釋
方式”應發生變化”產生了疑問。

還有一個問題﹕
#ifndef POLYNOMIAL_H
#define POLYNOMIAL_H
#include<iostream.h>

class polynomial{
friend ostream & operator<<(ostream &,const polynomial &);
friend istream & operator>>(istream &,polynomial &);
public:
polynomial(char* =" ");
polynomial(polynomial &);
polynomial & operator=(polynomial &);
polynomial & operator+(polynomial &);
polynomial & operator-(polynomial &);
polynomial & operator*(polynomial &);
polynomial & operator/(polynomial &);
polynomial & operator+=(polynomial &);
polynomial & operator-=(polynomial &);
polynomial & operator/=(polynomial &);
polynomial & operator*=(polynomial &);
char * get()const;
set(char *);
private:
typedef struct subpoly{
char symbol;
int seriesdata;
char chdata[10];
int pointdata[10];
int flag;
struct subpoly *nextptr;
}SUBPOINT,*SUBptr;
SUBptr headptr;
................ //省略
};
#endif

#include"polynomial.h"
#include<iostream.h>
#include<assert.h>
#include<stdlib.h>

ostream & operator<<(ostream &out, const polynomial &output)
{int i=0;
SUBptr currentptr;
currentptr=output.headptr;
..............................//省略
}

編譯時會產生以下error﹕
Compiling...
expolynomial.cpp
D:\own class\多項式\expolynomial.cpp(8) : error C2065: 'SUBptr' :
undeclared identifier
D:\own class\多項式\expolynomial.cpp(8) : error C2146: syntax error :
missing ';' before identifier 'currentptr'
D:\own class\多項式\expolynomial.cpp(8) : error C2065: 'currentptr' :
undeclared identifier
D:\own class\多項式\expolynomial.cpp(9) : error C2440: '=' : cannot convert
from 'struct polynomial::subpoly *const ' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or
function-style cast
................
不知是什麼原因﹖

題外話﹕
你的譯作<<the c++ standard library>>什麼時候在大陸出版﹖

Thank you very much!!!!


傳送日期: 2001年9月6日 PM 10:17
我最近拜讀了您的新作《深度探索C++對象模型》一書(華中理工大學出版社)我現在有兩個地方不是很清楚望指點一二。
1。第32頁的中間﹐“編譯器必須確保如果某個object含有一個或一個以上的vptrs,那些對象的vptrs的內容不會被base class object初始化或改變”--此時不可能有多個vptrs.
2。第53頁﹐“不要Biteise Copy Semantics!”有四種情況不會展現出這種不良特性。這四種情況是只要有一個滿足。此類就不會展現這種特性嗎﹖
比方說﹐下面這個類會不會有這個特性﹖
class Word{
  word(const String&);
  ~word();
  ...
private:
  int cnt;
  String str;
  char *newstr;
}
其實這個類就是第52頁的後一個例子加上了一個char *成員變量。
謝謝。

 

 

傳送日期: 2001年9月7日 AM 07:03
侯捷先生﹕
一個類(如c)派生于兩個均有虛函數的類(如a,b)﹐c自己也有一個虛函數。請問此虛函數放在兩個虛函數表中的哪一個?例﹕

class Ca
{
public:
  virtual af();
};

class Cb
{
public:
  virtual bf();
};

class Cc:public Ca,Cb
{
public:
  virtual cf();
};

多謝侯先生。

 

傳送日期: 2001年9月7日 AM 10:16
jjhou﹐您好﹗
我下載了你的《MFC第二版》﹐我在寫此信時還沒有看完你寫的書。
我寫此信的原因主要是我想跟你談一些我的一些想法。

首先﹐我先自我介紹一下﹐我姓郭﹐你可以叫我小郭(大家都這樣叫我)﹐
我的編程水平並不高﹐我深愛Internet﹐平時也攻擊過幾個站點(我並沒有做
任何破壞性工作﹐只是獲得root權限等﹐看看他們的系統配置而已)﹐我算不
上一個黑客﹐只能是一個Cracker﹐我沒有寫過一個黑客代碼﹐修改別人的代碼到
是很多﹐我主要是去一些國外的一些站點上下載一些c或perl的代碼﹐拿回來
仔細研究一下﹐有很多時候我都沒有讀懂程序﹐因為我的彙編語言很差﹐就試ぴ在
linux下編譯並攻擊一些站點﹐如果站點的管理員管理的不好的話﹐那他們就倒霉了。
我最熟練的編程語言也就是c和perl了﹐我在大學三年級的時候﹐我曾經試ぴ去
學習過C++的基本語法﹐和關於面嚮對象的編程思想﹐我自認為學習的還很徹底。也
曾經試ぴ使用VC++ 4.0去寫過一些很小的程序﹐後來覺得VC很難學就放棄了﹐改用
使用Delphi,或C++ Builder 吧﹐又覺得他們太高級﹐沒有接觸到Windows的心臟。
於是也放棄了。到現在我始終還是認為VC是最好的東西。

到現在我的程序還只能運行在linux或Unix下﹐始終不能在Windows下跑﹐我實在有些不甘心﹐我現在想從頭開始學習VC﹐我去書店看過很多關於VC的書﹐我認為你寫的書是最好的一本﹐首先你的書是為程序員寫的﹐不是為了賺錢﹐現在書店的書很氾濫﹐他們都是為了money而寫書的﹐而且他們寫的書寫的他太爛了﹐簡直不能讀。於是﹐我只是在書店翻翻他們的書而已﹐從來也沒有買﹐其實還是我囊腫羞澀。

電子書刊太貴了。你的書我也沒有買﹐因為我從網上下載到了你寫的書﹐我覺得挺好的。我還在讀。通過我讀你的書﹐我受益非淺﹐書寫的很明瞭﹐廢話少﹐很接近國外的科技書刊。你的書我還沒有看到核心的部份﹐我寫了這麼多﹐我主要想看一本這樣的VC的書﹕1﹐介紹VC的History.2.VC的IDE。3.從最簡單的例子開始介紹幾個實例﹐讓讀者能全面了解MFC的核心。4.我也許寫c或perl程序多了﹐我很想知道MFC每一個project中的任何一個文件﹐每一行﹐每一個字的作用﹐和他們之間的關係。5.將一些基本的類在MFC的環境下的各種不同的使用方法﹐比如﹐CDailog類如果不使用Class Wizard的情況下如何使用﹐等等很多小的控件的多種使用方法。

好了﹐我說了這麼多﹐沒有別的﹐就想跟你聊聊。
再見吧﹐有機會再聊



 

傳送日期: 2001年9月7日 PM 04:48
侯老師:
昨天我冒昧地向您求教了一個問題,今天可能又要麻煩您了.我在看<COM本質論>(潘愛民 譯)時有一處不明:
該書第1.5節"把接口從實現中分離出來",作者定義了一個類
class __declspec(dllexport) FastStringItf{
  .........
  FastString *m_pThis;
public:
  ........
  ~FastStringItf(void);//解構函數
  ........
};

其中解構函數定義如下:
FastStringItf::~FastStringItf(void){
  delete m_pThis;//? 此句是否多餘?
}
我個人認為依照<inside the c++ object model>中對解構函數的解釋,"delete m_pThis;"一句是不必加的,為此我在VC6.0下做了一個類似試驗,結果加入此句反而出錯,不知這是否是書中的錯誤,請您指教. 盼望ぴ您的回復,謝謝!

 

傳送日期: 2001年9月7日 PM 11:00
主旨: 讀者提問
> 候先生,您好!
> 我是您的大作:《MFC深入淺出》的讀者。您對MFC的Application Frameword 的見解十分獨到。 讀后有一種豁然開朗的感覺。
> 可是,作為初學者,我還是有一點不太明白,同時您的書中也好像
> 回避(抑或是遺漏)了這樣一個問題:
> Application Object作為globle variable 生成以后,在WinMain
> function中,Application Object分別new了Framewnd,CView object和
> 其他object.所以這些object是在堆中的。 但程序結束時,卻沒有delete掉,
> 至少我找不到哪里有調用。
> 請候先生解釋一下。
> 謝謝,再見。

●侯捷回覆:為什麼要以
「回避」這樣的負面字眼來質疑別人?有話要說、有問題要問,就不能誠誠懇懇地說、誠誠懇懇地問嗎?

《深入淺出MFC》六大模擬程式並沒有考慮 clean-up,只考慮 construction。如果要考慮 clean-up,有許多細節要注意,不是單單加幾個 delete 就完結。書上那些模擬程式規模很小,一結束,所有記憶體全部還給系統,有沒有 delete 是一樣的,因為引發的 memory leak 問題瞬間即逝。當然,就好的 programming style 而言,應該時時注意 clean-up。

我正在發展 MFCLite 3.0,對 MFC有完整的模擬(除了視窗系統改為文字介面),其中便將 clean-up 納入考慮。此程式將出現於《多型與虛擬 in C++》2e 中,做為 application framework 的實作範例,並從其中解說各種 OO 設計思維與常見的 OO design patterns。

 

 

傳送日期: 2001年9月8日 AM 12:52
主旨: 迷時師度悟了自度
侯先生你好
我姓□名□,拜讀你的大作『迷時師度,悟了自度』受益良多
而且我時常閱讀,一讀再讀,我和你一樣25歲退伍工作至今已
一年,我也是非本科系出身,我是『冷凍空調』系畢業,我從事
『數位相機』的嵌入式系統工作,我的工作一年裡我前半年就是一邊學
c語言,一邊寫一些function code,後半年才用Build c++開發一個工具
,我因為在 開發Build c++時 使用到一些window的API以及Thread 的使用
,所以我對於window端的Read Time OS滿有興趣的,以及window 的API
使用也是很有興趣,你可以介紹幾本書給我嗎?謝謝

 


傳送日期: 2001年9月8日 AM 10:38
Dear jjhou,
I'm one of your fans. Couple of days ago, I went to listen to your address in ITRI/CCL where I am working at.
To sum it, I've immersed in Computers since I was in senior high school, then
I chose it as my major in college and postgraduate.
What I concerned is that long-term convention of structural programming makes me difficult in object-oriented-style
programming.
Empirically, could you recommend me some hints for this?
Suggestions:
to address more, and capture passioned people to promote programming and research..............
to express your self-experience to the audiences (not just programming, but philosophy)..........

●侯捷回覆:從 procedural-based programming 到 OO programming,確實不是一條平坦的路。我和大家的資質相同,歷程相同,回首從前,我說,沒有捷徑。多寫,多思考,多體會,似遠實近。

 

 

傳送日期: 2001年9月8日 PM 07:19
侯捷老師:你好,我想向你請教一個問題.我以前學過C語言,現在由於一些原因,必須儘快學會VC++,可是我買了一些這方面的書,剛剛看的時候還可以,可是到了後面就越看越不明白,特別是代碼部份,根本不知道是什麼.我想請教一下,怎麼樣才能儘快學好VC,我該看一些什麼方面的書籍,能不能介紹幾本給我.謝謝了.

●侯捷回覆:「到了後面就越看越不明白,特別是代碼部份,根本不知道是什麼」,因為你不清楚MFC 和 your application 之間的關係,你不知道來龍去脈。

太多的人學習大傢伙(我是指 application framework),都是瞎子摸象般地瞎學,不能系統性地從根本學起。摸到大象的腿,說大象好笨重;摸到大象的鼻子,說大象好靈巧;摸到大象的屁股,說大象好有彈性;不幸摸到大象的大便,說這傢伙好臭。

學習 MFC 的根本核心之前,還需要很多前備基礎(Message-based, event-driven model, C++, Windows OS foundation...)。「我想請教一下,怎麼樣才能儘快學好VC」。一句話總結:沒有捷徑。唯一的捷徑就是從基礎開始一步一步來。似遠實近。至於何謂「從基礎開始一步一步來」,見侯捷網站上的諸多文章。



傳送日期: 2001年9月8日 PM 11:16候捷先生﹕
你好﹐我現在不知道往哪方面發展﹐請你指點一下好嗎﹖我同學聽老師說程序員現在工資低﹐是不是﹖VISUAL C++怎麼學﹐應學哪些﹐說一下﹐可以嗎﹖
祝天天快樂
做一個最有名的程序大師

 

 

傳送日期: 2001年9月9日 AM 03:40
主旨: 高手請指教
> 侯捷先生您好:
> 我在經由他人的介紹看到您綱站,
> 看到您的戰績真是夠嚇人的,
> 看到您發表的文章,真是好阿!!!
> 我對於c語言是剛剛入門,
> 請您多多的指教。



 

傳送日期: 2001年9月9日 PM 07:38
侯老師﹕
你好﹐我學習C++有近兩年的時間﹐但現在只還只回簡單編寫學習方面的小程序﹐總認為不太方便編程﹐因為編出來的程序僅用一次。我現在學習MFC﹐請問如何學習﹖另外﹐我想問一下﹐在WINDOWS編程中應從哪些方面開始學習呢﹖
如果你有時間﹐請你找一個小點的WINDOWS或MFC程序讓我閱讀﹐自己領會編程技巧。
在此﹐我先向你表示感謝。
祝你﹕工作順利﹗

 

 

 

傳送日期: 2001年9月9日 PM 10:15
> 居住省份(臺灣讀者請寫縣市):高雄市
> 對侯捷的建議:
> 不知道您是否記得您曾經到過中央大學演講過
> 那時候這個活動的承辦單位是中央資工系學會
> 主要負責同學的名字叫 □□□(他真的很認真負責 ^^)
> 而我是那時候的系學會長
> 雖然那時候您的演講我一時抽不開身沒辦法參與
> 不過後來聽說來聆聽的聽眾為數不可謂之少 :)
> 在中央大學同學們參與活動力這麼不足的情況下
> 我真的吃了一個大驚 :p
> 您的名字也讓留下深刻的印象
>
> 我本身對於java比較熟
> 所以最近常有同學要我推薦一本java的入門書
> 因為我本身就是看了Thinking in java這本書入門的
> 所以我知道這本書真的寫得很好
> 可是往往同學們對於原文書都會有一定程度的排斥(當初我也排斥的蠻嚴重的:p)
> 最近聽同學說您要做這本書的翻譯工作
> 頓時我就知道當您的這本書付梓之後
> 您會因為我的介紹而會多一些版稅的收入 :p
>
> 雖然話是這麼說
> 不過我真的對於從事著作以及翻譯工作者有著很大很大的敬佩感以及尊敬感
> 這方面的肯定我相信您應該已經從兩岸各地獲得很多的支持了
> 不過我還是想重複大家說過的話
> 謝謝您對著作以及翻譯工作的貢獻
> 這是全華文世界讀者之福 :)
>
> 因為深入淺出MFC這本書名氣實在是太大了
> 所以小弟我也就download下來 打算好好的研讀一番 :)
> 同樣的我也很期待Thinking in Java這本書的出版
>
> 祝您 著作愉快 翻譯神速 :p

●侯捷回覆:中央大學那場演講,我的記憶深刻。很多人呀,還有從新竹去的。

《深入淺出MFC》講的是 application framework 的深層原理。
你不在 Windows/MFC 這個環境上作活,恐怕不容易看下去。

我目前正在發展 text mode MFCLite 3.0,把 application framework 的許多重要性質以簡化方式開發出來,包括 dynamic creation, serialization, MVC (Model, View, Controller), 以及任何視窗系統都需具備的 message routing。我將在其中整理出許多 OO Design Patterns。不論使用哪一種語言,哪一種平台,這些觀念都適用。目的是讓大家在 2000 行程式碼內,看到一個除了 UI 以外的具體而微的 application framework。這些東西將放在《多型與虛擬 in C++》書上,同時,明年我
打算寫一本《多型與虛擬 in Java》

我相信,《Thinking in Java》2e 中譯本完成,能夠幫助許多許多學習者。這是我最大的欣慰。


 

收件者: jjhou@ccca.nctu.edu.tw
傳送日期: 2001年9月10日 PM 03:46
侯捷老師﹕您好。
在垃圾書充斥書店﹐您能找到經典並為之翻譯﹐誠難能可貴﹐我佩服您的程序設計的技能﹐更敬仰您的精神。我學習程序設計﹐已經有半年多的時間﹐我很努力(自我感覺)﹐對C++充滿激情﹐但是﹐我走了一個誤區﹕沒有掌握C++(比大致了解要強一點)就去學習VC++MFC設計﹐其結果可想而知。自拜讀了先生的《深入淺出MFC》﹐又拿起了C++教程﹐感覺精進良多。現在又拿到了《深度探索C++物件模型》才看不多﹐卻愛不釋手﹐我很有信心成為程序設計的高手。
居住省份﹕遼寧省
對侯捷的建議﹕
大陸的程序設計不能沒有您﹐希望您能將您所譯的每一本書都介紹給大陸的讀者。
教師節向您致以我最高的敬意﹗
2001﹐9﹐10

 


傳送日期: 2001年9月10日 PM 09:02
侯先生您好,
我是初學C++(主要是要學Visual C++)的超級初學者,
我並沒有任何的程式基礎,
所以在2個月前決定要學VC++時,
就去軟體公司問他們的程式設計,
看他們有沒有什麼推薦的好書,
結果他們一致推薦我由您所翻譯的《深入Visual C++ 4.0》,
結果我花了兩個月的時間去找這本書,
到任何網路書局、各大書局詢問卻得到已絕版的訊息,
真是令我失意到極點,^_^
有幸於今日發現侯先生您的網站,
當然要把握住此一機會...ccc
請問您有沒有《深入Visual C++ 4.0》的存書呢?
因為軟體公司的程式設計們都通通推薦這本書是必看的,
所以...我真的好想買這本書唷!
希望這僅剩的希望...呵呵!
他們還有推薦C++ Primer唷,
不過他們是建議我對C++(VC++)有點底子再去讀這本書會比較好點,
所以我這會去買這本書,在近日吧,
不然到時又絕版我就又要飲恨了......
深深期待僅剩關於《深入Visual C++ 4.0》的希望...^_^
希望日後您能推出更豐富更實用的VC++系列!

●侯捷回覆:《深入Visual C++ 4.0》這本書已經絕版很久很久囉。

 

 


傳送日期: 2001年9月11日 AM 02:21
居住省份(臺灣讀者請寫縣市):台北市
對侯捷的建議:
稱不上建議,只是有幾句話
身為研一新生的我,只有FORTAN基礎的我
在研究所的第一個任務---學會Visual C++
心中不惶恐,倒是有點興奮...可以學習新的事物!!
於是,我一頭栽入了茫茫書海
也聽說了"一定要去看侯捷老師的書"云云...(那是第一次聽到侯老師的名子)
說實話,我還分辨不出哪本書寫得好(感覺都不錯)
然而
在書店裡幾次的翻閱之後
我對侯捷老師的書的印象是------寫得好用心啊
一個不懂書中知識,即可感覺到的用心
如今仍然迷茫
先學Visual C++ , 還是C++
若先學Visual C++,會不會因為不會C++而步履闌珊呢
若先學C++,那要用什麼編譯器(介面)呢
而又該從哪本書下手呢?
相信我會找的出路

沒給建議
倒是說了一些像是初學者該說的話

我亦肯定侯老師的好書
再接再厲為台灣貢獻點什麼......





傳送日期: 2001年9月11日 AM 08:03
侯先生﹕
您好﹗﹗我下載了您的書﹐ 現在剛開始看。我今年21歲﹐目前在學校上學﹐我們學校是西北輕工業學院﹐在陝西省咸陽市。。
您的書真好﹗﹗﹗



 

傳送日期: 2001年9月4日 AM 10:03
候先生:
你好﹗
我是一名大陸的讀者﹐久慕《深入淺出MFC》的大名﹐今日得以拜讀﹐在欽佩該書得同時﹐更為先生的高風亮節所打動。先生此舉無疑將促進VC++的發展﹐更是未來開放時代的典範。希望先生將來有更好的作品問世﹐並祝先生身體健康﹗

 

 

傳送日期: 2002年9月11日 PM 02:07
Hello jjhou,
居住省份(台灣讀者請寫縣市)﹕ 廣東省
對侯捷的建議﹕
這本書非常好﹐能將複雜的mfc一層層的解剖出來﹐確實做到了深入淺出。
我即將赴英國留學﹐要不是行李超重﹐我一定會將印刷版書帶上﹐讀這本書
我能體會到讀書的樂趣﹐要是所有的教科書都是您寫的就好了﹗

●侯捷回覆:這真是對我最大的恭維。祝你留學順利。有空寫信來聊聊在英國的日子 :)




傳送日期: 2001年9月11日 PM 01:57
不好意思,想請問您一個問題(可能有許多人問過了),
就是有關您的著作"多型與虛擬"這本書,現今市面上是否已
無法透過購買的方式取得? 而是否有其它的方式可以取得?
例如:電子書?? 或者...
您的讀者敬上.

●侯捷回覆:《多型與虛擬舊版(第一版)已絕版。新版(第二版)預計於 2001 年底完成,有重大改變。

 

 

傳送日期: 2001年9月11日 PM 03:37
主旨: Question about VC++

> Dear Sir,
>
> I am a new comer on VC++ window Programming and
> I have a question about MFC windows Programming.
> If all the stuff are for windows, how can we run the applications on Linux?
> The Lib should be replaced by Linux lib for sure.
> But how about the implementation method (or the whole structure) ?
>
> My company is going to develop some devices and we use VC++ to write the
> APs.
> After finished, we need to implement the APs on Linux.
> Is this hard or is there any other way to do?
>
> Thanks for reading my mail and look forward to having your command.
>
> Have a good day!
> Ginger ling

●侯捷回覆:如果你考慮跨平台,可選用跨平台的 application framework
有 source level 的跨平台,也有 binary level 的跨平台。VC++/MFC 無法跨平台。

 

 

傳送日期: 2001年9月11日 PM 04:18
我是您的新讀者﹐一直在找一本關於MFC的好書﹐終於讓我找到了。謝謝侯老師的辛勤工作。
居住省份﹕陝西省
對侯捷的建議﹕希望老師有更多的好書出版。

 

 

傳送日期: 2001年9月11日 PM 09:27
侯俊杰先生:
你好﹐我又來打攪您了。
在<<深入淺出MFC 2e>>的129頁中﹐有
#define DECLARE_SERIAL(class_name) \
DECLARE_DYNCREATE(class_name) \
friend CArchive& AFXAPI operator>>(CArchive& ar,class_name* &pOb);
對此﹐我由幾點疑問。
opetator>>函數的參數是否有問題﹕class_name* &pob
我認為這個函數的存在也沒有必要﹐因為CArchive的三個友元函數﹕
friend CArchive& AFXAPI operator<<(CArchive& ar,const CObject* pOb);
friend CArchive& AFXAPI optrator>>(CArchive& ar,CObject* &pOb);
friend CArchive& AFXAPI operator>>(CArchive& ar,const CObject* &pOb);
(我認為後兩個函數的參數同樣存在著問題)已經足夠讀檔和寫檔的要求。你不可能希望
CArchive從文檔中讀出一個圓或線條﹐它只可能從文檔中讀出一個類名﹐然後從類別型錄中找到其對應的CRuntimeClass對象﹐調用它的CreateObject()函數動態產生一個類對象(如一個圓)﹐最後再對這個類對象進行序列化。

●侯捷回覆:你的問題相當深入。你屬於《深入淺出MFC》的頂級讀者 :)

1. 首先回答參數型別(parameter type)的問題。參數 class_name*& 的意義是 (class_name*)&,意指(例如)ar >> pMyList 改變的是 pMyList(指標)本身,所以必須 pass by reference。所以,上述型別完全正確。

2. friend CArchive& AFXAPI operator>>(CArchive& ar,class_name* &pOb); 絕對有必要,倒是 CArchive的三個友元函數可以不要。

3. 三個 inline 函式(你沒列出來),當然是絕對不能少的:

inline CArchive& operator<<(CArchive& ar, const CObject* pOb) // (1)
{ ar.WriteObject(pOb); return ar; }
inline CArchive& operator>>(CArchive& ar, CObject*& pOb) // (2)
{ pOb = ar.ReadObject(NULL); return ar; }
inline CArchive& operator>>(CArchive& ar, const CObject*& pOb) // (3)
{ pOb = ar.ReadObject(NULL); return ar; }

以上 (2) 用於諸如 CObList::Serialize(); 內部讀取檔案資料時 — 此時只知道讀的是 CObject object(沒有 class name),需以 CObject* 承接。

衍生而來的,我要特別對你說的是,究竟什麼時候使用 ar << myList; 什麼時候使用 myList.Serialize() 呢?亂用會死得很慘。注意這句話:object 的 operator<<, operator>> 等動作係以指標為基礎,以避免建構所帶來的額外負擔;如果面對的是 embedded objects,則應直接使用其 Serialize()。

這問題很深入,也很繁瑣。如果你不懂,別再問了,空中教學是不可能的。我會在目前正撰寫的《多型與虛擬 in C++》2e 中徹底說明清楚。


 



傳送日期: 2001年9月12日 AM 04:41
主旨: Question asked in 2001/08/21 10:37pm
> 侯老師:
> 您好! 我是一個您網頁的忠實讀者. 目前在矽谷一家晶片公司, 從事
> 自家 real-time embedded os 的研發工作.
>
> 在八月份讀者來信裡 (2001/08/21 10:37pm), 有位大陸讀者問到在 com
> 裡, 該由誰來負責管理 interface 參數的記憶體? 是 client or server? 敝人有
> 些心得提出來分享: 他的問題可以在 "Small Memory Software" 一書中 p.38 -
> p.47 頁獲得解答. 那幾頁使用了一個 small interface pattern, 教導讀者使用
> 三種不同方式來處理 client-server 間的共享記憶體. 這個 pattern 的應用面
> 很廣, 並不侷限於 object-oriented 領域. 據我實際經驗, Microsoft 在他的 ndis
> 界面裡就運用上了. 例如 TCP/IP driver 會先 allocate 一塊 memory 給封包使
> 用. 當傳資料時, TCP/IP driver 透過 ndis interface 把這塊 memory 傳給下層
> 的 miniport driver 處理. 為了效率, ndis 是以指標傳送代替整塊 memory 搬移.
> 在這例子中 TCP/IP 是 server, mini-port driver 是 client. 同樣的, import driver
> 把從 DMA I/O memory 讀到的封包傳給 TCP/IP, 此時角色互換, miniport 變
> server, TCP/IP 變 client. 當然在 multi-process/multi-thread 系統裡, 想要記憶
> 體共享, 還有行程同步, 執行優先權的問題要考慮.
>
> 算一下, 認識您的文章也有九年了, 我可算是您骨灰級的讀者吧. 閱讀您的作品
> 真是人生一大樂事, 可惜, 海外要購買您的書真是蜀道難啊. 臺灣的讀者真是有
> 福, 可以隨時 "存取" 您的高水準作品無後顧之憂. 在此我向您為提昇中文技
> 術書籍的努力致敬.
>
>
> 祝您十月份大陸行順利


●侯捷回覆:非常感謝您的解說。
這真是很好的討論氛圍。很高興收到這樣的來信。

去矽谷多久了?一切順利嗎?我今年寫作才滿十年,您已看了我九年的文章,
那是大約「虛擬記憶體」或「PC 記憶體管理與多工」或倚天雜誌「Windows 系列文章」
的時期了,是嗎?


 

傳送日期: 2001年9月12日 PM 03:00
侯教師﹕
您好。我已經下載了您最新出版的《深入淺出MFC》。
  我是從CSDN上認識您的﹐我畢業于一個比較差的學校計算機專業﹐大學三年竟然沒有C/C++的課程(是不是很奇怪)。所以我大學出來這後一直用DELPHI作開發﹐已有近兩年了﹐DELPHI功能的確很強大﹐然而我水來有限﹐很多東西無法領會﹐每當接近WINDOWS系統的地方總理解不了﹐找來的資料又都是用C/C++描述的。而且很多軟件業的最新思想總是率先用C/C++來闡述﹐作為一個軟件開發人員而不懂C/C++語言的確非常憒憾﹐所以我決定要走近C/C++﹐走進C/C++﹐我也曾自學過C﹐對OOP也有一定了解﹐不知道你的這本書對我會不會太深了﹐有機會我一定去買這本書﹐包括您的其它很多作品﹐我都要盡力去收藏。
居住﹕廣東省深圳市

 

 

傳送日期: 2001年9月12日 PM 03:18
侯捷先生﹕
你好﹐我叫□□□﹐是南京河海大學的一名再讀碩士﹐拜讀您的深入淺出MFC的書受益非淺﹐為平時查閱方便﹐現下載您的電子版一用﹐本人再次表示感謝。

 

 

 

傳送日期: 2001年9月12日 PM 08:51
侯先生您好:
我想請教您有關於STL的一個問題。我正在寫一個建立Binary Space Partition Tree的程式,需要
一個可排序、在任意位置新增及刪除元素的容器,因此採用了set(實際上是multiset)。我的演算法排序完接著要選擇位置最中間的元素,但是set提供的是bidirectional iterators,所以必須把iterator一路從頭跑中間,然而這種動作不也是set的member function -- find所須。因此我的腦袋裡亮起一個問號,難道它也是如此一步一腳印地進行。而自行查看source code的結果實在是看不懂(我看的是BCB 5的\rw\tree.h & tree.cc),因此想請教一下侯先生它是否真的一步一步迭代過去?如果不是的話,請問有什麼好方法可以改寫set讓我也能快速取出中間元素?


●侯捷回覆:set 內部使用 Red-Black tree,這是一種很不錯的 search tree,「搜尋」正是它的拿手。當然不是循序搜尋 :)

set::find() 只是轉呼叫其底層的 RBtree::find()。

SGI STL 源碼是所有STL實作版本中,最有組織、最好看的。我的新書(TASS : The Annotated STL Sources)將對它有詳盡的分析。此書已完成,但為了cross-refer to《多型與虛擬 in C++》和《泛型技術 in C++》,必須再等一陣子才出版。


寄件者: 同上
傳送日期: 2001年9月15日 PM 04:13
主旨: Class Template Partial Specialization是否可以只針對某一Class Member?

侯先生您好:
首先非常感謝您能撥冗回答我上次的問題,我也相當期待您的新書。這次我想請教您有C++的
template語法的問題。請問template partial specialization可以像template specialization
只針對某一class member嗎?

如有一個幾何學的向量類別
template<int N, typename T>
class CVector
{
public:
  T Components[N];

  template<typename U>
  const U Length() const;
  ... // other members
};

可以只給予CVector<1, T>::Length()的partial specialization而不須給予整個類別
CVector<1, T>的partial specialization嗎?還是說為了定義CVector<1, T>::Length(),
就必須定義整個CVector<1, T>?

●侯捷回覆:何不自己試試?書上都有語法說明。C++ Primer 3e 就寫得很詳細。

寄件者: 同上
傳送日期: 2001年9月15日 PM 06:36
主旨: Class Template Partial Specialization的Constructor問題

侯先生您好:

抱歉又來打擾您了。這次我想請教您有關class template partial specialization的
constructor寫法。

如有下列template class及其partial specialization

template <typename T, typename U>
class C
{
};

template <typename T>
class C<T, int> // partial specialization of C
{
public:
  C();
  void foo();
};

template <typename T>
C<T, int>::C() {} // error !!

template <typename T>
void C<T, int>::foo() {}

當我在BCB5下編譯時會產生'C<T, int>::C()' is not a member of 'C<T, int>'的錯誤訊息,
然而C<T, int>::foo()卻可通過編譯器並且正常執行,請問正確的寫法應為?
另,在VC6編譯時發現它並不支援class template partial specialization,畢竟以軟體的眼光
來看,它也頗有年歲了。

●侯捷回覆:VC6不支援class template partial specialization,是眾人皆知的事實。建議你在練習partial specialization 之前先看看侯捷網站上的 C++ 標準與實作之間

你所寫的碼,語法是正確的(C++ Primer 3e, p862有個類似例子),
但 VC6[x], BCB4[x], G++2.91[o]。目前對 C++ features 支援最好的是 GNU C++。

 

 


傳送日期: 2001年9月13日 PM 01:48
主旨: iter 的算數運算是否不可用於 class list 上呢?
侯老師好:

我是 C++ Primer 的讀者, 不知是否有人提出相同問題,
於老師的網站上的作品勘誤(errata)區,
C++ Primer 題解本中找不到有關我問題的解答,
故冒昧打擾老師一點時間, 望請海涵. 題解本的 P113 頁,
練習 6.12 的解答對 list<int>::iterator iter 做算數運算( ++iter ),
將整個程式 compile 之後, 於 run-time 時期異常終止,
不知是否我的觀念錯誤...?
可否請老師賜教? 謝謝!!

●侯捷回覆: iter++ 和 iter-- 皆可用於 std::list 身上。有些書上說 std::list 的 iterator 不能使用算術運算,這所謂「算術運算」意指 iter+5, iter-7 這樣的運算。

 

傳送日期: 2001年9月13日 AM 11:31
在您的大作中提到RTTI,但我為何不能用一個case語句來實現﹐或者MFC的手法究竟有何高妙之處﹖

●侯捷回覆:當然可以在程式中以 switch case 來判斷物件的型別,但這造成程式碼維護性大大降低。見 More Effective C++, item31.

 

傳送日期: 2001年9月14日 AM 01:47
jjhou﹐您好﹗
請問怎樣才能使一個應用程序生成的文件只能被生成它的程序打開﹐而不能被其它的應用程序打開使用﹐例如我用premiere生成一個項目文件a.ppj﹐怎樣才能使a.ppj只能被生成它的premiere打開﹐而不能被其它的 premiere.exe打開﹐謝謝﹐請賜教

●侯捷回覆:相當困難。牽涉到作業系統層面。
而且,你這個問題沒有界定清楚。
沒有時間為你多想,抱歉。

 


傳送日期: 2001年9月14日 AM 01:28
主旨: Windows 95 系統程式設計 - 虛擬機器與 VxD 程式設計
> 候老師您好,
> Windows 95 系統程式設計 - 虛擬機器與 VxD 程式設計
> 經過多年, 終於在網路上找到這本書.
> 剛開始在您的網站上看到中英文都絕版的消息. 有點傷心, 但不意外.
> 最近聽說這本書在松崗有您的中文版, 我馬上跑遍全台中大大小小的書局.
> 但是也都找不到.
>
> 今天去了很多網路書店, 國內國外地找. 也找不到.
> 最後在您的站上找到 PDF 檔. 真是謝謝您了.
>
> 為了把 VxD 和 WDM 學得精, 我都快把 98DDK 和 95DDK 給 K 完了.
> 其實我的主力是組合語言, 所以 VxD 也一直都是使用 Win32ASM 來寫.
> 而我能找到的資料都是 C / C++ 的. 包括這本書也是.
> 程式語言只不過是外表的招式, 實際使用起來, C 和 Assembly 或是其它語言,
> 對我們都沒有差別, 不是嗎?
>
> 我的 Modem 還在 DownLoad 您的 PDF 檔. 在這裡, 讓我再謝謝您一次吧!

●侯捷回覆:很多讀者來信詢問《Windows 95 系統程式設計 - 虛擬機器與 VxD 程式設計》這本書是否還有得買。此書已絕版,很難買,不過我熟識的書店朋友手上還有一些。我會在列出購買辦法,為讀者做個服務。




傳送日期: 2001年8月14日 AM 10:16
主旨: Essential C++
Dear sir,
我是一個C/C++的初學者,在研習"Essential C++中文版"第二章時,發現了一個問題,不知老師是否有空幫我解答疑惑?問題如下:

在書中第20頁,倒數14/15行中,說到"這裡會產生編譯錯誤 / 此處為隱性退離點...沒有return 述句",底下的文章又說明了編譯器捕捉得到這個問題.但是根據我Trial run後發現,不論該處有無return true述句,一概都可以編譯成功,而且執行亦正確??

我使用兩種編譯器(VC++ 6.0 / Mingw compiler 2.95.2-1)所得的結果都一樣.不知老師是否有空幫我解答疑惑,謝謝!!

以下為原始碼,請參照.

#include <iostream.h>
#include <stdlib.h>
using namespace std;
bool fibon_elem(int , double &);
bool print_sequence(double);

bool fibon_elem(int pos, double &elem)
{
  if (pos <= 0 || pos > 1024)
  {
    elem =0;
    return false;
  }
  elem =1;
  double n_2 = 1, n_1 = 1;
  for (int ix = 3; ix <= pos; ++ix)
  {
    elem = n_2 + n_1;
    n_2 = n_1; n_1 = elem;
  }
  return true;
}

bool print_sequence(int pos)
{
if (pos <=0 || pos >1024)
{
cerr << "invalid position: " << pos
<< " -- cannot handle request!\n";
return false;
}
cout << "The Fibonacci Sequence for "
<< pos << " positions :\n\t";
switch (pos)
{
default:
case 2:
cout << "1 ";
case 1:
cout << "1 ";
break;
}
double elem;
double n_2 = 1, n_1 = 1;
for (int ix = 3; ix <= pos; ++ix)
{
elem = n_2 + n_1;
n_2 = n_1; n_1 = elem;
cout << elem << (!(ix % 10) ? "\n\t" : " ");
}
cout << endl;
// 這裡會產生編譯錯誤
// 此處為隱性退離點...沒有return 述句
// return true;
}

int main()
{
int pos ;
double elem;
while( pos < 1024)
{
cout << " Please enter a position : ";
cin >> pos ;
if (fibon_elem(pos, elem))
{
cout << "element # " << pos << " is " << elem << endl;
print_sequence(pos);
}
else
cout << "Sorry! Could not calculate element # " << pos << endl;
}
system("PAUSE");
return 0;
}

 

 

傳送日期: 2001年9月15日 PM 09:44
jjhou(候捷先生):
你好﹐很高興能在2001年的金秋獲悉你的大名﹗
我以前用過VB﹐DELPHI等﹐當時我生活在小城市﹐用以上軟件編些數據庫已綽綽有餘。但當我想到上海去謀發展的時候﹐我發現我是多麼的幼稚﹐我以前認為沒有必要使用C++這種難度比較大的編程語言﹐上海的需求打破了我的這一美夢﹐因為上海最需要的人才是C++跟JAVA等。於是我開始學習C++﹐我學過C﹐所以進度很快﹐可一個月後﹐我發現我停滯不前了﹐推究原因﹐可能是沒有老師的指點﹐沒有好書的誘導。一天﹐在網上查詢的時候﹐忽然看到有很多C++好手都甚為推崇你﹐我開始還不以為意﹐可看到你的《深入淺出MFC》時﹐就發現你果然不同一般﹐相信在IT界你的聲名與人格可與文學界錢鐘書先生篦美﹐我原做你忠實的讀者兼學生﹗
按您的要求﹐特附上本人資料﹕OOOOOOOOOOOO﹐至於對您的建議就是你能否給我這個初學者些許啟示。

致以我最真摯的祝福﹗

●侯捷回覆:錢鐘書先生人格多麼崇高,他將所有版稅全部捐贈給清華大學,成立「好讀書」獎學金。這點我是萬萬不及的。他的行止與成就也是我萬萬不及的。請千萬別這麼比擬。

過去以來,讀者將我比擬為文學界、藝術界…的前輩大師,每每令我發窘。不否認是不行的,否認了,又好像真當回事。固然這些都是讀者的錯愛,但實在令我發窘。

 

 

侯先生﹕您好﹗
我是日前在您的鏡像網站上下載了您的《深入淺出MFC》的一位讀者。當時我沒多留什麼言﹐想必您已經不記得我了吧。
我現在是一名在讀研究生﹐西南交通大學計算機應用專業。原來本科學的是機械專業﹐實在是因為沒有前途﹐上班幾年後又進校讀書。不知這種情況在台灣多不多見。
說實話﹐當時在《程序員》雜誌上看到您的文章時﹐我並沒看出您的高深(我原來是個外行﹐不知您在台灣的大名)。可自從我下載了這本書後﹐看了兩章﹐我才覺得您真是大家。我以前從沒見過誰能把技術書籍寫得如此生動﹐既有
英文原版的精髓﹐又有中國傳統文學的意境。
我一直都對中國的傳統文學很感興趣﹐特別喜歡讀古文。不過由於一些原因﹐大陸的我們這一代已經很少人能寫出帶古漢語味道的文章了。不過我覺得台灣在這方面卻保存的很好﹐這是不是在經濟發達以後﹐對傳統的一種回歸呢﹖
由於我才入計算機這行不久(以前只能算是computer fan吧),看到您對編程﹐系統等了解如此之深﹐甚為羨慕。看了您書的前言後﹐又覺得您的性格和我的某些方面頗為相似﹐真想和您交個朋友﹐不過還是叫老師好一點(在看了您的書以後﹐我已然將您當作我的老師了)。
我現在剛入學﹐好多事沒有頭緒。我的導師準備把我帶向軟件工程方向﹐我最近在網絡上四處瀏覽﹐想找找有關資料﹐但仍覺不詳。您是此方面專家﹐很想請您指導一二。在當今internet如此發達之際﹐軟件工程到底研究方向是何方。對於我這樣一個跨專業學習的人來說﹐應該掌握哪些知識才能真正達到研究生水平呢﹖同學告訴我﹐學好OOP﹐C++﹐Java就行了﹐可我看見的各個IT公司招人﹐都有一大堆條件﹐深為迷惑﹐難道有關網路方面的東西我就不用學了嗎﹖
羅嗦了一大堆﹐真是不好意思﹐打擾您了﹐但還請您百忙中能給我一說﹐不勝感激。


●侯捷回覆:何謂英文原版的精髓」?《深入淺出MFC》的原版就是中文,沒有「英文原版」這東西。

軟件工程,見「傳送日期: 2001年8月27日 PM 01:15」的侯捷回覆。

 

 


傳送日期: 2001年9月14日 PM 12:26
主旨: 請教兩個 visual c++ 程式設計的技術問題.
侯先生 您好
拜讀您的大作後, 非常欣賞與佩服你在電腦專業方面的深厚功力.
是否可向您請教兩個 visual c++ 程式設計的技術問題 ?

1). 在我的View object (xxxView.cpp)中由於擺放非常多的handlers(menu commands)
以致出現source lines > 64k的警告(warning code: C4049). 有何技巧可避開此種錯誤 ?

2). 在View.cpp中可透過GetDocument()來取得Document object之pointer, 但在Doc.cpp中要如何
取得View object之pointer ?

謝謝您能不吝指教 !

●侯捷回覆:回答第二個問題。Doc 中有一個 data member CPtrList m_viewList;,可由此找出與此 DOC 相關的所有 views。見《深入淺出MFC》2e 繁體版 p467, 簡體版 p348。

 

 

傳送日期: 2001年9月15日 PM 09:46
侯老師﹕
我是北京中國科學院自動化所的博士生﹐24歲。我剛開始學習VC,
今天在網上搜索到您的主頁﹐發現裡面的《深入淺出MFC》對我這樣的初學者很有益﹐
雖然是繁體字﹐但絲毫不會影響閱讀。
真的很感謝您的free e-book,希望您能出更多更好的作品。


傳送日期: 2001年9月15日 PM 09:47
後先生:你好!
我是你的重視讀者.並且是一隻c++菜鳥.我很想知道什麼是句柄.很多書都閉而不談!請告訴我!

●侯捷回覆:handle 就是一個…唔…號碼牌。你擁有某個號碼牌,你就擁有該號碼牌所代表之物的擁有權。將 handle 譯為「句柄」,是一種錯誤譯法,無法望文生義。handle 該譯為什麼才好?不要譯最好。

 

 

傳送日期: 2001年9月15日 PM 09:48
侯捷先生﹕你好﹗
我是你忠實的讀者﹐不管是你翻譯﹐還是自己編寫的書籍。因為通過這些書籍﹐我感到能夠學習你的思想﹐同時加快了我對技術的深入了解。非常感謝你﹗
對於技術方面的問題﹐我非常信賴你。因此想向你咨詢一個問題﹐希望你百忙之中抽出時間﹐解答我得問題。謝謝﹗
我需要進行驅動程序的開發﹐Device Driver,WDM模型﹐但是作為一名新手﹐特別是大陸非常缺乏好的書籍(入門的書籍﹐就像是你所寫的《深入淺出MFC》那樣的書籍)﹐能夠幫助我理解開發原理﹐進行有效率的開發。
所以想向老師請教如何著手﹐需要看看那些好的書籍。
問題可能比較幼稚﹐見笑了。
謝謝﹗
祝身體健康﹗

●侯捷回覆:Walter Oney 所寫的 VxD 書籍和 WDM 書籍,是你最棒的選擇。



傳送日期: 2001年9月15日 PM 09:49
尊敬的侯捷先生﹕您好﹗
早就知道您的大名﹐也聽說過你的許多巨著﹐但很抱歉﹐我並不是您的讀者﹔雖然我也是一名IT業的人員﹐但今天與您交流的並不是計算機方面的知識。我是看了您的簡歷及放在主頁上的 羅伯.佛勒斯特的《The Road Not Taken》這首詩後才下決心給您寫這封信的﹐這首詩以前我也看過﹐但沒想到能出現在侯捷先生的主頁及人生經歷上﹐我真的很欣賞您及您的人生﹗
對了﹐忘了告訴您﹐我是東軟的一名員工﹐而且是新員工。對未來我還感到有點茫然﹐但我一直在想追求這樣一條路“I took the one less traveled by, and that made all the difference”﹐如果侯捷先生能給我一點啟發的話﹐那本人不勝感激。

●侯捷回覆:寧昂昂若千里之駒;勿泛泛如水上之鳧,與波浮沉
10月份我將到沈陽東軟講課三天。如果你來聽課,請來找我。

 

 

 

傳送日期: 2001年9月15日 PM 03:37

> hello,
> I am from hong kong.I am going to find some informaton about autorouting
> technology to get the shortest path by using Visual C++. Could you give me
> some information and suggest?
> Thanks a lot,
> joseph

 

 


傳送日期: 2001年9月15日 PM 02:00
侯老師﹐您好
我最近在研究保護模式的程式開發。昨天在www.jjhou.com上看到您曾經著過一本
《記憶體管理與多工》的書。但這本書從來沒有在大陸出版過﹐旗標書局似乎也查不到
這本書。所以懇請您告訴我在哪裡還在出售這本書﹐多謝﹗祝好

●侯捷回覆:這是9年前的書,我想你不可能找到它了。

 

 

傳送日期: 2001年9月16日 PM 03:20
侯sir:你好﹗
我是你的崇拜者之一﹐正在拜讀您的大作《深入淺出MFC》﹐我遇到一個問題
就是﹐我在不斷看書的時候﹐我無法用VC開展編程﹐就象老虎遇到刺蝟似的﹐不知從何處下手﹐好痛苦﹗
另外﹐聽說你的翻譯大作《INSIDE THE C++ OBJECT MODE》已經在大陸面世﹐我曾經自學過C++﹐但效果不是很好﹐不知這本書我買了是否會後悔﹐盼指教﹗
感謝您在百忙之中閱讀我的信﹗

●侯捷回覆:買了一本自己看不懂但聽說很好的書,讀者反應有兩種。一種是隱約感覺書很好,只是不適合自己目前的閱讀基礎,決定適當時機拿起來再看。另一種是破口大罵,罵爺爺罵奶奶,罵出版社罵作者。

我只能告訴你,你說的那本書很棒。至於
「不知這本書我買了是否會後悔」,我不知道呀。

 

 

傳送日期: 2001年9月16日 PM 05:43
我是大陸的學生﹐現在在中國科學技術大學讀書﹐我在八月份的假期內看了您的大作《Dissceting mfc》﹐使我對MFC有了更深一層的理解﹐謝謝您。
我對開發一些較大的頊目還很不了解您能不能推薦一本有關這方面的書﹖謝謝。
您忠實的fans

●侯捷回覆:《Large Scale C++ Software Design》。這書可不好看。


傳送日期: 2001年9月16日 PM 12:19
侯捷先生﹕您好
我學習計算機也有好幾年了﹐自己買了不少書﹐可看來看去覺得自己真正學到的東西很少。我想這和我買書的盲目有直接的關係。我是從試刊開始看《程序員》的﹐裡面很多書都是您推薦的。您的書評基本上是針對C++和OOP之類的。我現在想把C弄通﹐又很難找到一些詳細講解C的應用和編程方法的書﹐您能否指點一二。
祝 好

●侯捷回覆:C 是很直觀的語言,沒什麼難的,多用功多動手,一定沒問題。我沒有書單給你,因為 C 書籍對我是太遙遠的回憶了。

 


傳送日期: 2001年9月18日 PM 01:28侯先生﹕
您好﹗
我是一個電子書籍《MFC深入淺出》的讀者﹐最先看到這本書是在書店看見的﹐一看見我就非常地興奮﹐他對於我們這些己經用c++編程﹐但WINMFC基礎十分薄弱的人來說實在太好了﹐不知道該說些什麼﹐只能道一聲謝謝﹗
湖南省東安縣

 

 

 

傳送日期: 2001年9月19日 PM 09:19
侯老師﹕
我是一個在校大學本科生﹐大陸湖南地區﹐很有幸光臨你的主頁﹐學到了不少知識並下載了一些PDF電子文檔資料﹐作為一個windows編程的初學者﹐我仍想問你一些事﹐現在大陸市面上仍可買到的比較有質量的WINDOWS程序設計的書有哪些。已絕版的又有哪。這兩類相關資料何處可以下載。另外建議你把開放的電子資料放在一個專門的下載區﹐以方便查找和下載。如果你很忙的話﹐不回復也沒有關係﹐我仍是你的忠實讀者。





傳送日期: 2001年9月16日 PM 08:05
敬愛侯先生﹕
您好﹐我是一名Visual C++初學者。我剛看了您在大陸出版的《深入淺出MFC》﹐感覺
受益非淺。現在向你求教幾個問題。請賜教﹕
一﹕在用Vc畫圖時﹐對於選中的畫刷模式如HS_BDIAGONAL(或其他模式),我們有沒有
辦法改變系統提供的斜線之間的寬度﹖同樣﹐對於系統提供的畫筆﹐如PS_DASHDOT,我們
有沒有辦法改變系統提供的短線的長度﹖
請給出詳細的操作步驟
二﹕我在用畫圓時﹐發現當圓的半徑大到一定程度時﹐該圓在顯示器上就不顯示了。為
什麼﹖有什麼辦法可以畫“大”圓呢﹖
請給出詳細的操作步驟
三﹕我在用“切分窗口”的方式(窗口被分成兩部份﹐一邊是CView視圖類﹐用于顯示
圖形﹐一邊是CFormView類﹐用于接收數據﹐對圖形進行控制)。我該如何編寫代碼﹖來
實現打印和打印預覽(視圖)的功能。
請給出詳細的操作步驟
真誠希望您在百忙之中儘快給我回信。
最好每個問題都能給出一個例子﹐謝謝!

 

 

傳送日期: 2001年9月20日 PM 05:46
甘肅蘭州:
西部相對落後,希望侯先生對西部大力支持,有空來蘭州玩,看看敦煌.

●侯捷回覆:我想去呀。

 

 

傳送日期: 2001年9月22日 AM 11:50
候先生﹕
你好﹗我是大陸的讀者。我現在正在學vc++﹐這幾天我看了你寫的書﹕深入淺出MFC﹐我覺得受益菲淺。你把很複雜的東西說的很淺顯易懂﹐我很喜歡看你的書﹐不知你最近有沒有新的書出來﹖
居住省﹕四川省
建議﹕能不能出簡體中文版的(電子圖書)﹖台灣的很多術語都和大陸的不一樣。

 

 

傳送日期: 2001年9月23日 PM 08:19
候先生﹕您好!
我是大陸的一名程序員﹐我非常喜歡看您寫的或譯的書﹐我看到您譯的 《Win95 系統程式設? - VMs & VxDs 譯序》﹐不知大陸有沒有的買﹖希望能得到你的一些指示。謝謝。
此致敬禮
你忠實的讀者

●侯捷回覆:沒得買。

 

 

 

傳送日期: 2001年9月25日 AM 11:39
侯老師﹐您好﹗
我在看您的《深入淺出MFC>>簡體中文版,請問例程如何使用?
例如﹕Frame1 例程﹐我先建立了一個win32 application 的新工程。在選擇 an empty project. --〉finish. 在fileview 的source file 和header files 中添加光盤裡dissect中Frame1.03中的Mfc.cpp 、mfc.h.等文件﹐編譯正常﹐build 時出錯。
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/frame1_3.exe : fatal error LNK1120: 1 unresolved externals
我後來試了試 win32 console application 工程也不行。
請在百忙中予以回復。謝謝﹗

●侯捷回覆:書上程式,都有詳細說明如何編譯。frame 程式不需進入整合環境,以command line 方式就可編譯連結。看書。

 


傳送日期: 2001年9月25日 PM 11:25

居住地:台灣新竹縣
建議:拜讀您的大作後真是欽佩您那寫書的態度及風格。為什麼呢?曾看過東京大學很早期的某位校長說過的一段話,科技要扎根必須將科技普及,而普及的方法就是讓專業書籍日文化。所以他鼓吹專家寫書,鼓吹將外文技術書刊翻譯,事實上日本確實這麼做了,本土技術確實生根發芽。的確,要學專業之前還得先學好外文這確實造成了學習的門檻。我看英文書的能力還算不錯,不過往往在不能盡然瞭解原文書中的意思時,回頭想找一本中文書做參考還不免於這樣的感慨,真是好書難求阿。我並不怪國內的作者著作太粗糙,因為我們的市場太小誘因不大,很難使人有心去寫一本bible級的書刊。不過在看了您的深入淺出MFC後,很明顯的可以看到您的用心,所以好書不會被埋沒,從這本書的銷售量來看還是很多人在期待這樣的一本中文書。當然,從這本書的簡體版在大陸熱賣的狀況看來,中文書的市場不見得小,當然要寫的好,在台灣您應該是開疆闢土的第一人。如果因此而能促使國內專業書刊的寫作水準提昇(因為大家看到打入廣大的市場並非不可能),那真是中文讀者之福。另外欽佩的一點是您的文筆,學工程的人還能同時擁有這樣的功力,真是難得。

是否能告知您在何處有開課,我真的很想去聽,希望能獲得更多。尤其我不是資訊科系畢業,程式完全是自修而來,一直很想到學校裡補強自己的基礎。看到您在元智大學有開過課,不知像這種機會還會不會再有?有的話希望能告知,不一定是要在大學裡。謝謝

●侯捷回覆:謝謝您的讚美,我很開心。
元智大學的課程,固定在第二學期開課,歡迎旁聽。其他的公司內訓課程,主辦單位應該是不允許旁聽的。

 

 

傳送日期: 2001年9月26日 PM 05:17
居住省份(台灣讀者請寫縣市)﹕湖南
對侯捷的建議﹕多開放點電子文檔﹐與其讓盜版者賺錢﹐不如。

●侯捷回覆:真希望聽到你說:與其讓盜版者賺錢,不如掏錢購買正版,支持好書。

 

 

傳送日期: 2001年9月26日 PM 07:06
居住省份(台灣讀者請寫縣市)﹕北京
對侯捷的建議﹕
這本書寫的很好﹐由於比較貴﹐我一直是借別人的書來看﹐後來去超星網頁看網上書﹐最後終於找到您的網址﹐十分感謝﹐解答我好多鬱悶的問題。

我是一個普通的工程碩士﹐由於工作的緣故﹐一開始就接觸上了許多DCOM等組件的開發。是在很繁重的工作環境下學習VC﹐這本書給我很多概念上的區別﹐讓我很快地入門了﹐十分的感謝。
您的忠實讀者。


 

傳送日期: 2001年9月27日 AM 10:38
侯老師﹐您好﹗
我在看您的《深入淺出MFC>>簡體中文版, 有一個問題向請教。
第三章Frame7 例程﹐我先建立了一個win32 console application 的新工程。在選擇 an empty project. --〉finish. 在fileview 的source file 和header files 中添加光盤裡dissect中Frame8.03中的Mfc.cpp 、mfc.h.等文件﹐編譯時出錯。
D:\vc6study\深入淺出mfc學習\Frame7\Mfc.cpp(61) : error C2101: '&' on constant 。。。
Mfc.obj - 5 error(s), 0 warning(s) 等
解決方法﹕
1)
修改 頭文件 Afxmsg_.h 中
#define ON_COMMAND(id, memberFxn) \
{ WM_COMMAND,
CN_COMMAND, (WORD)id, (WORD)id, AfxSig_vv, (AFX_PMSG)memberFxn },
改 CN_COMMAND為
0
並且

2)
修改 頭文件mfc.h中
// Message map signature values and macros in separate header
#include
<afxmsg_.h>

// Message map signature values and macros in separate header
#include
"afxmsg_.h"

rebuild all, OK!


●侯捷回覆:謝謝。這是繁體版第六刷(含)之前的錯誤。簡體版從第一刷始便已更正,但CD上的源碼沒改過來。謝謝。

 



傳送日期: 2001年9月27日 PM 11:00
> 侯先生您好, 我是工研院這次光電所上課的旁聽生,感謝您百忙中抽空看這封信,我現
> 在的project中出現一個難解的問題,希望侯先生能解我的疑惑
>
> 我用mfc開發一個可以讓3d物件做連續運動的程式,最近遇到message_map有送錯訊息的
> 情況發生. 我的對話盒中有radio control和spin control,在我做某些動作之
> 前,radio被按下時會正常的由對話盒的OnRadio...()攔截,spin則是由OnVscroll()攔
> 截,但是經由某些button,radio按鈕的按下操作後,再按spin control, message竟然被
> radio的OnRadio...()函式攔截而不是OnVscroll(),造成我的程式的結果和預期中的不
> 同. message_map內部的機制有可能會造成送錯message的可能嗎?
>
> debug mode中,同時我觀察到variable window內有個this展開後有個messageMap 中的
> _lpEntries ,其中有個參數pfn的內容是該對話盒的OnVscroll()函式,msdn裡查不到這
> 個參數,這個參數的意義是指這個message是由OnVscroll()發出的嗎?
>
> 還有一個奇怪的現象,是程式中的對話盒控制項ID的value,竟然會有重複的事情發生,
> 比方某個radio和button的ID並不同(也是所屬不同對話盒),但是ID的value竟然都是被
> assign 1031,照理說應該每個ID都有獨一無二的值才對阿,並且應該是連續的數值才
> 對,我觀察對話盒的控制項ID的值是由1000開始到1042當中有竟有6的ID的值重複,並且
> 少了幾個值,我把重複ID值的控制項殺掉後重新加入,ID值竟然逾缺不補,從1043開始往
> 後加,跳過了那些原本缺少的1028等幾個數值,這樣是正常的嗎?是否會影嚮message
> mapping呢?
>
> 因為此程式已經有點大,並以花了半年的時間撰寫,希望能得侯先生指點
> 再次感謝您抽空耐心看完此信
>
> 祝 身體健康

 

 

傳送日期: 2001年9月27日 PM 01:50
您好﹕侯先生
我很感謝你將您的深入淺出mfc以電子圖書的形式公開發行
我是看了網友對你書的評價﹐決定買您的書的﹐
後來巧合﹐從網上下載了電子版。
當時很高興﹐覺得省了80元。
當我真正看的時候﹐深深的被它吸引了﹐覺得只是一本應放在身邊常常翻閱的書﹐就決定購買第一次﹐網上配貨未成功﹐可能告罄了
沒辦法﹐我自己騎車1小時去買﹐雖然很累﹐但我覺得有這本書很踏實
拿來這本大部頭﹐我覺得有點小小的遺憾 :
字號有點大﹐行距也有點大﹐
使得這本書的價格和份量都不小。每天我都要扛ぴ他穿梭于寢室﹐公司﹐而且﹐紙張量的增多﹐也給學生族增添了了負擔﹐好多人忍痛割愛。
我說的只是版式設計的一點建議﹐當然內容是非常好的
謝謝您為我們初學者一把鑰匙

●侯捷回覆:騎車1小時,很遠呀,我很感動。
關於版式,見仁見智,感謝您的建議。不過,我的書籍並不以頁數來定價格,所以,縮減頁數,不會影響價格,比較方便攜帶,倒是真的。如果你看過繁體版之厚之重,一定會昏倒。我很希望用又薄又好的紙。

 

 

 

傳送日期: 2001年9月27日 PM 10:41
主旨: 教師節快樂
> 侯老師
> 我是那個在元智旁聽
> 給您惹麻煩的台北工程師
> 感謝您在這一年引領我走入STL這大觀園
> 也很久沒跟您問好了
> 藉此教師節的機會
> 至上我的敬意與祝福

●侯捷回覆:所有旁聽生帶給我的,都不是麻煩而是喜悅。你們願意老遠從台北來聽課,我很感動。

 

 

傳送日期: 2001年9月28日 PM 12:53
居住省份(台灣讀者請寫縣市)﹕河北省石家莊市
對侯捷的建議﹕
侯捷先生﹕
您好﹐十分感謝您能免費開放電子書。現在微軟已經推出C#,您能不能就Visual C++的前景給予指導﹐謝謝。





Sent: Friday, September 28, 2001 11:28 AM
> 候先生﹕
> 您好﹗我是一位您的讀者。在讀您的書之前﹐我也讀過有關vc的書﹐但感覺很茫然﹐自從讀了先生的書才豁然開朗﹐先生的書寫的很深﹐初讀時很吃力﹐先生的語言很風趣﹐使我堅持讀下去。現在已經讀了兩遍已對MFC有了一定的了解。過後我會再溫故而知新的﹐我很感激先生﹐如果沒有先生的書﹐我現在還徘徊在MFC的大門之外。

 

 

傳送日期: 2001年9月28日 PM 05:26
尊敬的侯捷先生﹕
我是浙江杭州的一個普通的程序員。最近剛剛接觸C++。
一個偶然的機會看到了您的網站﹐從此便喜歡上了您和您的著(譯)作。您的書給了我很多的幫助﹐特別是在大陸電腦圖書比較缺乏的情況下﹐您給了我一個方向﹐告訴我那些書是優秀的﹐並使我弄清了許多C++中原本令人疑惑的問題。謝謝您﹗
下面有一個問題想請教侯先生﹕
一日我在論壇看到有人問一個題目﹐是說下面的程序段會得到怎樣的結果(程序我作了一點小改動)﹕

1. #include <iostream>
2. using namespace std;
3.
4. class a
5. {
6.  public:
7.  char* string;
8.  a(){string = new char[260];};
9.  ~a(){delete[] string;};
10.};

11.main()
12.{
13. a* aa = new a;
14. a bb = *aa;
15. delete aa;
16. strcpy(bb.string,"afsd");
17. cout << bb.string << endl;
18.}


  
以我的想法來看﹐因為該類沒有拷貝構造函數(Copy Constructor)﹐因此14行的bb=*aa一句﹐是將aa->string所指向的地址值賦給了bb.string﹐也就是說﹐aa、bb的string指向同一個地址。在15行delete aa;後﹐該內存塊已經無效﹐因此bb.string也無效。所以16行應該出現內存錯誤。

但事實上我用BCB 5.0的Command Line編譯器編譯後﹐得到的結果竟然是"afsd"﹐即沒有任何錯誤﹗這是怎麼回事﹖

希望侯先生能夠在百忙之中抽出一點空來﹐替我解決這心中的疑惑。不勝感謝﹗

PS:
這封信是好久以前寫的了(可見下面的日期)﹐不想發送受阻﹐耽擱至今。期間我也去csdn上問了﹐許多人給了形形色色的答案。我大體猜到這是編譯器的問題﹐但苦于讀書不多﹐不知Standard C++對此問題的定義如何﹖

這幾天讀先生之網站(簡體鏡像啦)以致入迷﹐不免誤了點工作﹐但感覺﹕值﹗

最近喜聞csdn舉辦海外購書活動﹐我訂了先生的<<C++ Primer 中文版>>﹐錢已寄出﹐回音未至。不知何日才能到手。

又PS﹕先生郵箱不通﹐如此大事卻未在網站公佈﹐此嚴重失職啊﹗ ﹕)
希望先生能更新網站更快些。 ﹕)

●侯捷回覆:海外購書活動的情況,要問CSDN。
侯捷網站又不是新聞網,哪能夠「更新更快些」?一個月更新兩三次,刊出一些新文章或新書稿,或出版消息,我想是很好的成績了 :)

最近郵箱不通,是因為中研院淹大水,而我的 jjhou@jjhou.com 的 email eXchanger 設在中研院資訊所。email server 本身在新竹倒是正常的。你太厲害了,竟然還能透過 Jerry 詢問。

程式內的符號命名,很是重要。你的程式我修改如下:

#include <iostream>
using namespace std;

class A
{
public:
  char* pStr;
  A() { pStr = new char[260];};
  ~A() { delete[] pStr;};
};

main()
{
  A* pa = new A;          // (1) 配置一塊記憶體給 pa->pStr
  A a = *pa;               // (2) a.pStr 和 pa->pStr 指向同一塊記憶體,不妙
  delete pa;               // (3) 刪除 pa->pStr 所指記憶體
  strcpy(a.pStr, "afsd"); // (4) 把 "afsd" 拷貝到 a.pStr 起始的記憶體處
  cout << a.pStr << endl; //      雖然不妙,但在此小程式中沒有破壞其他資料,
                          //      所以沒有導致崩潰。

}

注意,系統收回記憶體,不論是因為 delete,或是因為 scope exit,都只是做個記錄,標示某一塊記憶體重回系統懷抱。該處記憶體上的內容並不會被抹掉。因此,上例中的 "afsd" 仍然還在。如果程式繼續寫下去,就可能會有什麼東西覆蓋掉 "afsd" 了。

上例執行結果,在 VC6, BCB4, BCB5, GCC291 都是一樣的。

上例所犯的錯誤(雖然沒有馬上顯現)就是:未能遵循《Effective C++》2e 條款11。

 


傳送日期: 2001年9月29日 PM 05:00
寄件人同上
jjhou(侯捷)老師﹐您好﹗

很高興在我寫信的第二天就看到了您給我的回復。
我其實不是很厲害啊﹐只是在您的網站上看到了您在《深入淺出MFC 開放後 讀者回應》-> 《總體回應》中﹐有這麼一段話而已(先生自己不會已經忘記了罷 :) )﹕
“通常問題發生在 DNS。建議將 DNS 設為 168.95.1.1 或 168.95.192.1 試試。
若改了 DNS 後仍連不上﹐請寫信給 jerry@pasia.com。感謝 Jerry。”

於是我就寫給Jerry啦﹐沒想到真的有用﹗ :)

對於先生給我的解答﹐我自然十分感激。但心中仍存疑問﹐又要來麻煩先生了。
先生說﹐“系統收回記憶體﹐不論是因為 delete﹐或是因為 scope exit﹐都只是做個記錄﹐標示某一塊記憶體重回系統懷抱。該處記憶體上的內容並不會被抹掉。”而我們在寫程序的時候﹐一般都會寫(希望這次的符號命名過得了關 :) )﹕
{
  delete pAPoint;
  pAPoint = NULL;
}
那麼﹐為什麼C++不採取更安全一些的方法來對待指針呢﹖ (我的意思是說﹐編譯器在delete的同時﹐自動將指針指向NULL)是C++標準疏忽了﹖是編譯器偷懶了﹖還是由於某種原因﹐不方便這樣做﹖

提到指針的問題﹐我自然就想到了先生的《深度探索C++對象模型》一書。記得先生在網站的一篇文章中提到﹐[恐非原話]“現在許多人學C++﹐下不至Object Model﹐上不至Polymorphism”。這次的問題﹐我認為顯然是一個比較“下”的問題﹐但對細節的研究﹐我始終抱一種比較保守的態度﹐因為我恐怕會一不小心迷失在眾多的細節中﹐反失了方向。但編程的過程中終究要遇到細節問題(比如這次)。我不知道侯先生對此有什麼建議﹐什麼樣的細節有必要去搞個水落石出﹐什麼樣的細節不妨聽之任之﹔抑或所有的細節都必須弄個清清楚楚明明白白﹖
(BTW﹐前些日子逛書店﹐終於看到了難得一見的侯捷的大名(《深度探索C++對象模型》)﹗啊﹐國內的出版社終於出版了一本好書。可惜的是當時囊中羞澀﹐敢看不敢買﹐待這次拿了薪水﹐備足糧草﹐一定去書店﹐一鼓作氣﹐將其拿下。 :) )

另外﹐關於侯先生所提命名之事﹐我也頗有感觸。學了這許多年編程﹐一直都知道要重視書寫規範﹐然提筆(啊﹐應該是擊鍵)便忘﹐寫著寫著就圖一時之快。當然也不能全怪我啦﹐我感覺現在系統討論書寫規範的文章不多﹐若有﹐也是附在軟件開發規範之後﹐厚厚一疊。適合我們個人開發的輕便靈巧型的規範卻不多見。不知侯先生對此有何經驗和看法﹖

●侯捷回覆:

Q: 我們在寫程序的時候﹐一般都會寫(希望這次的符號命名過得了關 :) )﹕
{
  delete pAPoint;
  pAPoint = NULL;
}
那麼﹐為什麼C++不採取更安全一些的方法來對待指針呢﹖

A: 一切都是為了效率。C++ 把所有安全工作都交給程序員。做不做,由程序員自己取捨。你上面所寫的,是很好的習慣,很多人還沒有養成這個習慣呢。

Q : 對細節的研究﹐我始終抱一種比較保守的態度﹐因為我恐怕會一不小心迷失在眾多的細節中﹐反失了方向。

A: 這是正確的態度。

Q : 但編程的過程中終究要遇到細節問題(比如這次)。我不知道侯先生對此有什麼建議﹐什麼樣的細節有必要去搞個水落石出﹐什麼樣的細節不妨聽之任之﹔抑或所有的細節都必須弄個清清楚楚明明白白﹖

A: 細節要鑽研到怎樣的程度?喔,就實用價值而言,到達你自認為足夠的程度,到達編程過程中無所惑(或有惑但無大影響)的程度,就行。

Q : 關於侯先生所提命名之事﹐我也頗有感觸。學了這許多年編程﹐一直都知道要重視書寫規範﹐然提筆(啊﹐應該是擊鍵)便忘﹐寫著寫著就圖一時之快。...不知侯先生對此有何經驗和看法﹖

A: 「圖一時之快」是很多人的寫照。不圖一時之快,你便站上了高點,使你自己有了一個成功的機會。寫任何一段程式碼,或任何一份說明文件,永遠要想,這是自己的作品,不但代表自己的水平,也是自己日後還要看的。只要這麼想,你就不會再「圖一時之快」。

好的撰碼風格,不會天生融入我們的體內。編程,其實就是模仿、體會、思考、融合。多看名家程式,並且用心,你就能夠寫出「尺寸雖小,氣度恢宏」的程式來。我個人極為重視程式的可讀性。

 

 

傳送日期: 2001年9月29日 PM 01:16
侯老師﹕
先給您祝壽了﹗﹕) 身體是革命的本錢﹐經常鍛煉啊﹗
再給您作揖了﹐據說今天是台灣的教師節。在大陸﹐教師節是9.10號﹐兩岸的差別是很大哎﹕)

今天收到了周筠老師寄贈的您譯的《ESSENTIAL C++》﹐好高興﹐就象歌迷見了歌星﹐可惜還少了歌星的簽名﹐周老師也忘了留下墨寶﹐等有機會吧﹕)。能在網上看到您的文字﹐就很心滿意足了。要知道﹐在大陸﹐人家院士博導碩導們是不屑在網上拋頭露面的﹐各個研究院的主頁一塌糊塗﹐什麼資料都找不到。基本的工作不好好做﹐還指望超英趕美﹖吹吧﹗

大夥考研考博都不知道自己報考的老師的研究方向是什麼﹐也無從知道或者比較費勁才能了解一些(當然﹐老師們自己實際上對課題有沒有興趣就更不知道了)﹐甚至也不知道自己的興趣是什麼﹐其實好多人都不喜歡自己的專業﹐卻又不知道自己喜歡什麼﹐好多同學(至少我認識的好多哥們是這樣)考研考博是因為將來找工作容易一些﹐倒不是因為自己喜歡﹐教育的悲哀啊。我的一個哥們在美國﹐寫信來說﹐煩透了﹐終於發現自己不喜歡這個專業了﹐趕快答辯吧﹐他的成勣很好的﹐哎﹐只知道考試了﹐我只能同情他﹐安慰一下﹐因為他也不知道自己喜歡什麼﹐
他倒是很羨慕自己的那幫雖然成勣考不過他﹐但是整天好像有滋有味的美國同學。大陸教育的失敗啊。

幾年前﹐曾經有過對楊振寧先生的訪談﹐楊先生認為﹕目前阻礙中國科學家獲得國際先進成就的因素主要有三個﹕
一是經費問題﹐中國的人均科研經費遠遠少于美國。
二是科學傳統的問題。科學研究也需要有傳統﹐比如劍橋大學的研究人員注意的問題就與其他科學家不同﹐這與其教育和科研傳統是有很大關係的。
三是中國科技界的消息不夠靈通。在西方發達國家的科技界之間有很好的聯絡﹐彼此互通消息。雖然中國的科學家也使用因特網等手段聯繫世界﹐但終究沒有那些國家消息靈通。

依我看﹐這後面兩條根本就是人為造成的﹐非不能也﹐實不為也﹐
如果﹐前輩們都能象您一樣有個內容豐富的個人主頁﹐這不是我們後生的福音嗎﹖我們將能感受到諸位前輩是實實在在﹐有血有肉的人﹐而不是不食人間煙火的神。哎﹐每位院士博導都是一所好大學﹐可惜﹐他們不向我們開放﹗

前兩天﹐又有報導說﹕"中新社南京九月十七日電(記者黃少華)
楊振寧指出﹐"今天中國的高科技比起先進國家還差一大截﹐這就使得許多人認為中國的科技不行。這是完全錯誤的看法。近代科學引進中國是二十世紀的事情。一個世紀之間只幾代人就從真正的零開始發展到了今天中國但是神舟號飛船可以昇天與收回的地步是史無前例的高速發展。中國科技發展如此迅速有其內在的基本原因﹐而這些原因在二十一世紀是更加強了﹐更鞏固了﹐所以到本世紀三十年代與四十年代﹐中國的科技水準必定會達到世界的最前線" 楊先生他倒是老好人﹐誰也不得罪﹐就這現狀﹐不踏踏實實做事﹐還能跑到前沿﹖到那時再下結論吧,那幫記者懂個P﹐人家恭維一下﹐拿了雞毛當令箭。敬業的人多起來﹐這個國家才會有希望。否則都是瞎掰(北京話﹐胡扯﹐扯淡的意思)﹗

海上昇明月﹐
天涯共此時﹗

●侯捷回覆:「瞎掰」這個詞我懂,臺灣也這麼說的。

實在說,你不能要求「前輩們都能象您一樣有個內容豐富的個人主頁」,就像我們不能要求每位作者都像 Bruce Eckel 一樣免費開放每一本書的電子版。只能說,碰上這樣的作家,我們心存感激。

一口好食物,吞到肚裡成了營養,吐出去則變成穢物。
放在桶裡的廚餘是垃圾,做成堆肥可以滋養美妙的花朵。
世間萬物,只要放對地方,就有用,能成器。
人如果沒把自己放在自己感興趣的方向上發展,永遠成不了大器。
我於此點,體會尤深。

平凡者追逐「機會多」的路。
不凡者才能跳脫迷思,忠於自己,並因而有「出類拔萃」的可能。

 

 

 

傳送日期: 2001年9月21日 PM 05:37
侯老師:
我是北京師範大學的大學二年級本科生, 我叫□□, 19歲, 喜愛電腦.
9月20日收到華儲寄來的《Essential C++中文版》﹐我現在(9月21日)看到第80頁。對我
這個C++初學者來說﹐感覺這本書幫助很大﹐唯一遺憾是不能讀到C++ Primer 3/e .

前80頁書中的代碼有幾處似乎有些問題, 寫在這裡供您查看:...

聽到您10月要來北京﹐我很高興﹐期盼與您見上一面﹐哪怕僅僅見一面也好。
祝您 身體健康﹗萬事如意﹗


傳送日期: 2001年9月26日 PM 10:40
侯老師:
我是北京師範大學的大學二年級本科生, 我叫□□, 19歲, 喜愛電腦, 我前天(9月21號)
給您發過一封信,指出了幾處《Essential C++中文版》源代碼筆誤,見笑了.
9月20日收到華儲寄來的《Essential C++中文版》﹐我現在(9月23日)已經粗看了一遍.感
覺書很好, 用詞準確, 就是太單薄了一點, 內容稍淺. 我已向CSDN訂購了您翻譯的C++ Primer
3/e一書, 我想兩者結合起來看效果會更好.也已經購得影印版, 近日即可開始讀.

在《Essential C++中文版》中, 我又發現了兩處筆誤, 請指教:...

聽到您10月要來北京﹐我很高興﹐期盼與您見上一面﹐哪怕僅僅遠觀一下也好。

祝您 身體健康﹗萬事如意﹗


●侯捷回覆:感謝這位讀者。您所寫的,有些的確需要修改,有些原本正確。我已整理於《Essential C++》簡體版勘誤表中。謝謝。

10 月份大陸行,如果清華大學有講座,我們便能見面。目前我還不確知。


 

傳送日期: 2001年9月27日 AM 10:57
您好
我是從深圳社區的網上了解到學VC++說用您的深入淺出MFC一書起步很好﹐
但我以前是用Oracle 公司的Oracle Developer(PL/SQl語言)專門開發數據庫系統﹐
我現在想學VC++開發一些Windows的應用程式﹐我是學電腦專業的﹐但教學時是用Pascal
語言﹐可以說對C一點都不明﹐這樣很難嗎?

●侯捷回覆:以你這樣的基礎,要學習VC,很難很難。首先要把C++語言學好。

 

 

傳送日期: 2001年9月29日 PM 06:30
侯先生﹐您好﹕
正在拜讀您翻譯的《Essential C++中文版(簡)》﹐發現幾處可能有點問題的地方。如下列出﹕
1.P25 1.5節中 for(int ix = 0;ix < elem_seq_size();++ix)
cout <<pell_seq[ix] << ' ';中pell是否應為elem﹖
2.P39 2.1節中 練習fibon_elem()函數的main()定義為int型﹐而程序中卻無return。
3.P52 2.3節中 main()函數內對display的調用﹐第一次﹐display(&vec);中&是否應刪去﹖
4.P58 2.7節中 三個函數的定義部份﹐最後一行是否屬印刷錯誤﹖對於vector<string>的那個函數﹐最後的cout << '\n';是否有問題﹖
5.P61 2.8節中 頁眉“帶”、“大”、“彈性”﹐字體太小。
6.P64 2.9節中 line4兩個“但是”﹔line7“意謂”是否應為“意味”﹖

目前讀完前兩章。感謝您對經典書籍的翻譯引進。我還想問一下﹐怎麼還能得到此書封二封三上介紹的另外七本﹖我只知道《Effective C++》已有了中譯本﹐其他的是不是有英文的電子文檔﹖望能解答﹐再次感謝﹗


●侯捷回覆:
1. 原書如此。
2. C++ Standard 允許如此。
3. 應去除,納入勘誤表,謝謝。
4. 原書如此。
5. 頁眉有誤。
6. 兩個「但是」是故意的,加強語氣。“意謂”和“意味”意思差不多。

感謝。

 

 

傳送日期: 2001年9月30日 PM 03:42
侯捷先生﹕
您好﹗早就看過您的著作和一些書評﹐感覺很好﹐不愧有大家風范。
本人是一名普通的學生﹐去年一個很偶然的機會﹐應青島松崗的邀約寫了一本名為
《從Pascal到Delphi》的計算機編程書籍。但由於種種變故(青島松崗被解散了)﹐此
書至今尚未出版。本來很早就想與您聯繫﹐但由於本人乃一無名小輩﹐加之不少網友對
大陸編寫Delphi書籍的作者的抱怨和指責﹐使我一直猶豫不絕﹐惟恐班門弄斧﹐貽笑于
大方之家。但看ぴ自己的勞動成果束之高閣﹐實在有點不甘心。佛說﹕“你不下地獄﹐
誰下地獄﹗﹖”猶豫再三﹐今天我終於下定決心﹐斗膽在關公面前耍一回大刀﹐請您看
看本書的前言和第一章﹐還望多加批評指正。如您感覺本書尚有看頭﹐請給我回信﹐我
將奉上全部書稿。
很抱歉在沒有征得您同意的前提下﹐貿然佔用您寶貴的時間和郵箱空間﹐還望海涵。

●侯捷回覆:我不能為你看稿子,因為我對 Delphi 不熟,時間也不充裕。

但是我了解辛苦完成了一部作品卻沒有機會出版的心情。

如果你認為你的作品確實有價值,我想你可以毛遂自薦,寫信給所有你認為值得聯絡的出版社。

是的,這應該就是最好的辦法。

 

 

 

傳送日期: 2001年9月30日 PM 07:15
侯先生﹐你好﹕
你的網頁上有一篇關於寫程序習慣的說處﹐我看了有同感。
我至今仍舊喜歡在紙上寫完程序後再上到機器上改﹐因為邊寫邊改邊編譯讓人家頭暈眼花﹐嚴重打斷思路。我不知道年輕人為什麼喜歡在機器上寫程序﹐但那樣必定更容易出錯。這可是很多實踐證明的事了。還是寫完了再上機改好。
再見。