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

傳送日期: 2002年3月1日 PM 06:16
侯捷老師﹐您好﹗
我是您的一名忠實讀者﹐而您的書又都是關於教育的﹐所以也可以說我是您的一名學生。看了您的《深入淺出MFC》受益非淺﹐大有您所說醍醐灌頂之感。還有書後所附《書評》﹐也令我所得甚多。但此《書評》已是9x年之作﹐與現在已不太相適﹐不知現在有哪些比較好的編程書籍﹐特此向您請教。說道此處﹐學生還要向老師請教一個問題﹐就是現今世界風雲突變﹐編程界也不例外﹐雖說C++還是經久不衰﹐但隨ぴJAVA的逐步推廣﹐還有.NET戰略的實施﹐可謂百花齊放﹐今後編程將向何種方向發展﹐學生實在是雲裡霧裡﹐在此請老師向學生指點一二。

 

 

 

傳送日期: 2002年3月1日 PM 04:03
主旨: 給侯捷先生的信
> 侯捷先生,您好!
> 前些日子曾向您請教購書的問題,當時我希望能使用Kruglinski Inside Visual
> C++ 1.5,不過後來我再次逛書店時,卻發現這本書已經下架了.
> 後來我在您主持的網站上見到Kruglinski意外身亡的消息,令人有"人去書息"的感嘆!
> 最近我又新購入MFC programming書籍,作者是Jeff Prosise,書名是
> "Programming Windows with MFC 2nd",該書取材十分廣泛而且您曾
> 在無責任書評中推薦 Jeff Prosise的著作Programmimg windows 95 with MFC.所以應
> 是舉足輕重的著作才是.不過我在閱讀Programming Windows with MFC 2nd 的第一章介
> 紹Win32程式設計原理時卻發現一個與我認知有差距的敘述,作者認為WinMain進入訊息
> 回圈後,藉由
> DispatchMessage( &msg)呼叫Window Procedure,而我的認知是DispatchMessage(
> &msg)將message傳給Windows作業系統,而後在適當
> 的時機Windows作業系統呼叫Window Procedure,我的觀念已經成型許久.並且Window
> Procedure有關鍵字CALLBACK 修飾應該不能為AP呼叫
> 才是.
不知道您的看法如何?如果真是Jeff Prosise的觀念有誤,還盼您能去函指正.因為
> 我認為寫信給Jeff Prosise指正觀念必須要對MFC有相當深入了解的人才行.
>
> **************************
> 接下來和知識上的問題無關,只是希望寫信和您閒聊而已...
> **************************
> 我在您的網站上看到了您的自述,覺得有似曾相識的感覺.我本身也是非本資訊
> 科系出身,我在大學學機械工程,研究所學電信工程,而且也嗜以飲
> 咖啡,準備升研究所考試時也做過"游民",我也參加過資策會的人才培訓.不過我在大學
> 時代程式設計卻是一張白紙(因為我被死當了).我對程式設計產生興趣應當從資策會培
> 訓開始.當時從C,C++,Java一路學起,C++實在是一個巧妙的語言,我曾以繼承的特性完成
> 象棋遊戲的實作.我把棋盤設計成
> 9x10的基底類別指標矩陣,並將棋子設計成各種衍生類別,將棋子的走法宣告成基底類別
> 的虛擬函式,並在各衍生類別(代表各棋子)overwrite虛擬函式,並以資料結構的堆疊處
> 理"悔棋"的問題.我對程式設計的樂趣因此而深深的領會.我現在的工作是開發視窗應用
> 程式.我認為工作是一種樂趣.因此
> 假日也常到公司加班,同事對我總是不了解,有一次我曾試圖將程式設計的樂趣和坐在我
> 隔壁的大姊分享(我介紹資料結構中經典問題"老鼠走迷宮"
> 的問題),她不經意的點點頭說"能不能幫我寫預測彩卷號碼的程式".我當時實在有知音
> 難遇的感嘆.....

> 我讀您的第一本書是"記憶體的多工與管理",最近則讀完您的大作"深入淺出 MFC"
>對Wiondow Application Framework 有了深刻的體會因此對
> MFC的來龍去脈有深刻的體會,感覺上也紮實了很多,目前我工作上的leader好像是屬於"
> 實務派"的.他已有3年的視窗程式設計經驗,但是有一次我
> 寫了一個SDK程式請他過目,
他問我WinProc是做什麼的?這有點像曾銘源口中的"阿哥".
> (^_^)

> 做為您的忠實讀者,對於您的才識自然是仰慕倍至,我想贊美對您來說也是多餘
> 的.我深深的希望透過努力能使自己的才能提昇至十分之一就行
> 了.另外我在網站上看到您跟讀者的對話說"把出版商得罪光了...不過牛肉麵煮的不錯
> "(^_^)其實真正欣賞一個人不會去計較他的小地方的.如果我是
> 出版商一定不會讓您去賣麵的(^_^).這有點像作家李敖他的許多朋友都曾是他的被告...

> Kruglinski的隕落使我不禁擔心起來,還好您沒有高危險的嗜好,咖啡喝到出意
> 外也實在難以令人想像!至少我曾有一日十杯的記錄.不過最近卻傳出交通大學的教授過
> 度勞累而猝逝的消息(其中一位是我研究所的教授),所以還盼望您能珍重身體.
> ps:您曾經和讀者討論"封裝喝咖啡的方法",可是
當我見到限制您喝咖啡的人的
> 容貌時,我覺得能被限制也是蠻幸福的!

●侯捷回覆:Jeffrey Richter是對的。DispatchMessage()會喚起 window Procedure。window procedure是個callback函式,沒錯,這和上述說法沒有衝突。

寫了三年Windows程式,不知道WinProc()做什麼,確實令人遺憾。

以貌取人,就像以頁數思考書籍的價值,一樣危險 :)

 

 


傳送日期: 2002年3月1日 PM 04:41
> 侯先生您好:
> 居住省份(臺灣讀者請寫縣市): 苗栗縣
> 對侯捷的建議:
> 早在一年多前因為工作的需求,在同事的建議下買了 c++ primer 。
> 不過後來發現這本書對一個真正的初學者來說,實在是有點難,
> 所以後來就跑到台大資工去上課了。而現在閱讀起來,也覺得
> 上手多了。我很喜歡這本書,希望可以多看到這麼有水準的翻譯本。

 

 



傳送日期: 2002年3月2日 AM 05:39
居住省份(臺灣讀者請寫縣市):台北縣
對侯捷的建議:除了感謝 很少知道該說些什麼
我從畢業後第一份工作接觸 c++
參考您的書不知凡幾
曾經有一次對於書上內容理解有疑義
抱著有去無回的心理寫了信問您
您仍然在百忙中回信 讓我深受感動
之後提攜後進關於 c++ 的東西 向來推薦您所翻譯的書籍 或您的著作
有一陣子 這本書在市面上根本找不到
著實讓我惋惜了好一陣子
現在又能夠看到這本書 而且是以免費的方式可以閱讀
可以造福的人一定更為廣泛
謝謝你

 

傳送日期: 2002年3月1日 PM 06:21
候先生﹕您好﹗
我是一名大陸的讀者﹐我自從讀過您的大作《深入淺出 MFC 2e》(電子版)之後﹐真是太出色了。可是我不太愛看電子書﹐於是買了一本簡體版的看了一下﹐太令我失望了呀﹐
我希望
在您收到這封信之後﹐能寄給我一本繁體版的
。謝謝您能讀我的信﹐希望您能多出好作品﹗
祝您身體健康﹐萬事如意﹗
您的學生﹕□□□
我的地址是: 中國-黑龍江省-齊齊哈爾市-□□□
郵編﹕161000

●侯捷回覆:幸好我不常遇到你這樣的讀者 :)
此外我也不認為簡體版有你說的這麼差 :)

 

 

傳送日期: 2002年3月2日 AM 02:14
侯老師您好!
很抱歉打擾您一下,
小弟我目前正要學習C++,
但由於一點程式基礎都沒有,
完全沒有C的概念,Basic也沒學過,
對於C++也是正準備要學習的語言,
但不知從何處入手比較好?
經過詢問,大多數的一些會C++的朋友告訴我您的網站,
我上來看了一下,決定請教您一下,
您是否有對於像我這種完全沒有程式基礎的C++超級初學者有所建議呢?
或是請教您如果我想學習C++(Visual C++),
那麼您有沒有推薦的書籍?
希望您能給小弟一個建議,
謝謝您!

很抱歉打擾到您的時間,
希望您能於網站上回覆

 

 

傳送日期: 2002年3月2日 PM 08:00
侯老師﹕您好﹗
我是您大作的忠實讀者﹐但不幸的是您的關於STL的那本書還沒有拜讀過。
我在讀STL源碼時發現了一個問題﹕
在"stl_list.h"有如下代碼﹕

