Re: 初學者要如何學習 C++【我見我聞我感】
Re: 初學者要如何學習 C++【我見我聞我感】
侯捷 jjhou@ccca.nctu.edu.tw
http://www.jjhou.com
本文第一次發表於 2000/04/22
清大.楓橋驛站(140.114.87.5).電腦書訊版(Computer/CompBook)
本文將於日後整理於 侯捷網站/散文 2000
---------------------------------------------------------------
最近 CompBook 版的一個題目:「初學者要如何學習 C++」,
又引發一長串討論。每天我啜著咖啡,看著一篇篇的長短文,
在精譬與幼稚、深遠與淺薄、罵聲與辯白之間,固然得稍遣
一日下來的疲憊身心,聊以為茶餘飯後之資。但是看著日漸
眾多的貼信,想到某些問題,心情也不很輕鬆得起來。
我有一些感觸。
●不要罵人
學問高、技術好,固然可以說話比較宏聲,比較強勢,
比較得到大家的尊敬與體諒,別人也比較不敢招惹,
但不表示可以出口罵人。「廢物、白痴、人渣、丑角」,
這些罵人的話實在不宜。
不可以罵人,是網路的基本禮儀。「不可以」可以從兩個
層面來說。法律上來講,網路上之不可以罵人也許是個
灰色地帶,被罵者多半也不會訴諸大動作。所以除非是
名人被罵,或名人罵人,而且嚥不下一口氣,多半只是
清風徐來,水波不興。
我要談的是修養層面上的「不可以罵人」。我要談的是
上網基本守則,就像談做人的基本道理一樣。
有些人的行事採「直率」原則,必要赤裸裸地表現自己的
情緒而後快,至於禮儀諸等,則或斥之「偽善」。網路
是個不露臉的世界,也大量容忍了這等「直率」。但是
如我常說的『文如其人』,文字表現了作者的為人處世、
心境修養、學問技術。為文能不慎乎?
古云「君子不欺暗室」,意思是雖處於無人得見之暗室,
亦不做欺心敗德之事(唐駱賓王.螢火賦:類君子之有道,
入暗室而不欺)。網路這個虛擬世界,就像一個大暗室,
你在暗室中的一切行為,雖然別人不得見,仍忠實映照
你自己。
昨天,我順道載來元智旁聽的交大學生回竹。途中剛好他
提起 CompBook 版的這陣熱鬧。我淡然地說:不該罵人。
學生說:可是有人本來就該被罵。
哦,是嗎?
如果說這個世界是「觀念可能有點偏差、技術可能有點不足、
態度又沒讓你順眼的人,便該罵」,那麼我說,罵人有罵人
的技巧與藝術,你罵人的表現這麼粗糙這麼差勁,
「觀念可能有點偏差、技術可能有點不足、態度又沒讓我順眼」,
也該罵囉?
不,你不該被罵。所以他也不該被罵。
要表現尖銳與犀利,另有辦法;請不要用罵,尤其是像
「廢物、白痴、人渣、丑角」這種話。
或有人說,我的個性就是這樣,直率是我的座右銘。那也
依得。我剛才說了,網路是個不露臉的世界,大量容忍了
這等「直率」。我寫這篇文章,原也意不在影響罵人文章的
作者(我想我沒有這樣的能力), 我想影響的是罵人文章的
讀者 — 你。
●文如其人
衍生而來的,我還想說的是,競速的時代,以及臺灣教育
的偏頗,造成了網路上的文字錯別字連連、邏輯不通、
語意不暢…。大家都急就章地,有什麼想法就脫口而出,
線上回覆;不但不檢閱,甚至不重讀第二遍就按鍵送出。
文如其人。如果你連自己出手的文字 — 代表自己思想的東西,
都這麼不在乎不謹慎,你會對什麼在乎?你在乎的大概只剩
功利銅臭之阿睹物。如果現實生活中你是謹言慎行的,到了
暗室卻如脫疆野馬,這讓我想起現實社會中許多彬彬有禮之士,
上了自家車駕駛座,便換了張頭臉,罵聲連連,閃超擠推,
下得車來又彬彬有禮。
可是你,就是你,只有一個你。哪個是真實的你呢?半夜
問問自己。
●初學者要如何學習 C++
發問者,有能力從回信內容判斷回信者的經驗,進而估量其
正確性或適用性,進而決定自己的採用度嗎?
如果能,大概不會問這個問題。
如果不能,應該不必問這個問題。
在網路上悠遊這些年的經驗,使我輕易可以判斷哪一種題目
又有好戲看了,哪一種題目又要引爆口水戰乃至口角戰 —
而且最後只是一場混戰,篩子上留沒幾傢伙。
我們感謝熱心的回信者,他們熱切提供自身經驗,不論
自己是一年經驗、三年經驗、五年經驗、十年經驗…。不論
自己是 1/4 瓶水或半瓶水,或 3/4 瓶水或滿瓶水。
我想知道,以發問者的水平,如何判斷和取捨這些回覆?
通常我們尋求這類學習之道(這是對自己非常重要且關鍵的問題),
不應向陌生人求助,那於事無補。因為陌生人的經歷你一無所知,
為什麼他的學習之道值得你遵循?你既無法判知,就沒有必要發問。
為什麼不問你的老師?你的學長?你的同學?那是你看得見
摸得到的人,如果你佩服他們的能力,你就可以詢問他們的
學習經驗。因為你知道他們的表現,所以你可以決定你的採信度。
對發問者而言,這樣是不是有意義多了?
●三不政策
現代學生有三不政策:不講話,不回答,不要問我。不論是
在大學殿堂,或是公司職訓,我往往面對沉默的台下,所以
我也學會從來不做田野調查 — 要人舉手點數那種。
是的,連舉手都有人不願意。任何會曝露自己任何狀態的動作,
統統拒絕。
這大概是為什麼大家喜歡上網發問的原因了。呵,沒人知道
我是誰。
學生心頭有疑問,不喜歡上課問,喜歡下課問。我完全知道
癥結所在。因為你心裡頭掙扎『這個問題有水準嗎?藏拙算了,
不要自曝其短』。於是上焉者下課來問,下焉者完全不問。
有的老師回答某些層次不高的問題時,會帶著揶揄的表情
或口吻。這種老師應該為現代學生的三不政策負點責任。
不願自曝其短,是正常的人性。那麼,你應該做的是,課前
預習。唯有課前預習,或課後複習,才有信心你所問的問題
有沒有水準,不是嗎?我真不知道現在還有多少學生有
課前預習的習慣。我的班上有一位,我很欣賞他的積極。
下學期我讓大家都帶面具上課,保證問題多得不得了。
●眼界 .1
從一連串 C++ 學習之道的討論信中,衍生出 C 和 C++ 的關係、
C 和 C++ 的能力比較。
老掉牙的問題!
有人不認為 C++ 比 C 優秀,認為別人大力捧 C++ 是因為沒
看過那種「C 功力出神入化」之神人,那種「C 語言程度高到
讓人難以想像」之怪物。
是的,我確信,所有 C++ 能做的事,C 都做得到。
"Inside the C++ Object Model" (中譯《深度探索 C++ 物件模型》,
侯俊傑譯,碁峰 1998)或是 "The Annotated C++ Reference Manual"
(無中譯本)書中,把許多 C++ 的奧秘(例如 object model, vptr,
vtbl, template, inline...)都曝露出來,讀者甚至可以因此寫個
C++ 編譯器(當然,方向有了,你可能需要知道更多實作細節)。
也許,C++ 編譯器便是以 C 語言完成的(我不確知)。
那麼,有什麼是 C++ 做得到而 C 做不到的呢?
沒有。
問題是,「可用」不見得「最好」。想想付出的代價。
我接觸 C++ 的前數年中,和同事有時候會去聽些課程。
我的慧根差,連 OOP 都轉不過來;我的同事慧根好一些,略可
掌握 OOP。至於 OOA/OOD,我們兩人都嗤之以鼻,私下竊想,
那些騰雲駕霧高來高去的老師,自己到底懂不懂呀。
但是我們只敢互相調侃開玩笑,不敢真的公開表達。即使
表達,也語多保留,容有迴旋。
因為我們知道,OO 這一軟體界的大勢,這麼多人的研究,這麼
多人的讚美,不可能沒有原因。我們也知道自己之不悟,怕只因
自己的淺薄。
後來我因此對 OO 失去了興趣,改攻 Windows(programming & OS),
我的同事則繼續深究。他雖不喜歡看書,但 C++/OOP 的書倒是
狠K了不少,並以個人卓越的 programming 功夫,在這個領域
成為專家。
我自己終於在研究 MFC 的時候,不得不痛下決心好好搞 C++/OOP。
所以我是為了運用一套 C++ class library,才開始學 C++。
要搞當然就要搞點成績(並且也因為搞出興趣),所以才往
object model, framework infrastructure, generic paradigm
繼續搞下去。
我再說一次,「可用」不見得「最好」。
我再說一次,一種技術,一種 paradigm,得到多人(可說是整個
業界)的推崇與讚美,不可能沒有原因。
眼界未開的時候,要知道自己眼界未開,保持謙遜。
●眼界 .2
十年前,我有了第一部車。於是我開始知道坐在駕駛座上的
各種狀況。
有一天我和朋友夜至景美訪友,坐朋友的機車去。機車大燈壞了,
我很擔心,要他閃方向燈一路騎去。他斥為無稽,並且說台北路燈
那麼亮,我們看得見別人,別人也看得見我們。
但我知道汽車座裡的駕駛從反光鏡看不見我們。
是看得見,但是要仔細看。如果仔細看反光鏡,就無法分神看前方,
所以駕駛人看反光鏡都是目光一瞥而已。在夜間,只有燈光才能讓
他瞥到。他不是在看後方有沒有物體,他是在看後方有沒有燈光。
我很慶幸在冒險夜騎那輛沒大燈的機車後,現在還活著。
我的朋友沒開過車,所以他不知道這種情況。我開過車,所以我知道。
這是我和他在那個時候,就交通工具的駕駛而言,層次上的差異。
我開小客車,所以對於七人座廂型車、九人座廂型車也都能夠輕易
掌握,立刻上手。但是要我開 10 輪大貨卡、兩噸半、甚至怪手,
我就知道有級次(order)上的障礙需要克服。要我開飛機,那級次
更高了。
機車的駕駛難度,以及可遊距離,和汽車有一個級次的差距。
汽車的駕駛難度,以及可遊距離,和飛機有n個級次的差距。
所以我們沒有辦法和井裡的青蛙談廣闊的天,和河裡的魚談汪洋的海,
和燕雀談鴻鵠之志。
但是我們必須有謙遜的心:在級次更高的人面前,我們便是他們眼中
的青蛙、河魚和燕雀。
--- the end
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@ccca.nctu.edu.tw
CompBook 近期熱門文章
PTT數位生活區 即時熱門文章