井蛙、河魚與燕雀

2000/04/22


最近 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++ 物件模型》,侯俊傑譯,眳p 1998)或是 "The Annotated C++ Reference Manual"(無中譯本)書中,把許多 C++ 的奧秘(例如 object model, vptr,vtbl, template, inline...)都曝露出來,讀者甚至可以因此寫個C++ 編譯器(當然,方向有了,你可能需要知道更多實作細節)。

也許,C++ 編譯器便是以 C 語言完成的(我不確知)。

那麼,有什麼是 C++ 做得到而 C 做不到的呢?

沒有。

大不了寫個具有 C++ 編譯器功能的 C library 附在 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)上的障礙需要克服。要我開飛機,級次的障礙就更高了。

機車的駕駛難度和巡航距離,與汽車有1個級次的差距。汽車的駕駛難度和巡航距離,和飛機有n個級次的差距。

所以我們沒有辦法和井裡的青蛙談廣闊的天,和河裡的魚蚌談汪洋的海,和燕雀談鴻鵠之志。

但是我們必須有謙遜的心:在級次更高的人面前,我們便是他們眼中的井蛙、河魚和燕雀。

--- the end


shyu wrote (2000/04/24) :

Hou Sir,

有時網路對話成為抒發個人情緒之處,用辭難免辛辣,語不驚人死不休,讀者卻成為情緒垃圾桶,真是無妄之災.

對於學習OO過程中心境轉變有真實描寫,猶如毛毛蟲經過褪皮、成蛹、化蝶,毛毛蟲可能不相信自己會變成漂亮的蝴蝶,蝴蝶也可能不覺得自己以前會長得那個樣子.

此文真是寫得針針見血,藉著網路對話或是對學習OO時心境與態度,點出事實,揭發人性脆弱的一面,人若能真正了解自己脆弱一面,並且接受這個事實,才能面對它們,進而克服它們.


zeyang wrote (2000/04/26) :

侯老師,您好:

看了您這篇文章,實在是忍不住要回您信,順便問候您。

雖然使用網路已經有十一年,但是自從有了校園 BBS開始,我就很少在網路上寫文章及聊天了。沒有時間或許是一個理由,更重要的一個理由是:沒有禮貌的人太多。老師,您說得好:「你(我)不該被罵。所以他也不該被罵。」可大多數的人有第一句的觀念,卻沒有第二句的行為。

連受教於老師的同學,都會脫口說出:「可是有人本來就該被罵」這樣的話來,更遑論云云網路眾生。

再看您文章中的「文如其人」、「三不政策」、「眼界」等各篇,真是句句針砭,值得各技術人員,或各理工科系同學一看再看-思考自己的學習態度,調整自己對他人的態度。

從身為技術人員,到現在擔任業務工作,我深刻地瞭解在公司裡,此兩造衝突的理由與原因。我也曾追求過「最好」,現在,我也好不容易能明瞭「可用不見得最好」這句話的道理。可惜這似乎是成長必經的階段,我只希望是侯老師的學生,都會是網路上的謙謙君子。

「上士無爭,下士好爭;上德不得,下德執得;執著之者,不明道德。(清淨經)」技術,不也是如此?

已經有一年半沒有與您聯絡了。但是,我還是常看老師的文章。新竹,也好一段時間沒回去看看了。希望能有機會去看看老師。
祝 平安