_Node* _M_create_node(const _Tp& __x)
{
_Node* __p = _M_get_node();
__STL_TRY {
construct(&__p->_M_data, __x);
}

而construct的原形在"stl_construct.h"中是﹕

template <class _Tp1, class _Tp2>
inline void construct(_Tp1* __p, const _Tp2& __value) {
new (__p) _Tp1(__value);
}

該文件上標有如下註釋﹕
// construct and destroy. These functions are not part of the C++ standard,
// and are provided for backward compatibility with the HP STL.

我不知HP STL為何物。new的原形在"std_new.h"中為﹕

void* operator new(__STD::size_t) throw(__STD::bad_alloc);
void* operator new(__STD::size_t, const __STD::nothrow_t&) throw()

也比較複雜。
我想知道幾段段代碼的標準C++寫法﹐並希望能得到您的簡單講解﹐萬分感謝。




 

傳送日期: 2002年3月2日 PM 09:50
侯先生您好﹕
偶然在同學處看到您的大作《深入淺出 MFC》﹐不禁被書中透徹的分析所折服﹐於是決定下載拜讀﹐感謝您在學習編程過程中給我們的指點﹐同時﹐更感謝您的慷慨﹗
謝謝﹗祝安好﹗
居住省份(台灣讀者請寫縣市)﹕內蒙古通遼

 

 

 

傳送日期: 2002年3月3日 AM 01:11
候先生﹕
拜讀您寫的《深入淺出MFC》(簡體版)﹐獲益非淺﹔很佩服你有如此幽雅的心境將如此煩雜的技術變成一道清澈的溪流﹐化繁為簡﹐入木三分。我剛剛讀過前幾章﹐發現裡面有幾處術語和一般簡體版計算機書不盡一致的地方﹐儘管可以看出﹐還是想告訴你﹐希望能使先生的書更加完美一些﹐簡列如下﹕
P37 “什麼是C Runtime函數庫的多線程版本”小板塊內 第7行結尾﹕“一種版本給單緒(應該為‘線’)程”﹔
P39 第4行“行(應為“線”吧﹖)程”﹔
此致 敬禮
居住省份(台灣讀者請寫縣市)﹕河南省
對侯捷的建議﹕如上。並希望先生能多寫好書﹐多出簡體版﹗

 

 

 

傳送日期: 2002年3月3日 AM 03:21
候老師﹐你好﹗

我是學自動化的。對計算機特別感興趣﹐但現在有一個重要的決定要下﹐想聽聽你的一些看法。

我想我們自動化主要有三個方向﹕1﹐軟件(但不是我們的強項﹐有計算機的﹐和學管理的在做)﹔2﹐硬件(但也有比我們強的﹐如電子﹐微電子的)﹔3﹐算法(但這需要 很深的功力。不到博士甚至更高﹐是不可能有好大的成果的)。

我想﹐可能每一個學自動化的學生都會有這樣一個疑惑﹕我們到底能幹什麼﹐我們到底什麼是最強的﹖

我真不知道以後該怎麼走﹖

我現在有點想走軟件這條路﹐但聽我們同學說當coder將是人生最大的不幸。但我還比較喜歡編程。現在是大三了﹐過了高程(我現在越發覺得考試沒有什麼用﹐原以為高程會有一點用﹐現在看來實在是沒有什麼用)。在軟件方面﹐我主要是在windows方面﹐大二看了一下mfc(但只能說是有了大致的輪廓﹐具體的程序沒有編過。不怕你笑話﹐超過1000行的程序我也沒有寫過)﹐看了《esstenial c++》,《effective c++》,《inside c++ object model》(但沒有看完)﹐正在看《design patterns>>(覺的寫的不錯﹐但還有很多無法理解)。(最近也在看《windows 操作系統》﹐準備搞搞驅動程序﹐這樣可? 院陀布□□希?br> 對硬件的理解不多﹐只能說在單片機方面有所了解。看了一些搞硬件設計的網站﹐太多東西要學了﹐什麼通信方面的﹐dsp,vhdl,eda等等﹐而我們的專業課也只開了《電路原理》﹐和《信號與系統》﹐遠沒有到達實際工業開發的層次

我想在軟件工程上下點工夫﹐(現在我也開始覺得搞系統設計的才是真正意義上的開發﹐說實話我現在有點反感一種看法﹕誰越底層﹐誰就牛B。其實縱然能寫得出病毒(不包括那些上層script 病毒﹐主要指出系統底層開始攻擊的)﹐但我想這也違背了計算機科學的初衷。關鍵是上面的應用要有大的發展﹐我們談系統底層才有意義。

但是﹐我現在意識到一個嚴重的問題﹐除了計算機方面的知識﹐其他方面的知識我了解得太少了。比如說管理方面的﹐經濟方面的﹐還有系統方面(說實話﹐我也是才大致感覺到了系統觀念的重要性﹐反正一個問題從需求﹐到總體設計都要通盤考慮﹐這也是看了《design patterns》的一些看法﹐還有很多思想不清晰﹐搞得不很透)。

總之﹐我現在的問題是﹕好像我什麼都愛好﹐但我知道作為一個平常的大學生﹐不可能在上面的每一個方面都有所建樹。我真不知道該如何抉擇﹐如何取舍﹖
請侯老? χ傅悖?br>




傳送日期: 2002年3月3日 AM 08:32
候捷先生﹕你好﹗
我是一個在校的大二的學生﹗常聽同學說vc入門很難﹐而且用于開發小型的程序花的時間太久了。本來有很多師兄師姐建議我學bc或vb之類的﹗
但是我又記住了一位朋友跟我說過的“
真正的程序員是用vc的”。所以我覺定認真讀你的《深入淺出mfc》來入門﹗
我很希望在過程中得到你的指點或鼓勵﹗這樣聽起來可能會奢侈了一點﹐但是我還是說了出來﹗因為我真的是這麼想的﹗
希望能夠得到你的回信﹗這樣我會很感激你的﹗

身體健康﹗

 

傳送日期: 2002年3月3日 PM 12:05
您好﹕
偶然間﹐來到您的網站﹐很冒昧的給您寫了這封信。
其實﹐我沒準備技術或者專業方面的問題要問您。在您的自述中看到﹐您曾到東軟中間件授課﹐我目前正在找工作﹐我對東軟不太了解﹐想聽聽您對東軟中間件的看法和感受。
敬侯佳音。

 

 

傳送日期: 2002年3月3日 PM 02:00
侯捷先生﹐您好﹗
  拜讀了您翻譯的《深度探索C++對象模型》(簡體版)受益非淺﹐但是書中有幾處不甚明瞭﹐望賜教﹗

(一)p.105講述了繼承對象的佈局為什麼不緊湊(即除去多餘的填補空間)﹐書上說是因為要防止在進行對象賦值間時出現意外。但是我搞不清書上的例子為什麼會產生意外﹐以書上的例子來說﹕
Concrete2 *pc2;
Concrete1 *pc1_1,*pc1_2;
pc1_1 = pc2; //pc1_1指向Concrete2對象
*pc1_2=*pc1_1; //將Concrete2賦給Concrete1

若採取緊湊的佈局﹐則佈局應該這樣﹕
_____________ ____________
| | | |
| int 4 | | int 4 |
|----------| |----------|
| char 1 | | char 1 |
|----------| |----------|
| | | char 1 |
| padding | |----------|
| 3 | | padding2 |
|__________| |__________|
Concrete1 Concrete2

  但此時將Concrete2賦給Concrete1並不會發生任何問題啊﹐只會將Concrete1的一個padding字節用Concrete2的下面一個char覆蓋。但是把Concrete1賦給Concrete2卻會造成Concrete2下面的一個char被未知數據覆蓋的後果﹐造成書上所說的情況。這樣的話書上例子就應該改成﹕
Concrete2 *pc2;
Concrete1 *pc1_1,*pc1_2;
pc1_1 = pc2; //pc1_1指向Concrete2對象
*pc1_1=*pc1_2; //將Concrete1賦給Concrete2(改)
~~~ ~~~ ~~ ~~
  況且還有兩個地方和我的相印證﹕一是書上的註釋的那個“COPY”箭頭(p.106下面)也是從Concrete1指向Concrete2的﹔二是p.106上部的代碼註釋中有這麼一句﹕“喔歐﹕derived class subobject被覆蓋掉”﹐這個“derived class”也應該指的是Concrete2﹐那麼原文的將Concrete2賦給Concrete1更是沒有道理了。

(二)p.163講述的thunk的虛擬代碼﹕
pbase2_dtor_thunk:this += sizeof(base1);
Derived::~Derived(this);
  其中的“+=”是否應該為“-=”﹖因為通過pbase2刪除對象時﹐其this指針似當往上面(即低址)調整才是。
  同時p.162頁的代碼﹕
(*pbase2->vptr[1].faddr)(pbase2+pbase2->vptr[1].offset);
中的“+”似乎也應是“-”﹐儘管offset可以理解成負數。

最後感謝您為我們翻譯了這麼多的好書﹐祝您的翻譯工作進展順利﹗

 

 

傳送日期: 2002年3月3日 PM 04:43
候老師﹕您好﹗
經常在IT方面看到您的大名﹐也知道您在計算機書籍方面著作頗豐。這次我下載了《深入淺出MFC第二版》﹐首先要感謝您。我對軟件開發感性趣﹐無奈囊中羞澀﹐書太貴﹐象這本書要80元人民幣。只有下些電子書來看。我並不漠視知識產權﹐只是迫于無奈。只有以後再回饋社會了。我得資料如下﹕
地址 河南省

 

 

傳送日期: 2002年3月3日 PM 03:51
候老師﹕
您好﹗不好意思又麻煩您﹐我又有個問題。
由您的推薦﹐我買了Charles Petzold 的 Programming with Windows,這本書裡有很多例程﹐我用VC++6.0編譯這些例程能通過﹐但是不能運行。請問候老師如果要用VC++6.0編譯運行這些程序﹐要注意什麼問題嗎﹖
祝您身體健康﹗
(注﹕買這本Charles的書可花了血本)

 

 

傳送日期: 2002年3月4日 AM 10:55
候老師﹐您好
以下是我的資料﹕
居住省份﹕江蘇省南京市
第一次接觸老師的書是在99年《深入淺出MFC》那時候已經聽很多高手說起老師﹐所以毫不猶豫就買了。
我是先買的老師的書﹐才開始接觸侯捷網站﹐下載一些電子書的。那時候我是一個DOS程序員﹐但是處於對技術的熱愛﹐儘管手頭項目不需要﹐我還是開始了MFC的學習﹐之後還買了老師翻譯的《ESSENTIAL C++》和《INSIDE C++ OBJECT MODEL》真是愛不釋手。但是令我遺憾的是﹐目前大陸好像還買不到您翻譯的《C++ PRIMER》一書﹐不知道老師的這本書在大陸有否出版的﹖
希望以後的幾年裡能讀到老師更多的好書﹐指引我們這幫學生在IT道路上前進。

 

 

傳送日期: 2002年3月4日 PM 05:32
侯老師﹕
你好﹗最近閱讀了你翻譯的《Effective C++》(簡體版)﹐對其中一點不是很清楚﹐希望得到你的幫助。

書中第二十一條說到﹕
“面對 傳回值為內建型別 之函數﹐修改其傳回值是絕對不合法的“。

就以上這點﹐我在 Linux/g++ 下得到的相應錯誤是﹕
non-lvalue in assignment

但我發現這點對於class型別不適用。我可以對函數返回的class object 進行修改。

我不明白為什麼兩者不同。
可否佔用你寶貴的時間給我解釋一下﹖ 謝謝﹗

 

 

傳送日期: 2002年3月4日 PM 07:06
候sir: 您好!
我是北京工業大學的一位碩士生,前不久拜讀您的"深入淺出MFC"一書,自感收穫頗豐,但是我現在的畢業課題搞的是有關信號實時採集並動態分析的軟件.本想用MFC的定時器定時採樣,就不用牽涉到多線程問題,但信號採樣率要求是100ms以下,定時器達不到這種分辨率,所以只有用C運行庫的時間函數來定時採集﹐這樣採集任務只能放在一個函數裡﹐採集不結束﹐函數也不會返回﹐所以只能用多線程編程﹐我聽說您譯過一本《Windows多緒程序設計》﹐但在大陸好像沒有出版﹐不知我在哪裡能得到這本書﹐或者是電子版﹐我對您著的或譯的書都有一種信任感﹐也曾鑽過您譯的LIPPERMAN,Mayer的關於C++的書﹐感覺都是爽極了﹐您的書就算再貴我緊衣縮食也要買。

 


傳送日期: 2002年3月4日 PM 11:57
我下載了你的電子圖書,現把相關資料真寫如下:
居住省份:江蘇.蘇州
對侯捷的建議:其實我對你的書和文章看的不是很多,你的<<Modern C++ Design>>我才看了一半,在看這一本之前,我已經看過了Erich Gamma等著的<<設計模式>>,你的書注重C++本身,而後者注重更實際設計模式,兩者相加,感覺頗有長勁!雖然我現在所使用的主要是DELPHI,但還是很多地方可以借鑒!可是我想如果你能把實際應用和專業的語言相結合一些,可能能夠提出一種更有創意的考慮問題的方法,怎樣把現有的事物轉化成對象,對所要的功能怎樣進行更好的分離?以使代碼的重複編碼到達最少,步局更合理,就象一個很棒的類庫一樣,富有它的多種特性,我們的軟件,不也是想達到這個目的嗎?
對於VC,我的畢業設計什麼的都用它,我看的資料都是C++的.希望能夠借助你的書來進一步加深對MFC,對VC的了解!
我不能確信你會回信!
但總是希望你能給我們更多的驚喜!

 



傳送日期: 2002年3月5日 AM 10:35
主旨: 請問Thinking in Java 2/e
侯老師您好:
請問您譯作的Thinking in Java 2/e 中譯本出版了沒?
記得去年您說預定於 2001 年底完稿。
如果順利,可望於 2002 年初上市。
書海茫茫,不知道是由哪家出版社發行
您能告知一下嗎?

●侯捷回覆:已完成 80%。預定第一季後從眳p(GOTOP)出版。
最新消息請見 侯捷網站 http://www.jjhou.com

 


傳送日期: 2002年3月5日 PM 01:30
> 侯先生:
> 您好.
> 我是一名大陸的程序員,
> 昨天在CSDN網站上下載了您的大作<深入淺出MFC>,
> 並且拜讀了前面幾章, 覺得非常之好,
> 對您能夠以如此生動文筆, 獨特的觀點,
> 來描寫出原本枯燥的技術極為欽佩.
> 對於一些久久未曾明白的原理, 在看了這本書後,
> 有一種恍然大悟, 原來如是的感覺.
> 而在此之前所看的一些VC方面的書,
> 比如從前買的<VC技術內幕>, 通常是看得我昏昏欲睡,
> 並且越看越糊塗. (當然也有翻譯的原因,
> 大陸計算機技術書籍的翻譯水平普遍...)
>
> 對於
通過下載而不是購買您的圖書(雖然您慷慨地提供大家免費閱讀),
>
我深感抱歉, 但也是不得已而為之, 原因有二.
> 一是不知道那裡有賣, 二是囊中羞澀.
> 其後一點大約是所有如我者的藉口了. 但也沒有辦法,
> 大陸的書價相對於普通人工來說是高了一些,
> 而淘汰迅速的計算機書籍更是動輒上百,
> 對於無產者的我來說, 決算不得一個小數目,
> 如果薪水賣足精神食糧的話, 肉體大約只有去吹西北風了.
> 所以網路上的電子圖書自然成了最愛, 況且孔乙己也說:
> "竊書不為偷", 算得老前輩了.
> 當然, 上面所說不過都是些藉口而已, 至於是非曲直,
> 誰都是明白的. 對此
我除了說抱歉外, 大約也做不了甚麼,
> 畢竟暫未打算從良的賊是不會去喊捉賊的.
> 待自己經濟寬裕時, 必然會從正常渠道購買您的新作.
> 可惜經濟寬裕只有等待共產主義或提薪的到來,
> 但兩者都似乎遙遙無期, 唉, 只等得到一聲嘆息而已.
>
> 祝
> 身體安康, 合家幸福
> 居住省份: 江蘇省

●侯捷回覆:你無需說抱歉。東西是我的,我說了要給大家,那就是要給大家;每個人都可以因此光明正大理直氣壯地下載 :)

 

 

 

傳送日期: 2002年3月5日 PM 01:32
侯老師您好!
我是一名C++程序員﹐在讀完了簡體中文版的'Effective C++'後﹐覺得您翻譯的C++書籍對我有很大幫助﹐就把'Essential C++'和'Inside C++ Object Model'也買回來看。
在閱讀您的'Essential C++'時﹐覺得有一些疑問﹐所以冒昧地向您寫信請教一下。
在第150頁的倒數第2節中﹐提到在Fibonacci::elem()中調用gen_elems()時﹐“必須寫成Fibonacci::gen_elems(pos)﹐不能只是簡單地寫gen_elems(pos)”。我覺得“必須”二字值得商榷。
在該頁的最後一節裡﹐解釋了利用class scope運算符﹐可以在編譯時決議gen_elems。這是可以理解的。不過這樣做的好處﹐大概就是省下運行時查找vtbl的時間吧。而並不是必須的。
為了解釋﹐附上我寫的一段小程序﹐我使用的是VC++5.0。

--------------------------------------------------------------------------------


#include <iostream>

// base class
class base {
protected:
virtual void f2() = 0; // equivalent of num_sequence::gen_elems()
};

// sub class
class sub1 : public base{
public:
void f1(); // equivalent of Fibonacci::elem(), call f2()
protected:
void f2(); // equivalent of Fibonacci::gen_elems()
};

void sub1::f1()
{
f2();
}

void sub1::f2()
{
std::cout << "in sub1::f2()" << std::endl;
}

// main
int main()
{
sub1 s1;
s1.f1();
return 0;
}

--------------------------------------------------------------------------------

對sub1::f1()的反彙編(release version, no optimize)結果如下
17: void sub1::f1()
18: {
00401000 push ebp
00401001 mov ebp,esp
00401003 push ecx
00401004 mov dword ptr [ebp-4],ecx
19: f2();
00401007 mov eax,dword ptr [this]
0040100A mov edx,dword ptr [eax]
0040100C mov ecx,dword ptr [this]
0040100F call dword ptr [edx]
20: }
其中從00401007h到0040100Ch就是查vtbl的動作吧。

而如果把sub1::f1()改成
void sub1::f1()
{
sub1::f2();
}
反彙編的結果就變成了
17: void sub1::f1()
18: {
00401000 push ebp
00401001 mov ebp,esp
00401003 push ecx
00401004 mov dword ptr [ebp-4],ecx
19: sub1::f2();
00401007 mov ecx,dword ptr [this]
0040100A call sub1::f2(0x00401013)
20: }

在0040100Ah直接調用sub1::f2()了。
兩者的差就是效率而已﹐執行結果是完全一樣的。

以上是我的想法﹐不知道有沒有誤解﹐請指正。

幾年中﹐渾渾噩噩地寫了數萬行'C++'代碼﹐看了一些書後﹐在回過頭來看﹐最初的一些只能算是C代碼﹐只不過用class代替了struct而已﹐程序裡充滿了“switch(對象的類型) {做不同的事情}”這樣的代碼。現在自覺有所改善﹐不過幾年後再回過頭﹐看到現在的代碼時﹐大概也還會說“這是什麼東西﹐設計得如此拖泥帶水”吧。:) 人總是這樣﹐一山望ぴ一山高。
看過一些日本的大型系統﹐從數百萬行到上億行﹐用COBOL或PL/I﹐完全不是OO的﹐2001年做修改的方法和1970年的基本一樣。幾十年下來﹐人員換了一茬又一茬﹐可那個系統竟然歷經風雨﹐使用到現在﹐不能不說是個奇跡。所以有時候也滿羨慕他們的程序員﹐花幾個月學會一個簡單的COBOL就幾十年有飯吃了:)

 

 

傳送日期: 2002年3月5日 PM 02:20
侯先生﹕
你好﹗
我是大陸南京的一位讀者﹐你的書《深入淺出MFC》《Essential C++》《Inside the C++ Object Model》《Effective c++》我都看過﹐但讀的程度不同﹐有的已經達到了耳目能詳的程度﹐有的只是剛剛勉強(為什麼說勉強的呢﹖因為讀你的書是要動腦子的)看了一遍。
現在自己對C++可以說是既陌生又熟悉﹐為什麼呢﹖因為自己以前對C++只能說懂了點皮毛﹐但自己又沒有機會去接觸更多的東西﹐所以真的有點認為自己懂了不少﹐可是自己看了你的書﹐才發現自己是多麼的幼稚。就象一個比喻﹐老師的問題要多于學生的問題﹐因為他接觸的外界更為廣泛。
我有時候問自己﹐自己對軟件傾注了這麼多心血﹐最終為了什麼﹐可是答案卻只是﹕因為自己喜歡﹗常常看書看得累了﹐自己喜歡經常到你的網站上溜溜﹐汲取前進的動力﹐好多的年輕人都喜歡軟件﹐所以在這裡自己也可以保持一個年輕的心態﹗
一個人的興趣在很大程度上不僅僅是靠喜歡就能夠發展好的﹐好多人都是在讀書的時間不知道自己真正喜歡什麼﹐等到明白以後﹐好多的責任壓到身上來﹐太多的事情使自己不得不放棄了自己的初衷﹐我這樣說是因為我們大多數人的日子都不是那麼殷實﹐可以讓自己任意的發展。
好了﹐隨筆涂鴉﹐不成體系﹐望先生體諒﹗

●侯捷回覆:知道自己的興趣在哪裡,是很幸福的人。能夠依自己的興趣走過人生路,是最幸福的人。


 

傳送日期: 2002年3月5日 PM 06:05
主旨: 望穿秋水
> 侯Sir您好:
> 很高興也很驚喜,因為我在您的網站上看到一則訊息......
> TASS 100%, TIJ2 80%, TCSL 75%
> 緊接著就趕快連到眳p網站...果不其然 三月份新書列出 "STL 源碼剖析"
> 侯老師的大作總是讓大家望穿秋水 : (
> 在此有個不請之請...能否請您在"侯捷寫作年表 (History & Plan)"加入附記
> 將每個寫作進度公佈給大家知道
> 雖說會讓人少份驚喜 但是也免卻了單相思的等待(呵呵...似乎誇張了點)
>
> BTW,不知 Polymorphism in C++, 2/e 目前進度如何?( 等你等到我心痛 >_< )

●侯捷回覆:(1) 出版時以 mailing-list 方式通知大家 (2) 接近尾聲的書籍,才會以 百分比 型式在侯捷網站上告訴大家。這種告知方式適合翻譯書,不適合創作。創作的變動很大,難以評估完成度百分比。你詢問 Polymorphism in C++, 2/e 的進度,我只能說,目前所有技術難題都已掃平。

 

 

 

傳送日期: 2001年3月5日 PM 07:58
居住省份(台灣讀者請寫縣市)﹕上海
對侯捷的建議﹕我以前主要是做硬件的﹐不過對程序設計很感興趣。我是從朋友那兒知道您的﹐才在網上閱讀了關於您的一些文章和您寫的文章﹐很受啟發和教益﹐非常感謝您辛勤的工作。很是希望以後能更多的見到您的文章和書籍。




 

傳送日期: 2002年3月6日 AM 09:15
jjhou﹐您好﹗
居住省份(台灣讀者請寫縣市)﹕廣東
對侯捷的建議﹕
請你繼續認真的寫作。
對於下載你的電子書。。。
  我想﹐做這事還是暗下來做比較好。雖然得到物主首許﹐畢竟是沒本錢的買賣。。。。

●侯捷回覆:得到物主首肯,就可以光明正大地拿 :)  
凡是侯捷網站上開放的電子書,我都已首肯 :)

 

 

傳送日期: 2002年2月25日 PM 05:53
侯老師﹕您好﹗不知你能不能給我回這封信﹐我現在正在學VC++。並且買了你的深入淺出MFC第二版。我感覺這本書對於我來說很難﹐因為以前沒有學過SDK編程﹐C++也只是皮毛。我不知道現在應該怎樣去學。肯請回信。

 

 

傳送日期: 2002年3月6日 PM 07:11
好不容易才在西安找到了您的譯著《Essential C++中文版》﹐他使我對C++產生了巨大了興趣﹐在此感謝您﹗
請問《C++Primer中文版》﹐《C#Primer中文版》﹐《The C++Standard Library中文版》(以上是簡體版)﹐何時才能買的到﹖在哪可以買到﹖求知若渴﹐請來信告知﹗謝謝您﹗

●侯捷回覆:何時才能買的到﹖出版日期見侯捷網站公佈。在哪可以買到﹖見侯捷網站相關網頁所列的華中出版社首發書店。大陸幅員廣大,建議善用網路書店。

 

 

傳送日期: 2002年3月6日 PM 07:41
候捷老師﹕
  您好﹐我剛剛接觸到編程這個領域﹐也是剛剛對您有所了解。我很喜歡你的文章﹐技術
