精華區beta CompBook 關於我們 聯絡資訊
作者: jjhou (jjhou) 看板: CompBook 標題: Programming 不必是自我虐待 時間: Sun Jun 1 20:36:39 1997 【Programming 不必是自我虐待】 本文登於 RunPC 1997.04 侯俊傑 jjhou@ccca.nctu.edu.tw 我整理了最近幾篇讀者來函,希望與大家分享。其中有對 SDK、MFC、RAD 的 看法與疑惑,有與我的談心,也有對我個人的讚美。關於後者,我放上來是為 了讓大家知道,一顆努力執著的心,可以獲得怎樣巨大的迴響,以此安慰並鼓勵所有 心繫理想的資訊人。這些信件經過「依媚兒」的往返,展現出一問一答的形式。 ------------------------------------------------------------------------ > 發信人: moli (鹹酥雞beta v1.0) > 標 題: 有關 RAD > 日 期: Mon Feb 24 21:25:48 1997 > 來源站: 成大工科忘情小築 來源地: 140.116.110.151 > > 侯 sir 你好,有個問題一直想問您。現在的 RAD 產品那麼多,編譯出來的程式碼已經夠快, > 尤其是 Borland C++Builder 出來後。那麼,有什麼理由還要使用 MFC 或 OWL 呢? > 是不是有些東西還是用 RAD 無法完成的呢?我相信很多人都想知道,畢竟,如果 > 投資了很多心力,人家卻能用 RAD 短時間的學習曲線就能做出相同的東西, > 心情似乎會不太好過。所以想麻煩您解決一下大家心中的疑問。謝謝您! 問得好。 Programming 的過程不應該是一種自我虐待。有更好的工具上來, 一定是為了提升生產力。如果用得上手,自然應該捨繁就簡。 關鍵在於何人曰「簡」?這要看 RAD 的使用者根基有多少。我用過 C++Builder,很棒,我想我因為已有相當的技術基礎,所以能夠輕鬆駕馭。 如果不是有 property、event、method 的觀念、對軟體元件有使用基礎, 不可能很快進入狀況;C++ 的基礎則就更不消說了(每次講到這個我就想起 以前有人問我不懂 C++ 而學會 MFC 有沒有可能)。MFC 和 OWL 的使用 經驗,也為我在學習的路上帶來幫助,當別人在 RAD 上運鼠如飛, 我也運腦如飛地思想 MFC 的可能作法。這一思考,我對 RAD 說不定就有更深刻的看法,或起碼,學習印象也要強化十幾個百分點吧。 所以,如果你上得了手,工作目標又可以 RAD 達成,當然要盡量使用 RAD。 Programming 的過程可不是一種自我虐待。基礎不夠,跌下馬來,那就回頭把 根基紮好。開花結果通常在深耕的泥土上。 『是不是有些東西還是用 RAD 無法完成的呢?』噢,那當然。我從沒 看過 Matt Pietrek(Windows 95 System Programming SECRETS 一書作者) 用過 RAD,連 MFC 或 OWL 他都沒用過。他寫的東西不需要繁複的 UI 畫面, 他需要長驅直入系統核心的 APIs:SetThreadContext、CreateRemoteThread、 ReadProcessMemory...,很少聽過這些 API 吧!與其花腦筋想這些 API 該安插在 MFC(OWL)或 RAD 為我們產生的碼的什麼地方,直接採用 SDK 程式風格才最快 最乾淨。Matt 的工作性質,需要一把利劍,但不需要一把象牙柄帶雕花的利劍。 寫驅動程式的朋友們,則恐怕連 SDK 都不碰,他們碰的是 DDK。 RAD 之於他們正是「不知有漢,無論魏晉」。 前兩天我動手寫一個簡易的 backup 軟體給自己日常使用。根本就沒想過 要寫 Windows 版,命令列形式反而方便好用。後來我發現以前習慣使用的 C runtime 函式庫的 findfirst 和 findnext 兩函式已經不存在於 32 位元工具中, 只好改弦易轍寫 Win32 console 程式,還好這和寫 DOS 程式 一樣簡單。我用任何一種編譯器和聯結器,下一個最簡單的命令,就把程式製造出來了。 做什麼事情,用什麼工具!「用對工具」比「把工具用對」更先決、更前提。 > 那麼,您覺得現在 MFC 或 OWL 的存在, > 除了為老程式員留後路,或用來開發低階的 device driver 之外, > 是否還有存在的必要?微軟的 VC++ 5.0 就要出來了, > 不知道微軟會不會以 MFC 做底子,開發一套像 C++Builder 的東西。 > 依您所說,只要懂 Windows 程式的運作原理就好了呀! > 只要懂得 event driven 的原理,就可以去駕馭 C++Builder, > 那麼,去學習 MFC 或 OWL 是否真的沒有必要了。 > 我突然有點疑惑,因為買了很多書(您的幾乎都買了),也包括 > 您介紹的原文書。 > 在下學習 MFC 已有一年多了,可是發現一些只有 SDK 基礎的人, > 利用幾個禮拜的時間就可學會用 C++Builder 做出比我還要好很多 > 倍的程式(我確定他們的資質不見得比我好)。 > 所以,突然為自己以前的投資覺得有些失落... 心情不太好而且有些失落的人: 1.修正你的觀念:MFC 或 OWL 並不能拿來開發裝置驅動程式。 2.我沒說「懂得 event driven 的原理,就可以去駕馭 C++Builder」。 3.我剛學會開車時,第一次在台北上路。旁邊坐著我的哥哥。那是星期天上午的 敦北大道。車少人稀,順暢無比,我不禁得意地說『在台北開車也沒什麼難嘛!』 我的哥哥對我說:『在美國鹽湖城開車更容易,哼!重要的是出現狀況時你的 應變能力。』 4.到底該學習 MFC 或 OWL 或 C++Builder?這不是三言兩語能回答的問題。 年輕朋友問我先工作再深造好,還是先完成學業再工作,這也不是 三言兩語能回答的。如果使用的工具關係到工作的性質,我還想說 『盍各言爾志』呢。 5.MFC 或 OWL 或 Visual Component Library(VCL)架構到底誰好,現在 我還沒有能力置評。有的是技術層次高,物件導向性質佳;有的是層次簡化, 容易學習。這些統統都應該考慮在「好」的範圍內。曲高和寡而未能佔有市場, 那麼這個產品和「無」是一樣的。不過,學習 C++Builder 不需要 MFC 或 OWL 基礎, 殆無疑問。也許你會感到失望,因為表面上你失去了某種「登高台觀浮生如蟻」的優勢。 6.但是你既不能怨艾自己比別人早生幾年,所以你也不要怨艾「我做了好些苦工, 別人卻一步登頂」。否則只好現在什麼都不要動,等三年後一個不知是什麼但 肯定比現在更好的東西出現。 7.何況世界上沒有一步登頂的事兒。凡走過的,必留下足跡。電腦界很多東西 都可以觸類旁通。 > 送件者: William King <midway@email.gcn.net.tw> > 收件者: jjhou@ccca.nctu.edu.tw > 主旨: SDK > 日期: 1997年2月25日 AM 10:53 > > 侯先生您好,因為工作的關係,我現在是用 SDK 開發程式,不過誠如 > 您所說的:『如果採用 SDK programming,則對作業系統需要相 > 當深度的涉獵,否則一知半解,恐怕臨淵履薄,狀況頻出。』 > 有時候執行上有問題,還真不知道錯誤出在哪裡。不知可否給點建議, > 如何能對作業系統有相當深度的了解? 這我該怎麼說呢?找一位好老師,找幾本好書,只能這樣了。 作業系統不如 programming 那麼容易可以自修而成,許多細部 觀念的養成,需要細細琢磨或經人點撥(我想起「分離位址空間」這題目)。 如果你只能自修,那就只好努力多看書多思考了。對,多思考很重要,把書上 的東西轉化為你自己的思想體系,一輩子跑不掉。 > 是有人指導,不過我也想自己看些書。市面上這類書並不多,我不求速成 > 但是也不想浪費時間在無法了解的書上,能否請您介紹幾本值得閱讀 > 的書呢? RunPC 1997.03 的【無責任書評/Windows 系統深耕】,介紹了三本好書。 > 送件者: jian bo-bin <jbb83u@cs.ccu.edu.tw> > 收件者: jjhou@ccca.nctu.edu.tw > 主旨: Hello! No subject!! > 日期: 1997年2月26日 AM 12:06 > > Hi! 侯先生您好:我是中正大學資訊系的學生,常拜讀您的大作,心中甚是感佩, > 亦對您不只寫書,還寫感情的寫作方式非常喜歡。很早就想寫信 > 給您,盼能與您有一信之緣,但卻總覺沒有目的,寫起信來好像 > 怪怪的,今日總算有點觀念想跟侯先生討論討論,是以隨性動筆 > (動鍵才對,呵)。文筆不順之處,尚請見諒喔! 吳淡如說沒有人寫情書給作家,怕被說文筆不佳,搞不好還被改正錯別字外加評分, 美事一樁變成焚琴煮鶴,濯足萬里流。呵呵,隨性點的好。 > 我想,一些客套性的話語和打讀者從內心的讚嘆,侯先生應該 > 聽得很多了,所以我就省起來囉!不過並不代表我沒有打心裡欣 > 賞您的文章喔,雖然手頭不甚寬裕,可是您的大作可是一本接一 > 本進書架啊!(印象最深的一句話是:”或許以後會出現『純手工精 > 製』的軟體,可我從來不嫌機器饅頭難吃”,真是令我苦思許久啊) > 故我就單刀直入,直接跟侯先生聊聊有關坊間書籍一些理念問題囉, > > 我因為某個機會,跟一位電腦公司頭家,共同企畫一個 > 關於電腦基礎教育的計畫,我負責講義方面的編採。首先是要編 > 採關於 INTERNET 的基礎入門方面的講義,我參考了坊間很多( > 應該是每一本了吧)的中文書,發現幾乎所有的書都是在講『應 > 用』,都是教人家如何連線,如何用 WIN95+MODEM 上網,但對 > 於整個 INTERNET 的概念和一些基本電腦網路的概念都沒有提到 > ,或禮貌性提到而匆匆帶過的,我有點懷疑這樣子的書對我們全 > 民的基礎電腦水準會有什麼幫助,我覺得要使用一個東西就是要 > 知道他怎麼來,怎麼動,用起來奇蒙子才會舒服,要不然只是一 > 味的記得要按這個,然後按那個,那電腦就跟生冷的機器沒有兩 > 樣了嘛。 > > 我常覺得,很多人都很有興趣想瞭解電腦方面更原理性的東西, > 但大多苦無管道, 同意。我自己就很想看也很想寫原理性的書籍。但是也有人需要那種把操作 步驟說明很詳細的書。所以您「有點懷疑這樣子的書對我們全民的基礎電腦 水準會有什麼幫助」,帽子扣得太沉重了些。 > 所以我便趁著這次的合作機會,盡量把資料收集詳細,並盡 > 量具體化,簡單化一些抽象的概念,希望可以弄出一份一般人就可 > 以看得懂,又看完可以得到各方面整體性概念的資料。 > 不知侯先生有沒有時間可以撥冗閱之,並給我一點意見,因為 > 自己一個人作總覺得越作越怪,好像越寫越不知道在幹嘛的樣子。 > 通常別人又會跟你客套性地打氣,聽來沒有什麼意義,所以不知 > 怎地就想到您好像很可以信任(這不是灌迷湯啦,是真的),雖 > 然我們並不認識:P。不過當然要您有興趣和有時間。 > 這絕對沒有任何陰謀企圖等等等的因素存在,純粹想聽聽您的看法而已, > ...嗯...大概就是這樣囉。 能得到素未謀面的人的信任,是一種很大的榮譽。我們雖然素未謀面,但心靈曾有溝通。 既是要講原理,又是對「興趣滿滿基礎全無」的人開講,最好跳出「文字」的 窠臼。這類書籍或講義,文字最好只是圖片的配角。但是這麼一來出版品的設計編排 難度就高出許多。舞文弄墨對許多資訊人而言,已經困難,更何況設計出佳妙的示意圖。 所以你心目中的書也就成為罕見品種了。 > 送件者: Lung Feng <h6003@kl.ntou.edu.tw> > 收件者: jjhou@ccca.nctu.edu.tw > 主旨: Thank you for publishing your Dissecting MFC. > 日期: 1997年2月25日 PM 10:58 > > 侯先生您好: > > 我是您的忠實讀友,從您1992年出版的「Windows程式設計」到現在的 > 「深入淺出 MFC」,我已花不少銀子買下數本您的大作。說真的 > 您的作品比其他國內出版的作品價格稍為高了一點,但我覺得很值 > 得,因為我可以感受出您真得非常用心在撰寫,初閱讀您的作品時,有時 > 不知其然,但只要用心品嚐,總是入味七分。有些書教人一邊看書 > 一邊上機實作,會是一個比較好的學習曲線,但我是一個從基隆到台北 > 通車的上班族,花很多的時間在車上,在車上拜讀您的大作真是讓人 > 愉快的事情(我回到家已晚,也只有在車上能有時間充實自已)。 > 這段時間內,我無法上機,卻能從中受益。而且一次再一次去閱讀, > 常會有新的收穫,真如古人所說溫故而能知新。當然若找時間上機心得會更多。 以前大家苦哈哈的時候,都是用人腦 run 電腦,不到最後關頭不輕言 上機,上得機來就要給它個百發百中。這種習慣在今天「寫碼、編譯、除錯」 的輪迴中已經提昇為「美德」的層次了! 你的讀書形式,雖然辛苦,恐也不無額外收穫。苦樂之間,存乎一心。 捧著一本磚頭般的巨書,隨著火車搖搖晃晃的車廂,頭兒也不時搖搖晃晃, 口中時而唸唸有詞,手上時而握拳時而振筆,初淅瀝以瀟颯,忽奔騰而砰湃。 啊,這樣的畫面會讓你手中那本書的作者感動得掉淚。 > 在此有幾個問題想請教您: > > 1.您是否有開課?課程為何?如何報名? 我固定每週四晚在元智工學院開3學分的課,分別教過 SDK 程式設計、 MFC 程式設計、Windows 作業系統。時有外校學生和校外人士旁聽, 一律歡迎。其他的公開研討會,視「奇蒙子」而定。但今年沒有這方面的計劃。 > 2.如何得知您的新作何時會出版? 逛書店看到,或,寫 mail 來問我。 > 3.最後請教您,侯捷到底是不是您本人? 您這麼問,會不會讓侯捷先生傷心? :-) > 送件者: Asing Chang <asing@ms4.hinet.net> > 收件者: JJHou 侯俊傑 <jjhou@ccca.nctu.edu.tw> > 主旨: Greet > 日期: 1997年2月19日 AM 09:04 > > Dear Hou Sir: > > 今天抱著「無論如何一定要」的心情, 把 Dissecting MFC 拿 > 出來「開鋒」。序還看沒完就被深深地感動。這是一本 > 太好的書,我想,我們是一群幸運的讀者。雖然我們沒有 > Petzold 或 Pietrek, 但是我們一樣能擁有最好的閱讀水準。 我也被你的這封信深深感動。別因為感動而不動,序後面還有很多好料。 > 送件者: TomJPSun@acer.com.tw > 收件者: jjhou@ccca.nctu.edu.tw > 主旨: About Training Course > 日期: 1997年2月4日 AM 06:42 > > Dear JJ: > > 哈囉,我是 Acer Netxus Inc. 的 Tom。我上次參加了你的 MFC 訓練課程, > 獲益良多,謝謝你。我希望知道你是否還有其他課程,我想參加。因為我 > 喜歡你的上課風格(以及內容)。如果你最近有任何課程,請讓我知道。謝謝。 認真授課能獲得回響,真是最好的回報。唯今年我沒有安排公開課程的 計劃,只有宏碁、睿昱半導體、華邦電子等公司內訓是安排好了的。 > Dear JJ:開春第一喜,就是收到侯大哥的回信。 > 看到 Run!PC 中時而出現的大補丹(很有營養的文章是也),就可以略窺幾 > 位前輩的研究方向。現在 Jave 與 ActiveX 的世紀大戰方興未艾,大 > 概不善押寶的 programmer 兩邊都要去學,果真是「學海無涯」了! > 我有一個千古之謎 ─ 侯捷是誰? > 也許侯大哥刀筆風格迴異,小弟也曾比對 Dissecting MFC 與【無責任書評2】 > 的筆鋒,卻有似同實異之感覺!沒人告訴我答案。 > 追查這事又似乎是與 programming 無關,這千古謎團就擱在我心裡。 侯捷是誰?唔,一個好人吧我想。:-) > 送件者: Jaguar <simon830@ms7.hinet.net> > 收件者: jjhou@ccca.nctu.edu.tw > 主旨: 曲高和寡 > 日期: 1996年12月20日 PM 05:27 > > 俊傑兄您好 : > > 有個問題想問您,為何在台灣要做基礎的事(R & D)總是很難如願。 > 為何只有做近利的事才能被認可為成功之道。也許是無知的人寄 社會是如此功利,政府又沒有遠見,故此。 也不見得近利才能成功。我自己做的事並不圖謀近利,從其迴響 觀之,成果豐碩,令我感動。 > Hi, 傑兄您好 : > > Sorry,又來打擾您了。在此要先說句謝謝您的解答。 > 也要說句我真的很羨慕您,因為您是在學術界工作。 進入學術界是無心插柳。原先在工研院,則只能說是帶點學術味的半研究單位。 目前我只是在學校開3學分課程,算半個學術人。不打算專任,這樣最好,自由。 > 我是屬於為了生存而不得不為五斗米而折腰的人。 > 如何才能將所謂的工作和自己真正想做的事找出一個 > 平衡點,使其能兩全其美? 我們都難免可能為五斗米折腰,人生終歸這麼回事。不要折損了尊嚴就好。 只要有理想與毅力,不會永遠壯志難伸。 > 希望您能多出版一些像「深入淺出MFC」的書, 讓我 > 們這些想要真正好書的人能大快朵頤一番。謝謝。 > 帶著一顆期待心的人(原也許是無知的人)寄於苦牢 聽到這樣的鼓舞,我不能無動於衷。今晚我會多熬兩個 小時 -- 情不自禁地。苦牢讓人聯想到囹圄,難道我在縱貫線上 和看守所內都有讀者?玩笑話請原諒,願你早日脫離苦牢。 > 送件者: Shieh <lmy64621@mail.seeder.net.tw> > 收件者: 侯俊傑 <jjhou@ccca.nctu.edu.tw> > 主旨: 拜讀大作「深入淺出MFC」 > 日期: 1997年2月10日 AM 03:15 > > 侯先生:您好,我是您忠實的讀者,您所寫的書一向是我在學習新的東西時 > 很大的幫助。除此之外,我也十分喜歡看你為新書所寫的序,那種帶有些 > 哲學家的感覺!最近我想學 MFC,在市面上找到你的書。拜讀後甚為興奮, > 也十分謝謝您寫書的用心。 我所追求的,不僅是知識的傳達,還有閱讀的樂趣。一位醫師朋友說他最喜歡 看我寫的書序(其他的部份都看不懂)。因為有你這麼可愛的回應, 所以有我這麼努力的付出。 > 送件者: xxxxxxxx@csie.ntu.edu.tw (姑隱其名) > 收件者: jjhou@ccca.nctu.edu.tw > 主旨: 「EQ價更高」讀後感 > 日期: 1997年2月10日 AM 10:34 > > 侯先生,好久沒和你通信了,不知你是否還記得我? 那不重要,我只想跟你分享 > 自己今天看過「IQ 誠可貴,EQ 價更高」這篇文章的感覺。 > > 當初剛進資訊系時,聽了一番您的演說,就已經明白資訊這領域競爭之激烈, > 環境之險惡。但是我仍然對自己充滿信心,深信能夠依靠後天的努力,開 > 創自己的一片天。但是一學期下來,卻充斥著無力感,覺得在資訊的茫茫大海中, > 找不到一絲著力點...。 > > 我時常勉勵自己:在程式寫作之外,我還有許多別人比不上的能力,諸如人 > 際關係,企劃能力等等,這並不是短期間就能夠見到成效的。也因此我顯得 > 有些迷惑,也不知道今後能否在資訊的領域裡創建自己的天地? > 說實在的,我跟系上某些「電腦保送生」相處不來,他們就像侯先生所說的一 > 樣,相當神氣,過度自負。 > > 不知道面對這些「電腦高手」是跟他們學習好呢?還是保持距離好呢? > 能合作固然是件好事,但是必定不能長期相處。說句真話,不是酸葡萄 > 心理,他們只是比一般人早接觸到電腦,對寫程式有興趣,但是其他的方面確 > 實表現的不怎麼樣。這段差距應該不會永久,而且太過自負也無法在團隊裡頭生存下去。 > > 寫了這麼多,不知確切想表達什麼,只是今天看過文章,心中 > 有話不吐不快。希望不會耽擱您太多的時間。過了新年, > 又是新的開始,我該再重新思考將來的方向吧! 謙虛(發自內心的謙虛)不僅表示你自己很盈滿(否則談什麼謙虛),也代表你 能體貼他人之缺損。當我在你這個年紀,我不知道謙虛是多麼高貴的美德。 很幸運的是我並不一直都出類拔萃,所以我早早學會了勤奮。 我想你聽過一句話:少年得志大不幸。這種話沒有些人生歷鍊是不 能夠體會的。或許你還不能夠體會,但我告訴你,那句話千真萬確。 一般而言,我們的社會已經沒有人會對大學生們提到品性上的課題。大學生們 也很少有人對自己的品性下功夫精進。多思考,多反省,不要成為機童或怪胎。 我沒法告訴你該如何如何與「IQ 一百,EQ 零蛋」的人相處。Case By Case 啦! 我自己碰過一個,也是處得很糟,因為我並非 EQ 一百。 如果你能夠試著與之和樂相處,你可以學到容忍與寬憐。   -- ※ Origin: 楓橋驛站 ◆ Mail: jjhou@ccca.nctu.edu.tw ("J.J.Hou") ※ X-Info: Mave -> ric.bbs@ptt.csie.ntu.edu.tw ※ X-Sign: 0ROAAR5PH9D8TSFhxQt6 (99/07/09 6:51:17 )