方面的我還不太看得懂﹐但對於你在“2001年(程序員)增值合訂本”中﹐有一些你的專欄
文章﹐我比較欣賞你的文學語言的風格﹐我覺得﹐候老師在文學方面也應該會有一定的素養。
本來我很多關於你的“好聽”的話想說﹐可是剛纔我在您的網站上看到﹐有好多人已經表達
他們的太多的仰慕了﹐在這裡﹐我看我還是想您請問我心中所思所惑。
  先簡單介紹一下我的經歷﹕自學考試中文專科已經畢業﹐我所在私立學校大量開設計算機方面的課程﹐對多計算機原理﹐網絡原理知識都有所涉及﹐辦公軟件系列我操作熟練﹐硬件組裝和軟件裝機一類的計算機基礎知識我都學過。
  我于2000年畢業﹐就業後到現在一直從事銷售方面的工作。
  對於社會上的歷練﹐我感觸較深。我有ぴ很強的悟性與自學能力。但我相應的﹐數學﹐理科方面的基礎不好﹐甚至是近乎與零﹐我從初二開始逃課﹐一直逃到職業高中﹐在我十八歲的時候﹐我參加了工作﹐是一名工人。工作了一年多﹐我發現自己理想已經離自己越來越遠(我很有上近心)。於是﹐我辭了工作﹐來到了哈爾濱市的一所私立學校報了計算機與現代辦公專業﹐期間通過全國通一自學考試考取中文畢業證。我是當時全校那一界學生中﹐學習能力最強的﹐也是很聰明的﹐我玩的比誰都多﹐刻苦的時候也能痛下功夫。於是﹐很快的我通過了全部考試。
  我今年23週歲﹐我現在在北京﹐為了生存和發展我來到了這裡。
  我面對ぴ人生的重新選擇。
  我想投入到軟件開發這個行業中來。我對軟件編程有點興趣﹐並且我知道自己現在只能通過一個堅定的磨練﹐才能實現自己當初給自己的定位﹐才能在這個社會上取得一定的地位﹐才能將自己的個人價值發揮得更好。
  這段時間內﹐我閱讀了大量的關於中國軟件人才和軟件公司的現狀。
  我知道有一件連邦軟件培訓基地正在響應北京市政府的號召﹐開始培養軟件藍領。我相信自己經過在那裡的學習可以成為一名合格的軟件技術工人。
  我知道自己在那裡經過半年的學習之後(
學費一萬五千元人民幣)﹐可以到軟件公司中有實習的機會﹐然後會在軟件公司裡工作和就業。我也會很投入的工作﹐在公司裡﹐我會做一個合格的員工我打算用幾年的時間從事最低層的編碼錄入的工作。
  可是﹐我也要發展﹐軟件藍領也要前進﹐技術工人也要有更好的明天。
  如果可能﹐我會向系統分析員的方向邁進。可是我的問題就在於--我的這種非理
科的基礎﹐是否會受到先天的這種障礙而無法前進(畢竟我在中學時﹐數學沒有學)。
  你說當了三十歲的時候﹐我向ぴ系統分析員方向邁出這一步﹐會成功嗎﹐
  或者到那時﹐我轉做其他方面﹐做銷售工程師能轉型好嗎﹖
  培訓班3月十五號就要開學了﹐我後天會去交費報名。
  我是一個十分渴求發展的人﹐希望事業上有所做為。
  我為了成就自己的事業我選擇了軟件開發。
  我身邊的親人﹐朋友﹐他們不懂這些﹐我只能找您。
  也許這是關於人生職業前景的規劃。
  不知道您能否忙裡偷閑回信給我。
  祝您身體安康。

●侯捷回覆:一萬五千元人民幣實在不是小數目。合新台幣60,000元,如果考慮物價水平,大約是新台幣150,000的購買力。我不知道大陸的培訓班或你所選擇的培訓班,是否物有所值。面對這麼大一筆金額,你真的要仔細考慮清楚。很多培訓班都說可以介紹工作機會,成效如何你也需要多多打聽。

總之,看到你花這麼一大筆錢去受訓,我替你感到緊張。就是在臺灣,大家比較富裕,我都沒有聽過誰誰誰以個人身份花 150,000新台幣去受電腦技術訓練。

我對大陸的就業市場、求職環境、勞資雙方的普遍心態,都沒有認識,實在不能給你前途規劃上的任何建議。我只能給你打氣:(1) 天道酬勤  (2) 英雄不怕出身低。

 



傳送日期: 2002年3月7日 AM 01:26
主旨: 需要<<泛型程式設計與STL>>
> 侯先生﹕
> 一直仰慕你的書。很想收藏<<泛型程式設計與 STL>>﹐也恰因為做thesis需要該書﹐但
> 苦于人在canada﹐數月託人也無法購得﹐只好求與你﹐看有什麼辦法買到你的這本書。
>
> 等待回音.

●侯捷回覆:請詢問臺灣的網路書店(用搜尋引擎找一下),看看他們有無海外服務。

 

 

傳送日期: 2002年3月8日 AM 03:08
您好﹕候先生﹐我是大陸的一位普通工人。從您的網站下載了您的《深入淺出MFC》非常感謝您的工作﹐也很佩服您的胸懷。
不知道您是否可以閱讀GB碼的email﹐然而無論如何﹐請受我的感謝.

 

 

傳送日期: 2002年3月7日 PM 02:08
侯老師您好!
十分抱歉又來打擾您。這幾天工作壓力稍有緩解﹐所以花了更多時間在閱讀您的《Essential C++》上﹐不巧又有一個疑問﹐請您指教。象這樣碰到一個問題就給作者去一封信﹐一定十分令人生厭﹐所以在閱讀下一本您的大作《Inside C++ Object Model》時﹐我想還是積累一些一併提出為好。
這次的疑問發生在第199頁上﹐class MutexLock被用來在退出函數時﹐自動釋放一個Mutex資源。MutexLock的constructor是這樣定義的。(請原諒我的懶惰﹐不想抄那麼多code上來了)
MutexLock(Mutex m) : _lock(m) { _lock.acquire(); }
首先想到的是﹐應該是
MutexLock(Mutex &m) : _lock(m) { _lock.acquire(); } 吧﹖_lock是Mutex&嘛。

又想﹐如果就是書上所寫的樣子﹐會發生什麼呢﹖結合這一頁前面提到的MutexLock的用法﹐
extern Mutex m;
void f()
{ MutexLock ml(m); }
提前把《Inside C++ Object Model》拿出來﹐翻到第62頁﹐意外地發現把object當參數傳﹐有temporary object和直接copy到參數兩種做法。可不管怎麼樣﹐在執行ml的聲明的下一條指令時﹐無論臨時對象還是作為local object的參數都已成仁了。MutexLock的member variable _lock不指向任何人﹐自然後面也不能釋放什麼。
順便想到的是﹐MutexLock的constructor中的_lock.acquire(); 能不能起作用﹐也完全取決于Mutex的性質以及它的copy constructor的寫法。
這次也寫了一段程序驗證﹐環境與上次相同。

--------------------------------------------------------------------------------

// simulate a resource, equivalent of Mutex
class counter {
public:
  counter() { _i = 0; }
  void acquire() { ++_i; }
  void release() { --_i; }
private:
  int _i;
};

// simulate an auto-lock, equivalent of MutexLock
class counter_lock {
public:
  counter_lock(counter ct) :_ct(ct) { _ct.acquire(); } // no effect to the argument
  ~counter_lock() { _ct.release(); } // crash
private:
  counter& _ct;
};

// main
int main()
{
  counter ct;
  counter_lock ctl(ct);
  return 0;
}

--------------------------------------------------------------------------------

這個程序要crash的。dis-assemble結果也看了﹐不過沒有完全看懂﹐就不好意思貼上來了。
僅此而已﹐請指正。

 

 

 

傳送日期: 2002年3月7日 PM 08:21
主旨: a mistaken in my idea about <<Inside The C++ Object Model>>
Hi jjhou,
It maybe have a mistake on P147 in <<Inside The C++ Object Model(潠极)>>.
In Line L17 --- L23.
I think that "magnitude" can't be instead by "Point3D::magnitude".

Take this: Point3d::normalize() has not been overrided,
but Point3D::magnitude has, the problem came now.

Regards




傳送日期: 2002年3月8日 AM 01:16
主旨: 我的觀念是不是錯了

侯老師您好:

拜讀您的Effective C++ (P.136),出現2個讓自己困惑的問題

我先把程式碼陳述出來:

// 程式碼1
string encryptPassword(const string& password)
{
  .....
  string encrypted; // 喚起default constructor
  encrypted = pasword; // 喚起assignment operator
}

// 程式碼2
string encryptPassword(const string& password)
{
  .....
  string encrypted(password); // 喚起copy constructor
}

所以程式碼2比較有效率,因為少掉喚起default constructor

Qestion1:
但是我有一個疑惑 "string encrypted(password)" 這段程式碼
產生string type的這個encrypted變數,
在生成的時候,都不需要喚起constructor嗎?

Question2:
如果程式碼變成member initialization list,
也是只有透過copy constructor來完成,
我可以理解透過copy constructo來完成,
但是仍然是一樣的問題,完全不需要任何的constructor嗎?

我想我目前存在一個觀念就是,一旦任何物件的生成,
都需要喚起對應的constructor,我不知道我是不是陷入這樣的迷失中。

 

 

傳送日期: 2002年3月8日 AM 10:32
候先生﹕
我沒有學過VC﹐只在書店看過"深入淺出MFC"這本書的書名﹐今天上網偶而搜索到你的文章﹐看後深有體會﹐很多話跟我想的一樣﹐有些卻是從來沒想過的。
我是一個大陸自學者﹐現在深圳工作﹐很喜歡程序設計﹐但我現在的工作內容是計算機網絡﹐希望能同時精通兩者﹐以前學了C程序設計﹐當時不知有什麼用﹐所以到現在丟得差不多了﹐我也看過學習過Delphi,但一直不得要領﹐也沒人可問﹐現在學了PHP﹐我覺得我學寫程序一直有個問題﹕看書覺得差不多都懂﹐實現卻不知從何下手﹖
這是不是就是日常所說看來容易做來難呀﹐我一直感到迷惑。希望能看到您的回信﹗﹗﹗﹗盼......

●侯捷回覆:徒學不足以自行。光看書而不實踐,就會落於眼高手低。

 

 

傳送日期: 2002年3月9日 AM 02:12
侯老師好﹗
我是一名程序員。模塊跑在網上﹐中國聯通正拿它換錢。昨日﹐一次割接﹐手機夜不敢停﹐您不騙我的快樂只在閒暇時分紙筆之間﹔此刻﹐兢兢顫顫不遭觸碰﹐睡個安穩覺﹐便是我的快樂──最大快樂﹗而我渴望快樂﹗
看到了您的東軟之行﹐熟悉的集團樓、東東會議廳﹐還有中國湖﹗兩條鳳腿雄雄而立的中國湖﹗那湖真好﹐夏日裡清風徐來﹐座椅不多﹐散步更好﹐各色魚兒水中翔﹔冬季則湖面冰封﹐可掃雪﹐可溜冰。而我竟無緣一瞻您的風采﹐甚為憾事﹗
近來心想《C++ Primer》(當然是您的中譯本﹐繁簡都好)非常﹗想睡安穩﹐更求快樂﹗奈何不可得﹗最費解﹐這事情竟發生在21世紀﹗中國地大物博﹐就是人稀﹐12億人選11個踢球的不容易﹐找出匹敵侯老師者又何嘗簡單﹗
請侯老師指點迷津﹗

 

 

傳送日期: 2002年3月9日 PM 06:30
侯老師﹐你好
我對你的景仰如滔滔江水綿綿不絕....
最近在看<<深入淺出MFC>>時,我看到第三章的源代碼
Frame6時,發現一個問題,就是物件動態生成--使用CreateObject()--也就是New--
以後,在程序結束之前沒有將其 delete 掉,這是否會造成內存泄漏,
因為MFC的這種做法運行一切正常.希望先生有以教我
再次感謝

●侯捷回覆:MFC 內部會處理這個問題。我在《深入淺出MFC》第三章的模擬程式中並未模擬這個行為,《多型與虛擬》2e的 MFCLite3則完整模擬了 clean-up 行為。

 

 

侯老師﹕
您不會介意我這麼稱呼您吧﹖我最近在看先生寫的深入淺出mfc﹐很感謝先生給我們帶來那麼好的書。我是前段時間才知道先生您的﹐最近才看先生的書的(落後﹗)。可真痛苦啊﹐怎麼就沒有人給我介紹先生您的書呢﹖
另﹕關於
mfc第319頁的註釋(7)說的是new一個CMyMDIFrameWnd對象...是不是應該改為new一個CMainFrame對象呢﹖

●侯捷回覆:是的,應改為 new 一個 CMainFrame(CMDIFrameWnd-drived)對象。納入勘誤表,謝謝。

 

 

傳送日期: 2002年3月9日 PM 08:55
居住省份(臺灣讀者請寫縣市):新竹市
對侯捷的建議:
您所翻譯的書實在太好了, 真希望自己能早一點接觸您的書, 下載的緣由是本來上網找effective c++的程式碼沒找到, 倒是看到一些電子書, 我看一下如果有需要我會去買一本 (在家逛書店....), thanks again, 希望您能繼續再翻出更多更好的電腦書, 又, 如果您在有空的情況下, 可否來信告知effective c++的程式碼哪裡找?

●侯捷回覆:原作者並未提供 source code.

 

 

傳送日期: 2002年3月10日 PM 12:11
侯老師﹕
您好﹗《Essential c++》的33頁中﹐說明可以同時讀寫同一個文件﹐我按照書上寫了一個程序﹐卻發現了一些問題﹐希望您能幫助我。
我在VC++6.0中建立了一個windows console 應用﹐在程序中我想對同時對一個文件進行讀寫﹐我的程序如下﹕
fstream iofile("mydata.txt",ios_base::in|ios_base::app);
if(!iofile)
{
  cout<<"can not open the file"<<endl;
}
程序編譯無錯﹐可在執行時﹐總是"can not open the file".我將程序改為﹕
fstream iofile("mydata.txt",ios_base::in|ios_base::out );
if(!iofile)
{
  cout<<"can not open the file"<<endl;
  return -1;
}
則可以打開文件。
但是奇怪的是﹕我只能從文件裡讀數據﹐每當向文件寫數據時便不能成功。我做以下測試﹕
if(iofile<<user_name)
  cout<<"the output success"<<endl;
else
  cout<<"failed"<<endl;//執行結果總是failed.
請問是為什麼﹖
我想也許是編譯器不支持﹐從網上下載了borland c++的freecommandLinetools工具。並設置環境如下﹕
set PATH=d:\c++\BIN
set INCLUDE=d:\C++\INCLUDE
set LIB=d:\C++\LIB
批處理執行之後
但在編譯過程中卻出現許多問題﹐似乎不能正確編譯(同一個程序用cl.exe編譯則通過)。
這又是為什麼﹖

 

 

傳送日期: 2002年3月10日 PM 12:34
侯老師﹕
您好。
學生在學習<<深入淺出MFC(簡體版)>>的第14章MFC多線程程序設計時遇到一個問題﹐仔細思考之後﹐還是不能解決﹐所以向您請教﹐希望您能在百忙中給予指導。
您在<<深入淺出MFC>>第565頁中的線程的結束中談到“在線程結束時﹐應該把該CWinThread對象釋放掉”。所以我在實現第14章那個程序例程的時候﹐安排了一個菜單命令﹐來做各個線程結束後釋放CWinThread對象的工作﹐該自定義的函數如下﹕
void CMltiThrdApp::OnFreeThread()
{
  for( int i = 0; i < 5; i++ )
  {
    delete _pThread[i];
  }
}
程序其他部份的代碼與書上都是一樣的。在所有Worker Thread線程執行結束後﹐我執行這個函數時﹐程序運行卻發生了錯誤﹐提示是“x x x指令引用的x x x內存不能為讀”。是我什麼地方搞錯了導致了這種情況呢﹖如果這種釋放CWinThread對象的方法不對﹐我應該如何釋放CWinThread對象呢﹖還是根本就不需要釋放﹖


 

 

傳送日期: 2002年3月11日 AM 10:49
C++在設計的時候﹐並沒有加入序列化的語言支持﹐隨ぴ1998年標準的通過﹐似乎短期內也不會對此行為進行擴充。

按照Bjarne的觀點﹐此類需求可以通過程序技術來解決﹐並可以實現一個達成此功能的通用庫。

在jjhou的《深入淺出MFC》一書中﹐曾有部份章節提到了這個主題﹐MFC中也有類似的實例。只不過﹐我所需要的是更具有一般化意義的通用的解決方案。

首要的一點﹐在一個包含類層次的設計中﹐我可以使用類的標示將對象的類型信息格式化輸出到stream中﹐在從stream中讀取時﹐解析這個類型信息來決定實例化哪一個類。

顯而易見的問題是﹐類自己可以正確的識別stream中的內容是否與自己的類型相匹配﹐可是作為類的使用者來說﹐他並沒有簡單的方法獲知應該使用這個stream來實例化哪一個類。

最簡單的方法﹐就是使用從stream中提取類型信息﹐進行判斷﹐然後顯式的調用相應類的構造函數進行實例化。但是﹐這樣造成的問題﹐就是在客戶代碼中進行了硬編碼﹐導致設計缺乏靈活性。

可以使用《Design Pattern》中提到的創建型模式來解決缺乏彈性的問題。我的考慮是可以採用prototype模式﹐在類庫中使用singleton模式實例化所有支持序列化的類﹐並提供一個在類型標示信息(典型的是字符串)和實際類型的對象指針之間的單一映射(map)。
這樣﹐客戶代碼僅需要使用映射關係去匹配stream中的類型信息﹐即可以正確的實例化類﹐但是必須滿足的庫的設計要求是所有的類必須從一個共同的基類祖先派生(可以是多次)而來﹐同時序列化功能必須是虛函數﹐才可以籍由一個單一的指針來實例化所有可能的類型。
最後的結果﹐類庫的層次的更改﹐不影響用戶代碼的正確性。

最後的問題是﹐如果我要對一個已知的類體系提供序列化支持﹐怎樣才可以有更通用的解決方案呢﹖

我看了stan和bjarne的很多C++書籍﹐他們的著作中和參考文獻中﹐似乎也沒有提及這個問題﹐不知道您對這個問題有何指教﹐或者能夠提供相關的研究結果索引。
謝謝﹗

 

 

傳送日期: 2002年3月11日 AM 11:18
居住省份﹕四川
對侯捷的建議﹕有人說程式員吃的是“青春飯“﹐我一直從事的是系統維護工作﹐但我發現我更希望做一些有創造性的工作﹐不知現在轉向學習編程是不是晚了些﹖

●侯捷回覆:永遠都不晚。

 

 

傳送日期: 2002年3月11日 PM 07:52
侯老師﹕您好﹗
我現在也正在學習C++,請問在哪兒可以下載 turbo vision 的源代碼啊﹖
謝謝您﹗

●侯捷回覆:看文章不仔細,才會問(我)這個問題。

 

 

傳送日期: 2002年3月11日 PM 01:02
你好候捷先生﹐看到你希望每一位下載本書的讀者都給你一封信﹐我不想下載﹐而直接郵購﹐但我想還是可以給你一封信。
我叫□□﹐男﹐現在上高三﹐住在四川省自貢市。
看到你對我們大陸的讀者如此關心﹐才真正感到兩岸親情的暖意﹐我很敬佩你的人品﹐看到你對別人的侵權如此大度和體諒﹐更覺得應該祝你好運﹐作出更好的作品。
真的﹐從你的話中我才感到兩岸親情血濃于水﹐我對台灣的偏見煙消雲散。

●侯捷回覆:這封信令我開心。

政治是這麼一種東西:昨天的錯,可能是今天的對;今天的對,可能是明天的錯。唯有人本關懷才是永恆光輝。不要讓任何政治意識型態箝制了我們的思想,硬化了我們的心。真的,應該把自己的格局放大。

說遠了。有感而發。

 

 

 

傳送日期: 2002年3月11日 PM 07:49
候捷先生﹐您好﹗

  我是一個欲投身程序員行列的愛好者. 近來屢讀先生大作, 很有感觸. 也買了很多先生推薦(著,譯)大作.( 後面有書目 ) 對於這個行業的技術支持, 我認為 系統基礎 比 平臺應用 有用的多, 我個人比較喜歡算法和數據結構, GP, STL 等等, 現在正在看<< Essential C++ >> 簡體版,
我想標準C++思想學的越徹底越有助于我在這個行業立足, 不知正確否? ( 望先生告知 )
當然, windows api 也是我學習的重點, 但目前還以上訴為主.另外,
程序員是否應涉獵軟件工程, 還望先生點撥一二.

書目:( 按閱讀次序 )
Essential C++
C++ Primer 3nd
數據結構與算法--面嚮對象C++設計模式
( 由於買不到 << GP and STL >> << 范型與虛擬 >> << STL源碼剖析 >> 只好作罷 , 我深深喜歡 GP )
深入淺出MFC 2nd
windows程序設計
C++程序調試
win32多線程程序設計
( windows學習基本完成 )
com本質論 ( 潘愛民 ) ( 先生的沒賣的 )
深度探索C++對象模型

( 以下是自訂的軟件工程書 )
個體軟件過程

另: win32彙編語言程序設計
軟件創富 ( 共享軟件是我的另一選擇 )

候先生的書, 國內不是很好買, 先生能否提供一些方法, 讓我如願!
謝謝!


●侯捷回覆:我常聽到大陸讀者提到「C++ 思想」這個字眼。如果指的是這個語言所帶的OO觀念,那麼如你所言,「學的越徹底越有助于我在這個行業立足」。不過「思想」這個字眼是很重的,說 C++ 是一門思想,可能太重了點 :)

程序員是否應涉獵軟件工程?該。但必須對project有相當的經驗,對於軟件工程才有體會。光只是看書學習,肯定隔靴搔癢,不知所云。

候先生的書, 國內不是很好買。大陸幅員廣大,出版社全面鋪書有相當難度。如果你已認定你要買哪些書,那麼不妨試試網上購買。

 

 

 

傳送日期: 2002年3月11日 PM 09:49
侯先生﹕我在使用《深入淺出MFC簡體版》的配套光盤中的源文件時﹐漢字顯示是亂碼。
請問怎麼解決。

●侯捷回覆:您所見的亂碼是 BIG5 碼(臺灣所使用的漢字內碼)。由於《深入淺出MFC》是出版社與我第一次處理繁體書轉簡體書,忽略了程式碼註解也應該轉譯,很抱歉。解決辦法:請尋找任何一個可以進行 BIG5 -> GB 的字碼轉譯軟體(網上很多,絕大多數都是 freeware 或 shareware),自行轉換。對於這點疏忽,我很抱歉。

 

 

 

傳送日期: 2002年3月11日 AM 10:18
侯老師您好﹕
我是華中科技大學計算機系大三學生﹐最近在學習vc,再讀到您的mfc(第二版)
時﹐又一個疑問一直解決不了。
在您的mfc六大技術仿真中的Frame7範例﹐有如下一段代碼﹕

#define
_IMPLEMENT_RUNTIMECLASS(class_name,base_class_name,wSchema,pfnNew)\
static char lpsz##class_name[]=#class_name;\
CRuntimeClass class_name::class##class_name={\
lpsz##class_name,sizeof(class_name),wschema,pfnNew,\
RUNTIME_CLASS(base_class_name),NULL};\
static AFX_CLASSINIT
_init_##class_name(&class_name::class##class_name);\
CRuntimeClass *class_name::GetRuntimeClass() const\
{ return &class_name::class##class_name; } <----就是這句話


但是在編譯得時候﹐總在最後面那句話那裡出錯﹐
error C2447: missing function header (old-style formal list?)
error C2014: preprocessor command must start as first nonwhite
space
不知道是怎麼回事﹐我用的是vc6.0
另外﹕在後面還有一段代碼﹕
IMPLEMENT_DYNAMIC(CCmdTaeget,CObject)
IMPLEMENT_DYNAMIC(CWinThread,CCmdTarget)
IMPLEMENT_DYNAMIC(CWinApp,CWinThread)
IMPLEMENT_DYNAMIC(CWnd,CCmdTaeget)
IMPLEMENT_DYNAMIC(CFrameWnd,CWnd)
IMPLEMENT_DYNAMIC(CDoument,CCmdTaeget)
IMPLEMENT_DYNAMIC(CView,CWnd)
但出錯提示是﹕
error C2017: illegal escape sequence
沒句話都由這個出錯提示

我有幾個同學說您書上的那些仿真例子﹐沒幾個能夠編譯通過的﹐不知道是不是我
們的版本不一樣造成的﹐或是編譯器環境沒設定對嗎﹖
請抽空回信﹐行嗎﹖謝謝
最後祝您身體健康﹐工作順利﹗

●侯捷回覆:

看看是不是這個原因 — 此處所列的文字說明都已更正於紙本書(繁簡皆含),唯可能書附光碟內的程式碼沒有隨之修正。侯捷網站上所附的這份源碼是正確版本。我會把這份回信納入勘誤表內提醒讀者。謝謝你。

 

 

 

傳送日期: 2002年3月12日 AM 10:58
候先生﹕

冒昧的向您請教一個問題﹐Thinking in Java的 3.1.6 中關於Short-circuiting的論述中有這樣的句子﹕
This means that the expression will be evaluated only until the truth or falsehood of the entire expression can be unambiguously determined.”

簡體版﹕
“這意味ぴ只有明確得出整個表達式真或假的結論﹐才會對表達式進行邏輯求值。”

應該說翻譯的是沒有錯誤的﹐但我就是覺得不舒服。如果我來說這句話﹕
“這意味ぴ只有無法明確得出整個表達式真或假的結論﹐才會對整個表達式進行邏輯求值。”
或者“這意味ぴ如果(只對表達式的部份求值就)可以明確得出整個表達式真或假的結論﹐就不必對整個表達式進行邏輯求值。”

我想找繁體版來對照﹐但這部份沒有開放出來﹐可否請您把繁體版的這部份摘抄給我呢﹖
還有﹐是我的英文太差﹐還是作者表述不清呢﹐也想請您給一個判斷。

此致
我衷心的敬意

●侯捷回覆:技術上的意義是:這意味編譯器會持續評估(核定,evaluate)算式(expression)各部位的值,直到整個算式被明確判定真假為止。你所列的三個文字描述中,第三個比較好。

Short-circuiting 我喜歡稱為「驟死式」,如同高爾夫球逐洞賽,誰贏了這一洞,立刻結束整個比賽。

 

 

傳送日期: 2002年3月12日 PM 01:35
> 侯教授﹕
> 您好﹗
> 近日拜讀您的譯作<<Effective c++>>&<<深入C++對象模型>>﹐惜之我只是一名
> C++的初入門者﹐也非計算機專業的學生﹐故很多地方無法貫通領會﹐可我已有志致身于
> 軟件編程﹐我知道我會遇到很多的困難﹐乞盼您能不吝賜教﹗
> 我的概況是﹕我是一名電氣自動化畢業的學生﹐可我發現我對編程非常有興趣﹐于
> 是開始自學C++語言﹐現下只是停留在玩弄編譯器及syntax的階層上﹐我期望自己能早些
> 走出這個圈子﹐請教授點拔點拔﹗您能給我推荐一些適合于自學的書籍嗎?
> 耽誤您的時間了﹗

●侯捷回覆:我能夠給你的所有建議,都在侯捷網站 的文章或讀者來函回應裡頭。

 

 

傳送日期: 2002年3月12日 PM 01:48
侯老師﹕你好﹐我在看你的幾本譯書上﹐出現幾點疑問﹐煩請你給學生一點解釋。

《深度探索C++模型》中
P5 L9:
有 ostream& operater<<( ostream & os, ……
返回類型好像漏掉了。

p10的圖1.3其中的static member constructor 等沒有線與object相連﹐我不明白他們是
如何被調用的。

p31 L13 pz->cell_block;的存取級別(access lever是protected)意味ぴ他只能在
derive中被使用﹐好像在此使用欠佳。

《C++ Primer 3/e中文版 2001修訂版》中
p299下方的 typedef string:: extern"c" {size_type size_type ;}
象是缺少一個分號“﹔”

以上幾點疑問煩請侯老師能解釋一下。
另﹕我在 http://cpp.chinaccd.net
中開設了一個論壇﹐來討論您的幾本譯作﹐歡迎光臨。

 

 

傳送日期: 2002年3月12日 PM 03:41
jjhou﹐您好﹗
我是一個C++愛好者﹐最近拜讀了您的譯作“深度探索C++對象模型”(簡體版)﹐
其中有一些問題想和您探討﹕
1.您在第5章最後(p.234-p.235)譯注中說“這個順序似乎有點問題……”。

   我在VC++7.0(Visual Studio.net beta2)中作了實驗(通過閱讀
   編譯生成的彙編代碼和在constructor、destructor中直接調用虛擬函數)﹐
   實驗結果證明原著中列出的順序是正確的。幾年前我曾在BC3.1上做過同樣
   的實驗﹐如果我沒記錯的話BC3.1對constructort和destructor所作的擴
   充同樣不具有對稱性。
   
   具體原因我也不是很清楚﹐我猜想正如p.234最後一段所說的﹕
    (a) C++規定一個object的生命結束于其destructor開始執行之時﹔
       (b) 由於base class destructors被輪番調用﹐此(derived) object
       所包含的sub-objects會依次變成a complete object(關於
      “a complete object”的定義可見C++ Standard ISO/IEC 14882
       :1998(E) 1.8節clause 2-3)。
   也就是說﹐在一個derived object的destructor函數體中此object的生命
   應該已經結束﹐而此object所包含的sub-object應該變成a complete object。
   為了給程序員一個機會能操縱此complete object(儘管我還不知道到底什麼
   時候有這樣的需求)﹐vptr必須在destructor函數體執行前就初始化好。


2. p.206最下面說“5. 在那之前﹐所有的virtual base class constructors
   必須被調用﹐從左到右﹐從最深到最淺﹕”。
    
   我個人認為“從左到右﹐從最深到最淺”這個說法容易給讀者造成誤解。
   繼承樹中什麼是最深什麼是最淺﹖C++ Standard中說的是“Depth-first
   left-to-right”﹐似乎應該翻譯為“深度優先從左到右”﹔深度優先指的
   是從most derived class開始在繼承樹構成的有向無環圖中深度優先遍歷﹐
   從左到右指的是在base-specifier-list中base class name所出現的次序。

3. C++是嚴格區分“new operator”和“operator new”﹐以及
   “delete operator”和“operator delete”的。但在6.2章節中﹐似乎在
   這些術語的翻譯上沒有作嚴格的區分。
   
     例如﹐6.2章節最開始說“運算符new的使用﹐看起來……”﹐此處似乎應該
     是“new operator”。
     又如﹐p.256中下面一段“一般的library對於new運算符的實現……”﹐
     此處似乎應該是“operator new”。   
   
    如果說是將“new operator”翻譯為“運算符new”﹐而將“operator new”
    翻譯為“new運算符”﹐作為一個約定俗成也未嘗不可﹐但﹕
     p.254中下有“delete運算符的情況類似。當程序員寫下﹕delete pi﹔”。
     此處的確是“delete operator”﹐但翻譯為“delete運算符”與前述約定
     不一致。

4. p.263頁中間的for循環體﹕“Point *p=&((Point3d*)ptr)[ix];”應該也是
    對的。例如程序員常干這樣的事﹕
      Base *p = new Derived;
delete p;
因為表達式“((Point3d*)ptr)[ix]”已經使我們正確的獲得了數組中第ix個
    Point3d類型的對象﹐此時將它的地址賦值給Poing *p﹐後面再“delete p”
    時不會出現對象大小計算錯誤﹐也不會調用錯誤的destructor﹐因為我們沒有
    通過“vec_delete”。
    
當然正如書中所說﹐我們不能這樣做﹕
Base *p = new Derived[10];
delete[] p;
    因為p+i指向的並不是第i+1個Derived對象﹐調用的destructor也不是virtual
    的。

以上純屬個人意見﹐謝謝﹗


 

傳送日期: 2002年3月13日 AM 06:18
候先生﹐您好﹗
謝謝你對我的指導!
我如果想培養OO觀念, 提高設計能力, 要怎樣修改學習計劃, 請先生點撥! 附上我的書目, 請您費心! 謝謝!

書目:( 按閱讀次序 )
Essential C++
C++ Primer 3nd
Effective C++ 2nd
數據結構與算法--面嚮對象C++設計模式
( 由於買不到 << GP and STL >> << 范型與虛擬 >> << STL源碼剖析 >> 只好作罷 , 我深深喜歡 GP )
深入淺出MFC 2nd
windows程序設計
C++程序調試
win32多線程程序設計
( windows學習基本完成 )
深度探索C++對象模型
  

 

傳送日期: 2002年3月13日 AM 11:20
候捷老師:
你好!相信你是位大忙人,你但我還是想請你給我一點建議.
我的問題是:我現在在已掌握了C語言的基本程序設計,能編寫最簡單的"程序"(或許還稱不上什麼程序).現在我遇到的問題就是不知接下來應如何學習,還需要哪方面的內容,才能一步步地向程序員邁近.現在有點迷失方向了.請候捷老師指點.
最後我有一個不請之請,能否儘快給予我答復,最好能回復到我信箱( ... )謝謝!!

 

 

傳送日期: 2002年3月13日 AM 11:41
主旨: 關於多型與虛擬 初版七刷 勘誤
侯老師您好:
       我是您的忠實讀者。對於您的書總是愛不釋手、格外珍藏,
       每回細讀,總有欣然愉悅之心,雀躍不已。
       最近回讀多型與虛擬這本書,從中發現誤失,因為在您的
       網站找不到七刷的勘誤,因此"提鍵寫信"告訴侯老師這個誤失。
 
   原P.239 圖 5.5 底下CDocument:::classCDocument
   改成 CDocument::classCDocument
 
    不好意思打擾了。     

       此外,剛在P.117 中間的圖(CPoint's vtbl)
       其索引值為1 所指的是 ~Point(),是否應改為~CPoint()?

PS:同樣也是初版七刷的問題。
再次打擾了。

●侯捷回覆:《多型與虛擬》1e 已絕版。2e正全面改版中。謝謝你的來信。

 

 

傳送日期: 2002年3月13日 AM 11:44
主旨: 多型與虛擬作品勘誤

多型與虛擬作品勘誤
本人購買的是 1998年7月初版, 日前再次研讀時發現第 9 頁 倒數第 4 行
cout << "i=" << " and pi=" << f <<endl;
此處的 f 變數應該是 pi
我在網站上的刊誤表找不到, 我想應該是初版的錯誤, 二刷以後應該沒有這個錯誤.

●侯捷回覆:是的。謝謝。
《多型與虛擬》1e 已絕版。2e正全面改版中。謝謝你的來信。

 

 

 

傳送日期: 2002年3月13日 PM 12:32
侯捷先生﹕
你好﹐我是一名在廣州從事軟件開發的程序員﹐從事軟件開發半年來﹐感觸很多。不知你有沒空看我下面的幾個問題﹕
1現在很想學C++﹐打算編寫電訊軟件﹐比如﹐手機增值、手機銀行、企業短信等﹐可不知道選那些書(我用過VB6.0、ASP寫程序)﹐麻煩你推薦兩本給我﹐好嗎﹖。
2聽你介紹那本《C++ Primer》很不錯﹐可在廣州找不到中文版﹐在網上也不知道在那個網站可以下載﹐怎樣才能找到這本書呢﹖
3怎樣才能學好編程﹖這可能是個比較難回答的問題﹐每個人的能力都不同﹐但我還是很希望你能提幾點好的建議。
Thanks for your time.

 

 

 

傳送日期: 2002年3月13日 PM 04:06
尊敬的侯捷老師﹕

我們是位於南京的 東林互聯工作室 。現有五位成員我們對於微軟的最新技術.NET和互聯網的革命核心技術XML有ぴ濃厚的興趣﹐並且已經在使用.NET技術構架我們的各類應用方案﹐如使用ASP.NET構架的SCM企業分銷系統、使用WebServices技術構架的個人資信評級系統等。在熟悉這些技術的過程中﹐我們越來越感受到了這一場技術革命的劃時代意義。您的書和文章我們都讀過很多﹐讀之完全沒有枯燥的感覺﹐雖然未曾謀面甚至不聞其聲﹐我們卻早把你當成了良師益友。早就想找個機會享受一下與大師的雙向交流﹐可總是怕師出無名。現在好了﹐我們于近期完全使用微軟的.NET技術建設了交流新技術的網上社區──XML中華網(WWW.XMLCHINA.NET)﹐具體對於XML/BIZTALK、WEB SERVICES/SOAP、.NET技術、SQLSERVER、EXCHANGE等領域的新技術進行介紹和交流﹐我們希望能得到候先生的任何形式的支持﹐那將是對我們的最大鼓勵﹐我們將不勝榮幸。盼望ぴ您的答復。如果您方便的話﹐在我們的站點上註冊個用戶﹐留幾句話﹐那樣我們五個人會去買酒喝的﹕)

東林互聯工作室

●侯捷回覆:東林互聯工作室 的朋友們,你們好。各位的網站我上去看了。很好。加油。

 

 

傳送日期: 2002年3月13日 PM 05:13
侯捷老師﹕
居住省份﹕內蒙古自治區
對您的建議﹕注意身體﹐身體是革命的本錢﹕(
我這樣給您建議﹐純粹是因為我對技術的認識不夠深刻﹐還沒有資格對您的著作或者您的工作提出任何建議﹐也許這樣說過於謙卑﹐但是我相信﹐總有一天我會給您提出有份量的建議的﹗工作順利﹗﹗

 

 

傳送日期: 2002年3月13日 PM 05:02
主旨: 侯老師!想向您請教 Thinking in Java 2/e 中文版 何時可以出版!
侯老師 :
自在您的 個人網站上 看到你有在 譯  Thinking in Java 2/e 中文版
就引領期待!這本書的出版!
不好意思!
寫信來請問老師!
這本書!
約何時會出版!
約何時可以在市面上買到!
謝謝

 

傳送日期: 2002年3月13日 PM 05:37
尊敬的侯先生﹕
您好﹗
我是南京航空航天大學的一名在讀研究生﹐由於課題需要﹐正在學習VC++﹐通過朋友的極力推薦﹐我拜讀了您的大作《深入淺出MFC》﹐那種感受真的妙不可言﹐就如撥雲見日﹐立放光芒﹐我懂得了好多以前另我迷茫的東西﹐真的感謝您能為我們寫了這本優秀的書﹗請您再接再厲﹐為我們帶來更多優秀的書籍﹗
我現在想應用您書中所載的Scribble程序來改寫為自己的程序﹐主要是在原來的基礎上添加Windows畫筆的一部份功能﹐比如畫筆的顏色﹐我是這樣做的﹐先定義三個變量(b_Red、b_Green、b_Blue),用來表示三種顏色值﹔再定義一個COLORREF變量(m_nPenColor)﹐用來代替createpen函數中的RGB參數﹐然後在CStroke的Serialize函數中存儲三個顏色變量(b_Red、b_Green、b_Blue),結果當時啟動紅色筆書寫時能正確在計算機上顯示﹐但是﹐當我將文件存盤後﹐再打開﹐所有的顏色都變成了黑色﹐我查看了存盤後的文件﹐發現顏色數值確實存了﹐但是為什麼無法顯示﹐我百思不得其解﹐請侯先生在百忙中給我指點迷津﹐不勝感激﹗
期待ぴ您的回復﹐謝謝﹗



傳送日期: 2002年3月13日 PM 07:56
侯先生﹕
我是你的一個新讀者﹐不過很快就成了一個忠實的讀者﹐但是我讀了你的文章﹐然後再結合我自己的愛好和現在的學習﹐我開始對自己的前途和學業感到迷惑和矛盾﹐想向你請教﹖
現在我是大陸的一名在校大學生﹐我學的是電子工程專業﹐我開始對計算機發生興趣也是近一年來的事﹐以前我一直認為計算機只能充當我生活和工作的工具﹐而沒想過讓他成為我的職業。但是當我開始學習軟件課﹐並為了學好而去找書看時﹐我發現我很喜歡這個行業﹐並有很濃厚的興趣以程序員(當然軟件工程師更好)為一生的職業。於是我開始在這方面努力﹐並努力學習ぴC++和數據結構和算法。
問題就出現在我馬上就要專科畢業了﹐學校可以讓我通過考試轉為本科(因為我是當年高考志願填報不當﹐而讀的專科)。但又只能在這個專業﹐而我對我現在的專業又不是很又興趣﹐而且我的經濟狀況也比較的困難﹐所以我對昇學還是畢業感到難以取舍﹐你在有一期《程序員》曾提到過這個問題﹐我現在擔心的是升了學﹐而我不喜歡﹐也沒有什麼實際的意義。不昇學﹐專科文憑在今後的找工作和發展也會帶來很多的麻煩﹐還有我的家庭情況又希望我在經濟上很快的獨立﹐我很難下定決心在其中選擇一條路。
所以現在我一邊準備考試﹐一邊準備工作﹐讓我很累(主要是精神的)。

 

 

傳送日期: 2002年3月13日 PM 10:00
侯先生﹕
在《深入淺出MFC》中﹐對於SCribble Step1,我按照您的代碼輸入之後,不能運行。

對於類型 CTypedPtrList<CObList,CStroke*>
以及 CArray<CPoint,CPoint>

編譯器不能識別﹐並出現如下錯誤
error C2143: syntax error : missing ';' before '<'
error C2501: 'CArray' : missing storage-class or type specifiers
error C2059: syntax error : '<'
error C2501: 'CTypedPtrList' : missing storage-class or type specifiers

大部份都是此類錯誤﹐我不明白VC6為什麼不能識別此類型
望告知﹐謝謝﹗

●侯捷回覆:書中程式無誤。

 

 

傳送日期: 2002年3月13日 PM 11:26
Dear jjhou:

Recently I bought one book named "Essential Com" ,
a chinese version translated by Aimin Pan <潘愛民>.

The source code of the book is not attached to the book.
I can not contact with the writer Aimin Pan.

When I asked to the publishing company for the source code ,
someone of the company told me they have no source code.
it's ridiculous.

And as the book said ,i could download the source code from one website. when i accessed it ,
i found that i had no right to download.

As I know ,you have traslated the book to tranditional
chinese version,
and you are a good author ,so maybe you have the source code ,
and would you please send it to me ?


By the way ,I 've bought several simplified chinese book translated by you ,
<inside C++ Object Model> <effecitive C++> <Essential C++>
And the book written by you <<Dessecting MFC>> ,
All are really very good .
Because I am working on Java,still not finish reading them,
I am glad to see that you translate the "Effective Java ....".
I've got one simplified chinese version translated in mainlan ,not by you.
Java is the trend ,but the thoughts of the C++ books
will not be out of date.

Maybe I make some mistakes on the English Letter,
Thanks for that you've read this letter.

●侯捷回覆:已將《COM 本質論》的源碼開放於這裡供下載。

 

 

傳送日期: 2002年3月14日 AM 07:22
主旨: 您好
侯老師,您好,在下初學c/c++不久,曾拜讀其大作,讓在下對侯老師有著一份深刻的印象,目前在下對於視窗設計覺得有很高的門檻跨不過去,能否請侯老師為在下解惑呢?
1.對於初學視窗設計的入門書能否請指點一二?(在對c/c++有一定基礎前提之下)
2.在視窗程式設計之中用何種的開發工具才好!就bcb和vc而言
孰優孰劣呢?能否請侯老師稍稍說明一下呢?
在下不才!對程式設計有極高興趣但不得其門而入,望侯老師能指點一二!感謝再感謝!
祝平安快樂 凡塵

 

 

傳送日期: 2002年3月14日 PM 11:27
您的<<C++ primer>>會出簡體版嗎﹖我迫切需要這本書﹐如果近期出﹐我會等﹐如果不打算出了﹐我就只好買繁體版了。您一定要回答我﹗
祝您身體健康﹐心情愉快﹗

●侯捷回覆:《C++ Primer》侯捷譯本 沒有出簡體版。

 

 

傳送日期: 2002年3月15日 PM 03:39
侯先生﹕您好﹗
我是一名大陸讀者﹐以讀您的書為樂。最近買了不少您譯的書﹐包括《effective c++》感覺讀起來很流暢﹐非常慶幸自己能夠享受到您帶給我們的文化。衷心希望您身體健康﹐走筆生花﹐一如既往。
今天是週末﹐我又上了您的網站﹐讀您的散文﹐照例的賞心悅目﹐照舊的會心愉悅﹐只是在讀《歐游雜記》的關於奧地利時有一段從文字的角度覺得有點點小小的意見﹕)

“在維也納森林中看到了舒伯特的菩提樹﹐在薩爾茲堡走進莫扎特的家。走在歷史人物走過的石板上﹐坐在歷史人物坐過的樹蔭下﹐感覺很奇怪﹐飄緲又悠揚。念天地悠悠﹐獨愴然淚下。蘇東坡赤壁懷古﹐我侯捷未嘗沒有思古幽情﹐只是我沒那種才情寫下來。“

這一段總體說來很美﹐只是“念天地悠悠﹐獨愴然淚下”與“蘇東坡赤壁懷古”並在一起有兩個不好﹕1讓人誤會前者為蘇東坡所作。2從行文上稍嫌堆砌
不如將第二句去掉反好。
您可別誤會我是吃飽了。。。﹕)。當然也只是一家之言。﹕)
祝好﹗啊對了﹐您一家真是才貌雙全﹕)(看照片)

 

 

傳送日期: 2002年3月15日 PM 01:29
侯老師你好:
我是一名普通的程序員,我心中一直有個疑問?我不知道您對內地的情況了解有多少,
反正近幾年內地對學歷的要求越來越高,許多公司都要求碩士以上學歷,我只是一名不起眼
的本科生,根本連談的機會都沒有.我現在很迷茫,我是應該辭職考研究生,還是應該繼續走
我的程序員生涯,其實我心裡很不想花上大半年時間去復習那些無聊的課程(數學,英語,政治),
這些課程可以說一點用都沒有,只是一堆應試的考題.不過,好像補考研究生以後就沒什麼出路了,
我的好多同學都辭職去考了研究生.您能給我一些建議嗎?謝謝!

 

 

 

傳送日期: 2002年3月15日 AM 11:24
侯捷先生﹐您好﹕
我看完了Charles Petzold的《Programe Windows》。現在﹐我想將Win API學的更深些。四處打聽後得知有兩本好書﹐一本是清華大學出版社的《Windows高級編程指南》﹔另一本是機械工業出版社的《Windows核心編程》。但是這兩本書都是Jeffrey Richter的大作﹐從章節上看﹐它們又有不少地方是重複的﹐我就不知道它兩者的側重點在哪裡﹐又有什麼不同。我有該如何選擇呢﹖
我知道您很忙﹐但我也知道您很有說服力﹐故希望您在百忙之中給我些指點。在此先謝過了﹗

 

傳送日期: 2002年3月15日 PM 05:40
Mr. Hou,
     I am very honored that I have opportunity to read your excellent book
Dissecting MFC 2e.I am a junior professional programmer.Your book told me
more I should know early but can't get from other books.I am a self-taught
graduate major in computer application come from ShaanXi Province,and now
work in GuangDong Province.Also I have read your speech on technological
translation published in Programmer Journal.I am eagerly looking forward to
your new works.
       Sincerely thank you!

With Best Wishes,

 

 

傳送日期: 2002年3月16日 AM 01:24
候捷先生﹐您好﹗
我在閱讀你的“The C++ standard library”一書時﹐發現幾處可能的筆誤。
1. P93 5.3.2 Iterator Categories中﹐第2段第一句話寫道“跌帶器分為5種不同類型”﹐但實際上只有兩種。而且我查閱英文原版時﹐發現也沒有提到5種。
2. P75 您在講容器的類別是﹐講到了sequence containers﹐和associative containers。在每種的第一句話﹐我覺得英文書中比較清楚地區分了這兩種容器是sorted還是ordered。而您的書中好像比較含混。

一點簡單看法﹐還望指正。

●侯捷回覆:
(1) iterator 確實是五種 categories : input, output, forward, bidirectional, random-access. 英文書沒明說5種,中譯本幫你說清楚 :)    至於接下來的文字那是說:STL 預先定義好的容器,其迭代器屬於 5 種之中的 bidirectional, random-access 兩種。

(2) sorted 和 ordered 應該用怎樣的中文字眼比較好?如果您有好想法請告訴我。通常我說sorted 為「排序」或「已序」,ordered 為「有序」。

 

傳送日期: 2002年3月16日 PM 03:27
居住省份(台灣讀者請寫縣市)﹕新疆阿勒泰市
對侯捷的建議﹕多寫好書﹐多在大陸出版些書。您的工作很有價值﹗

 

傳送日期: 2002年3月16日 PM 06:17
候老師﹕我是一家大公司的產品資料寫作人員﹐我非常希望能得到中文版的有關寫作技巧的培訓教材﹐熱切盼望能得到您的幫助。謝謝﹗

●侯捷回覆:沒看過這類培訓教材 :)

 

 

傳送日期: 2002年3月17日 PM 09:00
我現在34歲﹐在深圳﹐軟件工程師﹐男﹐
為什麼不把PDF壓縮一下呢﹐可節省很多下載時間。致禮﹗

●侯捷回覆:兄弟,據我所知,PDF 是一種自動壓縮格式。你一定要看到 .zip 才是壓縮?

 

 

傳送日期: 2002年3月17日 PM 09:43
《程序員》第三期您提到了“因特網”這個糟糕的翻譯。據我所知﹐這個翻譯似乎
出現在“互聯網”之後而不是之前。這是一個典型(所幸並不常見)的壞標準替代
好習慣的事件。“因特網”是大陸對於 Internet 的“標準”翻譯。同時的標準中
還有“電子函件”(e-mail)﹐不過這個譯法沒有流行起來。以前一般用“國際互
聯網”譯 Internet﹐用“互聯網”譯 internet。我聽到一種說法是有人覺得“因
特網”三個字比較短﹐比較好記和容易打字﹐因而就使用了這個術語。無論如何﹐
我現在覺得“標準”術語雖然很糟糕﹐但願意使用這個術語的人還是挺多的(對比
而言﹐“標準”並沒有使“電子函件”成為大眾願意使用的詞)。

當然﹐我個人還是更喜歡“國際互聯網”這個譯法。“互聯網”也可以認為是一種
簡略用法(如同使用 the Net 指代 the Internet)。沒有理由認為中文一定要嚴
格區分 the Internet 和 internets(我記得後者仍譯為“互聯網”﹔這似乎是標
准化者的理由之一)。對這些制定“標準”的老專家﹐我有時真的感覺受夠了。順
便說一句﹐我覺得“網際網”這個譯法也是相當不錯的。

●侯捷回覆:很開心您寫信與我討論這類問題。

我覺得 “互聯網” 非常好,而且不必再區分國際或不國際 — 它肯定是國際的(現在及
將來)。我寫那篇文章的時候,”網際網” 一詞也閃過我的腦海。是的,它非常好,我也很喜歡它。你我所見略同。

 

 

傳送日期: 2002年3月16日 PM 12:13
Dear Mr.Hou:

我剛剛畢業于華中理工大學計科系,現在在讀研究生。讀到您的《深入淺出MFC》真的是受益匪淺!在看其他書時的猜測居然很多都在您的書中得到了證實!非常感謝!

在閱讀您的書第11章《View 功能之加強 重繪效率之提昇》利用hint 增加重繪效率 一節中,您在void CScribbleView::OnDraw(CDC* pDC) 中增加了兩行代碼:
rectStroke = pStroke->GetBoundingRect();
if (!rectStroke.IntersectRect(&rectStroke,&rectClip)) continue;
當時我看了這兩行代碼,理解為每次在一個view中改動后應重繪与新增加的stroke所包圍的rect有交集的所有stroke,但實際上我在調試程序中發現只是重繪了新增加的stroke所包圍的rect中間那一部分,而不是重繪整個stroke(我在BOOL CStroke::DrawStroke(CDC* pDC) 中使用了sleep所以可以看出机器的繪圖動作),所以我猜測在void CScribbleView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)中的 InvalidateRect(&rectInvalid); 語句已經決定了重繪的區域,而不需要再在OnDraw中處理,于是注釋掉了OnDraw中的那兩行代碼,執行程序后,的确也是只重繪改變的矩形區域(源代碼在附件里)。我不知道我的猜測是否正确?如果正确,是不是由于OS的不同(WinXP on my computer)?

如果能夠得到您百忙之中的指點,我將不深感激!
祝您一切順利! 您的讀者敬上!

 

 

傳送日期: 2002年3月18日 AM 10:10
侯老師﹕
首先﹐謝謝你的電子圖書﹐我是一名大陸的學生﹐希望能夠成為c++的程序員﹐並且一直在努力﹐可是總覺得見效不快﹐望指點一二﹐不勝感激.
我曾經學過thinking c++和borland c++ builder開發人員指南,覺得不能令武器要領。希望能夠給我推薦幾本c++方面的書﹐也希望你能給我一些建議﹐再次感謝。

 


傳送日期: 2002年3月18日 PM 01:36
侯老師﹕
您好﹐在閱讀您發表在《程序員》今年第三期上的文章時﹐我對您對"Internet"一詞的翻譯的看法有些不同的意見。
從科技術語的上說"internet"和"Internet"的含義有一定的差別。前者應譯為“互聯網”﹐後者譯為“因特網”。在安德魯.S.坦尼鮑姆著﹐清華影印的《計算機網絡》的第17頁左右可以找到一些與此相關的內容。
從時間上說﹐大陸在把"Internet"的標準譯法定為“因特網”之前﹐一直使用“互聯網”或“國際互聯網”的譯法(據我所知﹐至少用了兩三年)。因此談不上“一開始沒有想到‘互聯網’這個好詞”。標準訂立之初﹐我對此也十分不解﹐後來才漸漸覺得可能是由於前面提到的原因。另外﹐譯為“因特網”而不是“英特網”是為了避免與“英特爾”發生混淆。
最後感謝您對我們所做的一切。
此致 敬禮

●侯捷回覆:謝謝你的討論。
internet 和 Internet 的區分,俱往矣。現在哪一個 internet 不是 Internet?哪一個「互聯網」不是「國際互聯網」?
我比較感到趣味的是,怎麼能用音譯來譯這個名詞?而且下令全國統一?我在文中寫了一小段話,因於政治敏感,雜誌上拿掉了,我是這麼寫的

我並不嘲笑最初創造「因特網」一詞的那個人,只是聽說大陸官方要求媒體必須採用「因特網」,我個人覺得很…呃…該怎麼說才能不傷感情呢…很…呃…有趣吧。

謝謝你的來信 :)

 

 

傳送日期: 2002年3月18日 PM 05:17
侯老師﹐您好﹗
我是計算機系的畢業生﹐工作已有一年半﹐從事的工作多半是unix環境下的應用系統維護﹐也有部份小的c程序開發。現在我想學習windows環境下的vc++編程﹐想請教您能否給我列個閱讀書目﹐從windows api到mfc(聽說先得學sdk).
謝謝﹗

 


傳送日期: 2002年3月18日 PM 10:09
> 現職:廣達電腦無線事業部
> 侯先生你好
> 常聽到別人提起您的大作, 今日下載一看果然不同凡響
> 希望您能出更多好書嘉惠大家 (最好是免費的)

●侯捷回覆:我對於「希望寫些免費的書或資料給大家看」的建議通常只是笑笑,但是看了你的公司名稱,我笑不出來,有點 upset。身為股王的員工,您這樣說得過去嗎?

年輕的時候,總希望別人請客,自己吃免錢。看到大人「搶著付帳」的行徑覺得愚蠢。及長,有了經濟能力,再也不想讓別人憑白無故請客。這是小孩與大人的區別。

 

 

傳送日期: 2002年3月19日 AM 10:52
現職﹕VC開發工程師
您的書都很有啟發性﹐如果能更多的深入大型項目的整個開發講解就更好了
我剛畢業兩年﹐用VC有10個月了﹐不過還只是做過一些很簡單的軟件﹐缺乏大項目的經驗和了解我希望能夠到國際性的大型軟件公司去獲得更多的鍛煉﹐請您為我的應聘準備提一些參考意見﹐謝謝了
祝您和您的書越來越好﹗

 

 

傳送日期: 2002年3月19日 PM 10:17
候老師你好:
我是一名大陸的您的讀者。最近正在閱讀您譯的《Multithreading Application in Win32 The Complete Guide to Threads》。不過我在閱讀該第三章的時候產生一個問題,久思不得其解,所以在這里還忘老師教我,謝謝。
我對第三章所描述的Busy Waiting不是很理解,因為WIN9X&2K是一種搶先式多任務操作系統,所以操作系統本身會維護為程序分析CPU時間片的工作。但是如果是這樣,為什麼還會有Busy Waiting情況的出現占據操作系統絕大部分的CPU時間呢?
希望候老師能在百忙之中對我的問題回答一下,學生在此之外先謝過了。

 

傳送日期: 2002年3月20日 AM 09:54
侯老師﹕您好﹗
我是您的忠實讀者﹐最近閱讀了您的《Win32多線程程序設計》﹐我想請教您我實踐中碰到的問題﹕
我在使用多線程﹐主線程負責用戶界面﹐工作線程使用Overlapped I/O進行通訊時﹐經常會出現這樣的問題﹕
開始運行一切正常﹐但一段時間後﹐系統會報錯﹕“正在處理重疊的I/O操作”﹐程序停止運行。您能不能指點一下我﹖
向您表示崇高的敬意﹗

 

傳送日期: 2002年3月20日 PM 02:02
dear hou,
thanks for your ebook,you are so kinds of author that i know.
i 'd like to introduce myself.
i come from xingjiang automation of mainland which located in north-west china,
and i am han race ,my father come from jiangsu province.
i was graduated from the China University of Geoscience which located at wuhan city.my major in school is measurement engineering,i feel like programing since
1999. now i study Gis programing in dalian city,your articles are so beautiful,
i like its very much,i has purchased your two book,The Effective C++ etc.and i plan to purchase you all books .but as you know, as i beginner, i am so poor and my family couldn't help me more ,you know ,they are all peasants.i only depand on myself,i will work hard more and more until i can purchase your original books and the good English books freely,i want to act your student one day,of course, now, i am your student, i study your books ,think your articles
and your enlighten,your oppions,and so on.
my age is 28 ,it is some old ,but you give me a courage in your article of that
"但教心似金鈿堅" that pressed in Programmer of China, that you said is my instruct,
ok ,let me say these,sorry to waste your time,
thanks again , i will persist your instuct in my life and working, studying for ever,my dream is that ,one day, i can catch up with you.and do as better as yours.
good luck!
yours sincerely,



傳送日期: 2002年3月20日 PM 01:39
侯sir﹕
您好﹐我是上海一家通信公司的軟件工程師﹐最近拜讀了您的一些作品
和文章﹐深受啟發﹐在此先行謝過了。
我進行軟件開發所基於的平臺是嵌入式系統(如linux)﹐想向您討教一下﹐
在這樣的系統上用c++開發軟件﹐您可有什麼見解﹐能否給我一個推薦書單。
感激不盡。

 

 

傳送日期: 2002年3月20日 PM 07:07
侯Sir﹕你好﹔
我是你大陸的一位忠實的讀者。
我有一個問題想請教一下﹐在Win32平臺下﹐在一個進程中申請的內存﹐如果沒有被顯式釋
放﹐那麼在進程結束後﹐系統是否會自動收回這部份內存。
我認為會﹐但是我的C++老師認為不會。我希望能找個權威。麻煩你給我解答一下

●侯捷回覆:現代作業系統(modern O.S.)應該都會在 process 結束後回收該 process 所用的所有 memory。 

 

 

傳送日期: 2002年3月20日 PM 09:37
侯大俠﹕
我是一個華中理工的研究生﹐非常希望能成為一名程序員﹐可惜我的專業是船舶﹐課題中計算機也用得很少﹐平時只能自己在電腦上學點東西﹐可總是不得法﹐進展很小。
眼看就要畢業了﹐看到同學們一個一個都找到了滿意的工作﹐可我由於課題太偏﹐又不願意從事船舶行業﹐加上計算機水平有限﹐到現在還沒有ぴ落。好容易元旦時聯系了清華的一個研究中心﹐主要從事軟件開發﹐和那裡的負責老師談得很好﹐可還是計算機水平成了我最大的障礙﹐好在那位老師給了我一個機會﹐讓我先花三個月的時間好好補一補﹐如果進展不錯﹐就給我這個機會。說老實話﹐這個工作待遇並不怎麼樣﹐所以真正計算機專業的很少有人願意去﹐可我想為了能成為一名程序員﹐衝ぴ清華研究中心這麼好的學習環境﹐我還是很積極的準備ぴ﹐書我在看﹐偶爾也上機實踐一下﹐可書上的好些理論都看的不明不白﹐上機也只是輸入書上的程序運行一下﹐這期間數據庫、數據結構、powerbuilder、操作系統、vc++等書也看了﹐但好像就是不能實際運用起來﹐三個月眼看就要到了﹐我現在正在學ぴ用vc++開發數據庫﹐這是那位老師對? 乙□鬧氐恪=B??c++看書看了一個多月﹐到現在還是糊裡糊塗﹐更談不上開發了﹐一對ぴ電腦﹐對ぴvc++的界面﹐我就禁不住發獃﹐我真不甘心就這樣失去這個機會﹐難道我真的與程序員無緣﹖
我真得很想知道那些像你一樣的電腦高手是怎樣一步一步成長起來的﹐給我一點啟示﹐好嗎﹖比如說﹐對於我這樣一個菜鳥﹐剛接觸c++﹐而c語言又不是很精通﹐該怎樣去學呢﹖拜託了﹗

 

傳送日期: 2002年3月21日 AM 10:09
居住省份﹕湖北省
侯捷先生﹕
您好﹗作為一名剛剛開始學習VC程序設計不久﹐但又十分渴望能夠運用VC從事程序設計工作的入門者﹐我非常希望能夠有一本適合我的書籍的指導﹗在網上的論壇中看到大家都很推崇您的這本書籍使我非常高興﹐我想您這本書一定可以帶入一個廣闊的天地﹗
十分感謝您能製作這個電子圖書﹐盼望您給我們帶來更多更好的書籍﹗

 

 

傳送日期: 2002年3月21日 AM 10:00
侯 sir 您好,我有個問題希望您能在百忙之中給我一個提示。 公司最近要我寫一個具有畫 FlowChart 功能的應用程式,需要兩個最基本的 component,方塊及有方向性的線條,我沒有這一方面的經驗,所知道要學的東西也隱隱約約的知道這方面的知識,也就是說我一直在核心邊緣游走不得其門而入。希望能借重您這方面豐富的知識,能告訴我必需要看那些書藉及一定要懂那些原理到一定程度,才能完成任務,在此先說聲謝謝。忘了告訴您,我現在所使用的 Language 是 C#,使用的 Tool 是 VS.NET,謝謝。

 

 

傳送日期: 2002年3月21日 AM 11:56
Dear Mr. Hou:
I am a reader of your books. I love your books and the books you
translated.
Would you do me a favor to tell how to construct a class object
with function "malloc" instead of "new"? It's a pure technical question,
and I want to know just for interesting. Or maybe you can tell me where
I should look for the way to do it. Thanks.
I write in English because I am not sure whether you can read
mail in Simple-Chinese.
Thank you again for your books.
Sincerely,

 

傳送日期: 2002年3月21日 PM 01:13
候生﹕你好﹗
感謝你能打開我這封信﹗
從一箇舊同事的口中知道您的大名﹗後來又在雜誌上看到你的文章﹐讓我很感動﹐很佩服你能寫出那樣人性化的文章﹐每篇文章都讓我收益匪淺。我正在看你的那本《深入淺出MFC》﹐看到第二部份了﹐它深深地吸引了我﹐比看金庸的武俠小說還要過癮,讓我把學習當作一種樂趣。
我剛學VC還不到半年﹐一開始在學校時學的是C﹐工作後由於需要開始學VC。我本人對編程很感興趣﹐當然也是為了工作上能有所表現。這段時間除了工作﹐我幾乎將我所有的業余時間都用來學習編程了。剛開始由於有C的基礎﹐入門很快﹐好像我還沒怎麼掌握VC就可以編出公司裡可以用的程序來了﹐當然都是些很簡單的程序(打開一個 txt文件﹐然後將其中的文字讀出﹐判斷一下放到另一個文件裡去。僅此而已﹗)。
問題是近來我感覺不知道該學什麼好。VC就好像停留在這樣的一個低水平上。接下來不知道該怎麼去提高我的編程水平﹖還有就是像我這樣非計算機專業出身的﹐能學好像ORACLE這樣的大型數據庫嗎﹖我該從何入手﹖將來可能要用VC編一些數據庫方面的程序。
一個前途未卜的類程序員正在等待ぴ您的回信﹗這封信可能會影響他一身﹗

 

傳送日期: 2002年3月21日 PM 07:38
侯老師:
您好! 拜讀您的大作 "COM 本質論", 並試著去實作後, 遇到一個跟 outer unknown 有關的問題, 如果您有時間, 懇請您撥冗回答, 謝謝!
我的問題是:
假設我透過 IEnumMoniker::Next 得到一個 IMoniker 介面, 然後呼叫 IMoniker::BindToObject 來建立此物件. 如果我希望此物件被 aggregate 在另一個物件中, 也就是在建立此物件時希望對它設定 outer unknown 指標, 請問有辦法做到嗎? CoCreateInstance 有 pUnkOuter 引數, 但 BindToObject 的卻沒有.
依據書上 p145 頁的例子, FileMoniker::BindToObject 乃透過 CoGetInstanceFromFile 來實作, 而 CoGetInstanceFromFile 有 pUnkOuter 引數可以設定. 但是如果我的 IMoniker 是透過別人的函式得來, 而非自己實作, 那麼有什麼辦法可以指定 pUnkOuter?
我對這個問題非常想了解, 如果您願意回答, 感激不盡! 再次謝謝!

 

 

傳送日期: 2002年3月21日 PM 07:34
候捷老師:
你好我是大陸的一名大二的學生主修計算機專業。
以前自己學過計算機的基礎課程所以儘管現在學校還沒有開什麼專業課﹐
自己也得以自學了一些別的知識﹐C++,vb,等.也開發過一些小業余軟件.
我也經常上網看到一些有關中國軟件產業的信息和評論(當然這摻雜有很多灌水的東西)
在自己的判斷下我覺得中國目前最缺的不是單純的軟件開發人員而是系統分析員級別的人才﹐我將這種人比作將珠子(人才)串起來的人
個人能力再強但你所在的項目組不能與你相配套不能採用可以有效控制產品開發流程的方法論。
很難想象這樣開發出的產品會有多大的生命力.所以我將自己定位在以後走系統分析員(CTO)的道路﹐我並不同意有些人說的程序員只能吃青春飯這樣的說法,我覺得人到30以後雖然可以在反應能力上﹐會比年輕人差一點但是經驗領悟能力以及對項目的協調能力應當是年輕人所不能比的﹐這正是系統分析員的工作職責所在.所以儘管軟件產業的發展日新月異我也仍然得以有志投身于這個行業。
我並不滿足以單單學好某一個方面的技術。我更想在多方面的協調能力得到拓展﹐個人以為通過過兼職也許是比較好的一個可以實現我的目的的方法。像com,com+ 這些技術肯定是要學的﹐但是現在的計算機知識涉及面實在是太廣了光作業平臺就有三種以上之多更別說別的技術方面了.
怎樣有選擇的學習,哪方面鑽的深一些哪方面淺一些就成了一個問題?
您覺得像我這種想法的人走怎樣的學習路線才更適合自己的發展方向?
您覺得我的想法有什麼偏頗之處?請予指教.不勝感激.
我現在的技術基礎:
C較熟練,C++正在熟悉之中,用MFC寫過俄羅斯方塊,文件分割器之類的小程序,使用過VB這樣的RAD工具開發過一套數據庫管理系統,沒有用SDK寫過程序但對SDK的知識有一定了解較熟悉Windows的作業機製,(最近正在讀Jeff Richere的<<Advanced Windows NT 4.0 and Window95>>),數據結構有一定基礎.
彙編語言僅了解不熟練.對軟件業的動態比較關注嚮往以後能夠成為一個CTO式的人物(因為個人特點似乎更似乎從事技術與管理並重的工作而不適合從事純管理(CEO)的工作).
另:說一句別人已經說過很多次類似的話您的書不論是譯或原創均稱得上精品兩字(至少在我看到的書裡邊是這樣的),我現在買書幾乎是見了您的書不問價錢只要自己需要就會買的現在已買了您的<<Dissecting MFC>>,<<Essential C++>><<Effective C++>><<Inside C++ Object And Module>>(這也是我正在讀的一本),真心的希望您這樣優秀的作家能夠寫出更多的好書來(其實光是您的書評和心得體會就已經讓人能有所領悟了),對您也再落俗套的表示一下我的敬意.也祝您保重好自己的身體.


傳送日期: 2002年3月22日 AM 10:06
候先生﹕您好!
我看了您翻譯的《Effective C++》(2nd)﹐但我想弄一本英文版的對照看﹐以提高自己的英文水平。請問能download英文版的書嗎﹖如果不能download﹐怎麼弄到一本英文版的﹖
謝謝﹗

 

傳送日期: 2002年3月22日 PM 03:36
居住省份(台灣讀者請寫縣市)﹕江西
對侯捷的建議﹕
我的建議源于履歷.去年4月,我購下此書,文字我個個明白,也知是好書.讀了幾遍,也就放下了.
為什麼呢?(我擁有PC,安裝了VC6.0).書中例子的編譯方法,我卻不明白了.
今次在照一講解C/S書,做它的一個程式時,頭暈暈時,才想起你的一句'勿在浮沙筑高樓'.我悟到了,其實你書中的例程,只要丟進VC6.0中,稍配一下即可,根本上不需DOS編譯命令.
其實宰牛刀殺雞也是不錯的,你出書時VC5.0也已誕生了.小小例程用VC5.0調試你隻字沒提.不想再有像我這樣因此困惑的人.(在大陸,VC6.0易得,DOS編譯往往...)
我知你忙,但我想自己也應曉你收到免費郵件否?而且繁簡體不一樣呵.請抽空回封Confirm信.

 

傳送日期: 2002年3月22日 PM 08:01
居住省份(臺灣讀者請寫縣市):高雄市
對侯捷的建議:
你寫的中文書實在很經典,我很喜歡讀你的書!
不管是你寫的或是翻譯的書,都讓人覺得讀的很舒服!

 

 

傳送日期: 2002年3月23日 PM 05:01
侯捷老?﹐您好﹗
我是廣東省的一名大學生﹐對?程自有一番熱愛。今日去逛書店﹐一口氣買了200多塊的書﹐可謂?狂了。對于你的那本《深入淺出MFC》﹐我是毫不猶豫的買了下來(雖然我很久以前就有了?書的?子版)﹐因為我認為這本書值得我買。
現在我正在看這本書﹐產生了一些疑?﹐所以專程?信打擾你﹐希望你在百忙之中可以答複。
我看了這本書前面的那些讀者來信及?壇評?﹐裡面有些朋友說這本書的第三章非常難以理解﹐我看了之後﹐覺得也是﹐我只看懂了前面的frame1和frame2,frame3以後則是模模糊糊的﹐?在是搞不懂﹐不知您是否能夠給我提一些關于學這一章的建議﹖大家都說這一章非常重要﹐我也像要把它搞得明明白白。
?有﹐我現在手頭上除了《深入淺出MFC》之外﹐?有一本《Programming Windows with MFC》﹐有朋友告訴我先看《深入淺出MFC》的前三章﹐然後這兩本書同時看。您覺得怎樣﹖
  

 

傳送日期: 2002年3月23日 PM 07:14
侯老師,您好
我是一名在廣州從事游戲程序開發的程序員. 雖然接觸程序設計很早,寫第一個 C++ 程序到現在也有 10 年, 但是真正理解 C++ 也只是最近 2年的事情. 以前大部份時間用彙編和 C 工作. 3 年前還在懷疑 C++及面嚮對象的時間/空間效率問題, 後來仔細研究了很多 VC 編譯出來的
目標代碼, 才慢慢的改變了我固執的思想. 去年一氣讀完您翻譯的 Inside C++ object model 一書, 更是幫助很大. 觀念才徹底轉變.

前段時間, 公司的一個使用了近兩年 STL 的同事指出我在項目中, 自己寫了一大套基本數據結構和算法的代碼而不去用 stl 的做法是不對的, 不應該懷疑 stl 的效率問題. 因為我有過 C 到 C++ 思想的轉變, 所以花了一晚上在網上尋找 stl 的資料, 併發現了您的 stl 源碼剖析一書,
用了一通宵讀完了開放的前 4 章. 收益非淺. 隨之花了許多時間研究 sgi stl的 source. 對大師的作品真是佩服之極(可惜這本書的簡體版還沒有賣的,我已經連續兩個週末去書店扑了空 ;( )

最近在學寫一些 stl 的程序, 碰到了一些問題. 比如如下的程序

#include <iostream>
#include <map>
#include <algorithm>
#include <iterator>

using namespace std;

map<int,int> mmm;

ostream& operator<< (ostream& os, const pair<int,int> &t)
{
os << t.first << "=" << t.second;
return os;
}

int main()
{
mmm[3]=1;
mmm[10]=2;

copy(mmm.begin(), mmm.end(), ostream_iterator < pair<int,int> >(cout, "\n"));

return 0;
}

在 VC6 sp5 下就編譯通不過, 似乎是找不到合適的 operator<< .我花了很長時間琢磨原因, 後來猜測可能是 namespace 的問題,報ぴ試一試的想法把ostream& operator<< (ostream& os, const pair<int,int> &t)這個函數, 放在 namespace std {} 裡面, 結果就通過了.

事後發現去年在 microsoft.public.vc.language 上就有人提到類似的問題.解釋說是 Re-opening the std namespace is necessary because argument dependent lookup (akak Koenig lookup) will not find your operator << unless it's in the same namespace as one of the types mentioned in it's signature

我的問題是, 標準 C++ 裡, 有沒有必要把我自己寫的這個 operator<< 放在namespace std 裡呢? 今天我用 gcc 2.95 編譯了一下上面那段代碼,可以通過.

ps. 昨天還發現了 VC6 中關於 namespace 的一些可笑的 bug

#include <string>

namespace name {
using namespace std;
}

namespace name {
using namespace std;
}

namespace name {
using namespace std;
string a;
}

這段代碼居然編譯不過, 因為找不到 string, ( string a 前面的那個 using namespace std 形同虛設)

而我將 namespace name {
using namespace std;
}

重複寫 3 次以上 (上面重複寫了兩次) 或者只寫一次, 都可以編譯通過. 真是夠莫名其妙的 ;(

 

 

傳送日期: 2002年3月23日 PM 08:07
您好!
我是一名C++初學者,經人推薦,我欲賣幾本C++的書籍---<<The c++ programming language>>(或<<c++ primer>>)及<<Effective C++>>,但在書店中只買到了<<Effective c++>>一本,其他兩本都沒有買到.
我到您的網站去查了一下,為什麼沒有<<The C++ programming language>>的介紹,請問這本書的譯本有沒有出版?
請問<<c++ primer>>及<<The c++ programming language>>(中文版)的價格,若郵購可不可以買到?

 

傳送日期: 2002年3月24日 PM 03:09
侯老師:
你好,謝謝你給我大陸學生提供下載,
居住省份(台灣讀者請寫縣市)﹕陝西西安
侯老師我是個大陸學生,我對你翻譯的書很喜歡,可是有些書是繁體的,大陸沒有買,你能不能
再給我們這些大學生提供郵購書服務,錢多點都沒關係,我們就是想要好書!!謝謝你,謝謝你
為大陸讀者所做的一切!謝謝!

 

 

傳送日期: 2002年3月24日 PM 06:29
侯老師﹕
您好﹐先自我介紹一下。我是大陸的一名計算機專業的學生。平時喜歡編程。對C++較熟悉。對您的《Inside The C++ Object Model》和《深入淺出MFC》是看了又看。對您在C++方面的觀點很是讚同。
MICROSOFT推出了。NET計劃後﹐我就開始去了解。曾經我想過轉向C#﹐畢竟對C++和JAVA比較熟悉。轉向C#要上手也快。不過C#d我的感覺是編譯器幫我們做了太多事。要實現一些功能根本就不必了解其內部是如何運作的。但我更喜歡先了解了底層的運作後再去實現其功能。或許C#不適合我吧。所以我想選擇VC。NET。不知道您對此是怎麼看的。C#和VC。NET哪種更適合。謝謝。

 

傳送日期: 2002年3月25日 PM 05:57
老師:
我一直搞不清楚"include < iostream.h > "和
{ include < iostream >
using namespace std; }
的差別?當我 overwrite operator << or >> 時
好像用 include<iostream.h> 才行…第二個方法好像行不通?

 

 

傳送日期: 2002年3月25日 PM 10:46
候老師﹐候捷與候俊杰是不是您一個人﹐我買了《深入淺出MFC2/e》簡體版 和《Effective C++ 》﹐都是您寫的吧﹐我都認真的讀了﹐希望您能夠指導我還要學些什麼﹐謝謝您。

 

 

傳送日期: 2002年3月26日 PM 07:01
你好﹐侯先生﹗
我是一名C++的初學者﹐經人推薦得知C++領域最權威的兩本書為<<The c++ programmin
g language>>及<<c++ primer>>。所以我就開始了全城大搜索﹐試圖找到這兩本書中的一本來學習。但結果令我失望﹐整個濟南市竟然沒有﹗所以現在我只有求助于您﹐您那兒是否有這兩本書中任一本的中文版﹐我現在急需。若可以我可以郵購。盼回復﹗

 

 

傳送日期: 2002年3月26日 PM 08:23
侯老師﹕您好﹗
我有一些疑惑想向您請教﹗雖然我知道不太會有結果但﹐無奈時常受MFC類的困惑﹐
不得已而向您發問。不知道MFC每個類的具有定義在哪些CPP文件中請一一指明﹗我想這種事情也只有您最有可能詳細地看過﹐萬分感激!!!

 

傳送日期: 2002年3月26日 PM 09:59
候老師﹕ 你好﹗近日我買了一本《深入淺出MFC》但是﹐我看的很吃力﹐我得歷程是foxbase,c,c++。我是一個初學者請問我這種應該看什麼書﹐才可以看《深入淺出MFC》﹐才可以自己獨立編程。我不想變成一位只會在wizard上click,click的人。
謝謝

 

傳送日期: 2002年3月26日 PM 10:34
候老師﹐我祇想說是您的《深入淺出MFC2》給了我學習MFC的信心與勇氣﹐真心感謝您﹗
一個大陸學子

 

傳送日期: 2002年3月27日 AM 09:08
侯捷先生您好..
能否請教一個題..前不久我買了你所譯的C++ Primer中文書..可是那麼大一本..如何裡去學習呢..有時侯看沒幾頁都會停下來..不是遇到不懂的..就是覺得沒真正讀下去..只是依頁數章節看過而已..我很想去學這C++語言..很希望您能給我點指導..謝謝...
祝福...
毫無頭序的讀者 敬上

 

 

傳送日期: 2002年3月27日 AM 10:08
侯老師﹕您好﹗
我是大陸的學生。我有一個有關線程的問題向你請教﹕我創建了一個線程﹐並傳遞一個套接字﹐可是在線程中﹐套接字不起作用﹐當我引用套接字時﹐程序會終止﹐說執行了非法操作。這個問題我已經想了一個多月﹐可是百思不得其解﹐我請教了許多人﹐甚至在微軟的新聞組求助﹐可是就是找不到解決辦法﹐以致我的畢業論文無法繼續下去﹐所以只有向您請教了﹐我知道您是編寫線程的高手。希望您能在百忙之中能給我回信。我想您一定會幫助我的。如果可能的話﹐能否給出具體的語句。
謝謝﹗﹗﹗
您的崇拜者

//VC++6.0
DWORD WINAPI ThreadFunc(LPVOID);

void CMainFrame::OnStartProxy()
{
// TODO: Add your command handler code here
CSocket sockid;
HANDLE hThrd;
DWORD exitCode=0;
DWORD threadID;
CString strAddr="10.1.1.18";
unsigned int nPort=5050;
if(!sockid.Create(nPort,SOCK_STREAM,strAddr))
{
MessageBox("Error while creating socket","Error Information",MB_ICONSTOP);
sockid.Close();
return;
}
hThrd=CreateThread(NULL,0,ThreadFunc,&sockid,0,&threadID);
for(;;)
{
BOOL rc;
rc=GetExitCodeThread(hThrd,&exitCode);
if(rc && exitCode!=STILL_ACTIVE)
break;
}
}

DWORD WINAPI ThreadFunc(LPVOID sock)
{
CSocket* sockets=(CSocket* )sock;
CSocket proxy;
char buffer[1024];
memset(&buffer,0,1024);
sockets->Listen(5); //程序執行到這就會出錯
sockets->Accept(proxy);
proxy.Receive(buffer,1023,0);
MessageBox(NULL,buffer,"Information",0);
proxy.Close();
return 0;
}

 

 

傳送日期: 2002年3月27日 AM 10:42
侯老師您好

本人在 Trace 多型與虛擬( 我購買的是 1998/07 初版 )第1章第 75 頁第 6 行,
#0014 reverse(string1, string1 + n1);

發現執行到
template<class _FI1, class _FI2, class _Ty> inline
void _Iter_swap(_FI1 _X, _FI2 _Y, _Ty *)
{_Ty _Tmp = *_X;
*_X = *_Y, *_Y = _Tmp; }

在作 *_X = *_Y swap 時出現記憶體 Access violation 錯誤, 我想是因為在第 3 行將 string1 宣告為 char * 關係
造成無法存取字串副本吧, 因此我將 string1 宣告為 char string[ ] , 配置可修改的文字副本, 就可以執行了.
恭敬 心順


傳送日期: 2002年3月27日 PM 01:47
侯教授您好 :
我找遍了重慶南路的書局,依然找不到 <深入淺出MFC>這一本書,可否告訴我哪還有書可以買, 謝謝!!!!

 

 

傳送日期: 2002年3月27日 PM 07:17
尊敬的侯俊杰先生﹕你好﹗
我是來自大陸的一名大學生﹐我叫□□□﹐現在就讀于蘭州大學□□□□學院□□學系﹐我現在正在學習MFC﹐正如您所說﹐學習MFC是一個很艱難的過程﹐我看到網上有您的書籍電子版的下載﹐真是感謝您能夠照顧到我們這些學生。我大略看了一下剛下載的書﹐確實非常精彩﹐而且插圖也是彩色的﹐真的謝謝你﹗﹗﹗﹗﹗
我希望您能經常在《程序員》這本雜誌上介紹一些國外的經典計算機圖書﹐這對我們很有幫助
由於我是一名非計算機專業的學生﹐但我對這一行很感興趣﹐我想請您給我列一個書單﹐成長為一名程序員所要閱讀的一些專業書籍和相關書籍﹐程序員是我一貫的理想﹐請您在百忙之中一定滿足一名學生的請求﹐我會感激不盡的﹐熱切盼望您的回復
一名大陸的忠實讀者

 

傳送日期: 2002年3月27日 PM 11:46
居住省份﹕山東省濟南市
對侯捷的建議﹕
法國大數學家笛卡爾說﹕“讀一本好書﹐就是和許多高尚的人說話。”用這句話來形容您的書真是太貼切了﹗

 

傳送日期: 2002年3月28日 AM 01:17
侯老師:您好!
我是一名大陸的計算機愛好者.前段時間,大概是2001年七,八月份的時候吧,
我發現了您的一些C++外文中譯本,象<<Essential C++>>,<<Inside The C++
Object Model>>等.一翻開書,光是看排版,就覺得是享受:給人一種淡雅,清新的
感覺!我想,可能是因為平時看的計算機書籍都排得密密麻麻的原因.再看內容,
確實很不錯.在C++方面,我只看過一些很淺顯的入門書,(比如,<<XX天學會C++>>之
類:),您可別笑話),對比較深入的東西,完全不懂.看了您的書後,才明白過來.要是
剛開始的時候就接觸到,就不會走這麼多彎路了!現在,我把能找到的您的那套中譯
本都買了,只可惜最重要,最基礎的<<C++ Primer>>3/E 反而沒有!不知何時才能
有幸見到您的這本譯著!另外,您的<<深入淺出MFC>>2/E,由於已被搶購一空,
(可見您的書是多受歡迎),未能買到.所以,只好在您的網站上下載了電子書.對您
的這種不計酬勞,奉獻育人的教誨精神,再一次表示由衷的感謝!
居住:深圳
請多保重身體,最好長命百歲!
(這樣,我們才能多看您出的好書呀:),是不是很自私:))

 

 

傳送日期: 2002年3月28日 AM 12:00
畢業院校﹕北京科技大學
讀了侯老師您寫的書和你翻譯的書﹐總覺得受益匪淺。希望你可以給廣大讀者帶來更多更好的書。希望可以把《C++Primer》介紹給大陸的讀者!

 

傳送日期: 2002年3月28日 AM 11:26
居住省份(台灣讀者請寫縣市)﹕中國.上海
老師好
我再看你網站上的讀者來函的時候才發現原來你要求每個下載<深入淺出>的讀者都給你發一封信過來.我下載的時候忙ぴ高興去了,沒發現,等我現在看完了再給你發信,不晚吧:)
讚揚的話我就不說了,我覺得最大的優點就是你從讀者出發,儘管你已經是一個骨灰級的專家了,但是你還能記得你當初學習的難點,然後仔細地告訴我們,這才是我們學生最需要的.恰好,我是在上海華東師範大學讀書,以後可能也是一個老師,說不定哪一天我也在課堂上給我的學生推薦你的書籍!:)
當然,我覺得你肯定也認為有一點點對你的建議最好.我學c++也算比較深入的了,mfc也看了不少.學了之後,不禁有這樣一種感覺:學得越多,覺得自己不知道的越多;看的文章越多,覺得自己需要看的書越多.而且,隨ぴ技術的發展,覺得需要自己學得也越多,有時候就很累了.所以,我希望你能夠談一談現在計算機程序設計範圍裡面大概有些什麼東西,他們有什麼聯繫,讓初學者心裡有數.比如介紹一下c,c++,mfc,delihpi,asp,com,xml,ip,RTTI,rose,.net......反正出現過的字,都給大家一個解釋,分一下子類別,最好告訴我們按照什麼路線去學習,不同的工作,需要深入到什麼程度,讓我們學習的時候有路可尋!

 

傳送日期: 2002年3月28日 PM 01:30
親愛的侯捷老師﹕
您好──﹐我是您的新讀者﹐芳齡26﹐女性。我在23歲那年開始自學計算機﹐有幸能再次進入大學校園深造,從而真正步入這個行業。過去一年多﹐我經過了最為痛苦的轉行階段﹐因為生為女生﹐專業背景不佳。激烈競爭令我備受折磨。

在人海中看到您﹐實在是──偶然.3月的一天﹐我因為打電話沒卡沒零錢。不得不破費買了一本昂貴得<程序員》﹐看到您的《但教心似金?堅》﹐由此知道了jjhou.com.
當我在春夜讀到“山高月小﹐水落石出”﹐我驚異于我多年的文學夢想竟然可以在計算機世界裡復活。──是奇跡吧﹐是奇跡般的相遇。

既然遇見了﹐就不能不請教。才疏學淺﹐望莫要見笑──
我希望知道的是﹕在哪裡可以獲得MFC 得源碼(我對於CEdit類可以支持中文
深感興趣﹐想自己編寫一個支持中文得電子白板)。
萬分感謝。
並向穿行于荊棘從中﹐人跡渺茫的侯老師致以深切的敬意。
因為您的存在﹐我亦決定作一名孤獨得舞劍人﹐與世界的喧囂作別──



傳送日期: 2002年3月28日 PM 09:15
候捷先生﹕您好。
前幾天我買了你翻譯的《Essential C++》﹐並且從這本書開始接觸並且學習Generic Program,因此﹐從您的網站上下載了您的五篇關於STL的文章。
在此表示感謝﹐祝您工作順利﹐一切都好。

 

傳送日期: 2002年3月28日 PM 10:12
居住省份(如是臺灣讀者,請寫縣市):廣東省
看了您電子書前面的留言,心堳傮P動。你在我們大陸讀者之中的知名度已經很高了。這次我想學VC,同學給我推薦的都是你的這本《深入淺出MFC》,說這本書講得最透徹。對於您決定開放此書讓我們免費閱讀,我們向你表示深深的敬意。
祝萬事如意!

 

傳送日期: 2002年3月29日 AM 09:32
我是一名祖國大陸的軟件開發員。大學畢業後一直從事軟件開發工作。
從事的電信行業的軟件開發工作﹐用的unix下的c++。
但本人對mfc特別的感興趣﹐自學了好長時間也不見效果。
看到您的建議後﹐決定從頭好好一步一步學習﹐
現在我正開始閱讀您所列的參考書﹐
(《Programming Widnows 5th》 《Advanced Windows 3rd》 《Windows 95 : A Developer's Guide》 《Windows 95 System Programming SECRETS》《Inside C++ Object Model》和《Effective C++ 2nd》)
和我一塊學習的還有我的幾個同學﹐但在學習的過程中﹐總是有一些問題弄不明白。
看到您寫那篇‘ 汗如雨下 ’後﹐對xioax佩服得很。希望能得到他的一些學習心得
方面的指點。不知您能不能告知xiaoax的聯繫方式。
您的忠實讀者


傳送日期: 2002年3月29日 PM 08:29
候老師﹐您好﹗
我是2000年夏在上海Winbond公司聽過您開設的C++/OOP/STL課程的學生﹐現在在上海交通
大學計算機系讀研究生一年級。我想請教您一個問題﹕
我注意到您經常進行源代碼級的分析和學習﹐我自己也因為學習需要﹐常常要閱讀源代碼
﹐但是函數之間複雜的調用關係常常弄得我很是“頭大”﹐我想知道﹕您在閱讀源代碼時是否使用過一些比較好的工具(比如可以很清晰的顯示出函數之間的調用關係)﹖可否推薦幾個。非常感謝﹗

●侯捷回覆:恭喜你繼續深造。
我已寫就一篇  "上窮碧落下黃泉 源碼追蹤經驗談",將發表於《程序員》2002/04。
並於四月中旬於侯捷網站開放下載。
追蹤大型系統的源碼,需要很多很多的精力和時間。不過收穫驚人。


 

傳送日期: 2002年3月30日 AM 05:44
侯先生﹕您好﹗自從在《程序員》上看了幾篇您的文章﹐給了我許多的思考。
盼望出更多的好書和好文章。
我是一名在校的大三學生。其實也不是﹐因為最近我作了一個決定就是放棄一切的考試。
我是自考的﹐包括已經報了的4月份的等級三B類考試。
雖然只要考一兩門就可以拿到專科文憑了。
那是因為有一次﹐有一個朋友問我﹕“你是學計算機的﹐那麼以後打算從事那一方面呢﹖”那真的是問得我一時不知道怎麼回答是好。
我知道學計算機的學生以後應該從事軟件開發是理所當然的事﹐但是我沒有那個勇氣回答(說實話﹐我這個人比較實在)。雖然什麼操作系統、數據結構、C語言等也過了﹐但是要我做什麼﹐那可就難了。
現在我才明天了﹐有的本科生總是說這個社會不像話。
什麼大學出來還找不到好一點的工作。我說這是應該﹗因為你沒有能力﹐“你能為公司做什麼﹖”
就拿我的英語來說吧﹗現在可以跟佬外交流沒問題。每星期有兩次機會跟外教在一起(跟他們混在一起將近有兩年了)。一般的科技文章基本上能看得懂。
所以有的同學說我可以去考6級啊。那我問你如果你能看得懂﹐也會聽的話。還有必要用一些東西去證明嗎﹖
我現在每天都在學英語﹐可能你會說﹕“你真刻苦﹗”
不﹐我是覺得學英語有意思﹐可以從中獲得樂趣。
有的人學英語就是要應付這樣﹐那樣的考試。
那我給你一句話﹕“如果你學什麼一直都在堅持的話﹐而不是有一個強烈的興趣在其中的話﹐那麼你最好放棄﹐改行算了。”我班上有好幾個學生﹐上個學期蠻喜歡到英語角去﹐可是這個學期就不見他們的蹤影了﹐幾乎是每次不講的。可能是在訓練自己的“聽力”吧﹗現在班裡有六十幾個人﹐我到現在還找不到一位能在英語角跟那些英語高手講的。都學了九年英語了﹐連一般的日常問候都不能說。
中國教育的悲衰﹗﹗﹗ 如果你的能力達到某一個層次的話﹐可以去考一證書來證明自己。這個我同意﹗﹗﹗但是我們現在的學生人家問他為什麼要考的話。他就會說﹕“大家都這麼考唄﹐找工作需要嘛。”那麼好多人得了流行感冒﹐你是不是也要呢﹖而現在的公司裡需要有能力的人才﹐為什麼你不提高自己的能力呢﹖
這樣可能有的人會說中國現在的大學生都退化了。
不﹗“永遠沒有有問題的學生﹐學校才真的有問題。”
而是現在這個大的環境使得我們的學生變成了沒有思想的機器﹐
他們變成了考試高手﹐考試天才﹐考試機器。
記得有一次我問《計算機操作技術》課程的老師﹕“這教材裡的WPS講的是在DOS裡面運行的。可以說是三八年的東西了﹐太老了一點吧﹗你看人家現在都是OFFICE XP了。”你知道
他是怎麼回答的嗎﹖“只可惜我不是教育部”﹗只有極少數的人才很明白自己在大學裡應該怎麼學。大部份的人都是跟ぴ形勢走﹐跟ぴ感覺走。
我想真正的天才是少數的。大部份的人還是需要有一個好的環境來培養。儘量不要說什麼多少年可以越過印度﹐只要你的教育水平越過了人家﹐有了一個好的環境﹐其它的東西是水到渠成的事了。否則的話﹐可能你將一直在太陽底下睡﹐而且做ぴ同一個夢。

我現在的目標就是打好一些基礎和弄通一、兩門語言就夠了。
同時﹐把英語提高到一個新的台階。
我並不是抱怨什麼﹖只是將自己的一些想法跟大家分享一下。
我堅信﹕“一個蘋果與另一個蘋果交換最終還是一個蘋果﹐而一種思想與另一種思想交換就各自擁有了兩種不同的思想。”
有興趣的話請與我分享下您的想法
有人說我是瘋子﹐您說呢﹖

 

 

傳送日期: 2002年3月30日 AM 11:52
候老師您好:
我也是從C C++學起的,在準備高級程序員時學習了數據結構算法設計等,C++只能說是知道基礎的語法, 整個學習過程主要是理論實踐能力很差.前不久聽朋友推薦拜讀了您的<<深入淺出MFC>>,很適合我,可是等上機時問題來了,例子都被擋掉了,可能是我用的VC6與您和的VC5的差異吧,全是連接錯誤,我應該怎樣在VC6下運行例子,我現在很想在VC6下練一下SDK程序,以便更好的理解MFC程序.像我這樣程度應該看哪本書好呢?候老師,我的問題是不是太幼稚了,可就是這些問題就快把我整瘋了,書好像是看懂了,可例子被擋掉了,不知道自已的哪些理解是對,哪些理解是錯?
求您在百忙之中幫我一下吧!!

 

 

傳送日期: 2002年3月30日 PM 09:02
侯sir:
你好 ﹗讀了您翻譯的Effictive C++和inside c++ object model後使我收益匪淺﹗但是我有個問題 在inside c++ object model裡說多態在public體系裡﹗而在Effictive C++(條款43)怎麼在多重繼承裡有(private繼承)也有﹗﹖
還有就是在你的書裡對於多重繼承繼承了2個基類的同名virtual函數﹐如果我要在派生類覆蓋他門﹗行嗎﹖有指向基類的指針調用他﹗會有問題﹖
還有個問題﹐我正在成都讀大2﹐是學計算機的﹐學了C++有1年了﹐但是不知道能用C++寫什麼樣的程序﹖所以自己的實踐很少﹖在這方面老師能不能教教我該怎麼做﹖
我的目標是在畢業後成為個C++的程序員﹐所以我一直在努力﹐不知道我現在學C++有好處嗎﹖對於一個程序員還要知道些什麼﹖
謝謝侯sir!!!!
一個想好c++的學生

 

傳送日期: 2002年3月30日 PM 09:18
侯先生﹐
你的深入淺出MFC的確獨闢蹊徑﹐對於幫助讀者理解其運作極為有益﹐但對於一些常用的類(如CEditView,CListView)的使用以及讀取諸如文本文件方面卻講得不夠﹐以至於我看了之後想自己發揮一下﹐做些其他的應用都不得法.
或許是我不得其法﹐望指教﹗

 

 

傳送日期: 2002年3月31日 AM 12:01
居住省份(臺灣讀者請寫縣市):高雄 新竹
侯先生:
我是□□大學電腦資訊網路研究會(又臭又長的全名 :D,簡稱CINA)的社員,
這個社團的出現都是由學校校內程式設計比賽得名的成員所組成,以及經過連署
或師長推薦的同學,大家都對網路和程設相當的有興趣,侯先生的書也一直被我們
當做程式設計的聖經(這不是恭維喔 ^^..是真的), 同樣是在新竹, □□和交大有不同
也有相同的,不同的是,交大學生是天之驕子,而我們,是一群較不被重視的 :P
相同的是,我們對資訊的熱愛絕對不會在他們之後 :D..嗯!這不是自誇 :)
如果侯先生能夠撥冗到我們學校來跟我們聊聊天, 上一課 , 那對我們來說將會像作夢一樣..
嗯! 如果侯先生有興趣, 就在閒暇之餘回我個mail 吧 ^^..謝謝..
另外..您把著作放出來在網路上讓我們自由取閱, 真不愧"自由作家"!

 

 

傳送日期: 2002年3月31日 AM 12:00
候捷先生﹐您好﹗
非常高興能在您的網站下載到《深入淺出 MFC》這本書。第一次了解您﹐是在《程序員》雜誌2001年的合訂本上拜讀您的文章。讀了您的文章﹐真是收益非淺。
我是一個ASP程序員兼項目經理﹐目前因為工作的需要與VC程序員進行技術溝通﹐非常需要學習一些WIN32 API、MFC和COM的知識。因此下載了這本書。
您在《漫談程序員與編程》一文中談到的“正確的作學問的態度”﹐我非常認同。工作中的不斷碰壁﹐讓我深切的感覺到“作學問的態度”的重要。
居住省份﹕江蘇南京

 


傳送日期: 2002年3月31日 AM 02:53
居住省份(臺灣讀者請寫縣市):Taipei
對侯捷的建議:侯捷先生的課我們要如何才上的到呢?小公司不可能包班,白天要上班也無暇去學校選修T_T

●侯捷回覆:我受邀為業界公司開的課,不可能開放旁聽(公司不可能同意,我也不可能提出這種要求)。我在大學開的課,都開在晚上,歡迎旁聽。多年來已有許多從台北和新竹到元智大學旁聽的工程師和學生。

 

傳送日期: 2002年3月31日 PM 06:25
你好﹐侯Sir,我剛郵購了一本你的大作〈〈深入淺出MFC(第二版)〉〉﹐但很不幸﹐光盤在郵寄過程中破損了﹐想找書店調換﹐但一來一去就要一個月﹐一個月我都快把書看完了。所以想問問您 ﹐光盤對學習這本書作用大不大﹐沒有會不會有大的影響﹖
順便說一句﹐ 我覺得你的書之所以這麼成功﹐原因之一是因為你的書是真正用中文寫的﹐是真正用我們自已的語言﹐自己的感情﹐為中國人寫的。我喜歡你的語氣和寫作

●侯捷回覆:光碟中放的是書中程式碼。你若看懂書中程式以及解說,就不需要光碟了。

《深入淺出MFC》的sample program,都詳細列於書上。第三章的 MFC 六大模擬可自侯捷網站下載。chap7~chap12的samples是VC標準的sample : Scribble step1~step5,只要你有VC CD,你就可以找到它們。chap13 以後的程式,書上都有重點列表。

你缺少CD,應該不至於造成學習上的困難。不過你還是可以(應該)向原書店換一片好CD。這是你的權利