過猶不及

侯捷 2000/05/20


●過猶不及

前陣子我在 BBS 上看到一封 post,大意是說發信者修了一門「系統程式」課程,老師出的習題是寫個 assembler,並需以視窗模式作為人機介面。學期已經過去一半,同學們束手無策,不知如何是好。

這讓我心驚膽顫。視窗介面的 assembler?這不是我那群在科學園區工作的朋友(恕我不能說他們的公司名稱)手上的 project 嗎?他們負責為公司生產的晶片開發 assembler,並提供視窗介面,以求給客戶一個好的開發環境。

大三(or 大二?)學生竟然也要寫這樣的東西,會不會太為難同學了?

「系統程式」課程以 assembler 做為習作,是司空見慣也十分理所當然的主題。assembler 的難度與複雜度,和指令集的大小有密切關係;我並不會天真地以為那個習題的規模會與那家全球數得出排名的晶片公司所進行的 project 的規模相提並論。

讓同學們習作一個小型規模的 assembler,當然是個適當的磨練。

問題出在「視窗介面」。

windows programming 不是件簡單的事情。可是很多資訊系上(以及許多老師)認為這是同學們自己要去想辦法的事。然後,把這種放任同學自生自滅的技術又套在習題上面,要求同學們完成目標。

沽且不論 windows programming + assembler 兩者合一對大三同學的難度。「系統程式」課程要求寫個 assembler 做為習題,就是希望同學們好好寫個 assembler(我這可不是廢話嘛)。套上視窗介面,同學們上焉者也得花許多時間來做與這門課程(系統程式)毫不相干的東西(視窗介面),下焉者根本做不出來,只好用抄的用拷的。本來可以對本科目精益求精的時間精力,現在必須另移一大半它用。

更糟的是,不論全抄的、半抄的、套用(某種什麼好用之)介面外殼的,從此都自以為「我可以寫出一個視窗介面的 assembler」。眼的境界提昇了不少,手其實還停留在原地。

眼的境界提昇了不少,手其實還停留在原地!該紮的基礎沒紮好,虛浮空泛的東西倒有一堆。這是題目太難的最大後遺症。影響同學很深遠。

p.s. 如果這個習題,把「視窗介面」列為 option,就很理想了。做得出來,加分;做不出來,固守本份也不差。

* * * * * * * * * * * * * * * * * * * * * * * * * *

家裡請了一位新竹師院的大二同學當小孩的鐘點褓姆。她是數理系,於是我閒聊問她是否有上些電腦課程。她說有。

『什麼樣的課程?』
『上學期教 C 語言。』
『那不容易唷。出了些什麼習題?』
『打磚塊。』
『打磚塊?那不是得有圖形介面嗎?難道你們得寫 Windows 程式?』
『是呀。』
『真是很不容易。你們都寫得出來嗎?』
『嗯…大部份都要請出學長學姊的習題做參考,或是請外校同學幫忙。』


又是一樣的情況,課程的習題遠超出同學當時的能力。我實在不能想像 C 語言課程要求同學寫一個打磚塊的 Windows 程式。太難了,太難了。

既然使用 C 語言,那麼顯然得以 SDK 來寫 Windows 程式囉?太難了,太難了。(我敢說如果我追問下去,那位數理系大二同學不知道什麼是 SDK)

既然使用 SDK,那麼顯然得知道 WinMain, CreateWindow, RegisterClass, Message Loop, DispatchMessage, window procedure 囉?太難了,太難了。(我敢說如果我追問下去,那位數理系大二同學什麼都不知道)

既然是打磚塊遊戲,那麼顯然得知道動畫基本原理囉;既然用的是 SDK,那麼少不得也得知道 Windows message, WM_TIMER 囉?太難了,太難了。(我敢說如果我追問下去,那位數理系大二同學什麼都不知道)

習題交出去了,學分拿到了,意義何在?

糟糕的是,不論全抄的、半抄的、囫圇吞棗的,從此都自以為「我已經可以寫出一個視窗模式的「打磚塊」遊戲程式」。眼的境界提昇了不少,手其實還停留在原地。

眼的境界提昇了不少,手其實還停留在原地!該紮的基礎沒紮好,虛浮空泛的東西倒有一堆。這是題目太難的最大後遺症。影響同學很深遠。

●嚴師與高徒

三字經裡就說了:子不教,父之過,教不嚴,師之惰。

老師們大概都希望別人稱己一聲嚴師,都希望別人說我某某人的題目出得很有水準。如果聽聞同學們背地裡說「某某老師的題目好難唷」,「某某老師每學期砍掉 30 個」,難免沾沾自喜。如果不小心知道自己得了一個「大刀」之名,恐怕心情亦沒有不愉悅的。

可是,要知道,嚴師和難題(超過應有水平)沒有任何關係。「題目有水準」和「題目很難」也沒有任何關係。

每一門科目,重視的應該是基礎的養成,就像練武人的呼吸吐納與馬步功夫。現在大學生,大部份人的基礎都太虛浮了,經不起嚴格的測驗。

如果要我測同學的 C++/OOP 程度,我只要你寫個 100 行的小程式,看看你的 programming style 是否有大家風範,就知道了。行家一出手,便知有沒有。我不需要你寫什麼大程式給我看,也不需要知道你寫過多麼大的軟體(那不一定準)。

揠苗助長是沒有用的 — 扼殺了同學的興趣,效果適得其反。呼吸吐納與馬步功夫最重要。

●老師的心理狀態

「心理狀態」就是「心態」。中文裡頭說「探索老師的心態」,感覺起來好像很負面。說「探索老師的心理狀態」,比較中性些。那麼,讓我們來探討一下老師的心理狀態。

這真是一件臨淵履薄的工作。中國人為尊者諱,為賢者諱。老師既尊又賢,怎可探討老師的心理狀態!

沒關係,侯捷亦為人師,就當侯捷自我剖析好了。

老師出的考題或習作難度過高,超過同學應有的水平,總的來說是:

1. 眛於現實,沒有深刻分析同學們在怎樣的學程安排下,目前應該有怎樣的實力。

2. 好大喜功,喜歡看到華麗的教學成果,不論同學如何達成。

3. 自信不足,喜歡聽到人家以讚嘆的聲音說「老師的題目好難唷,好有水準」。聽到「老師的題目很簡單啦,學分好拿」,則鬱卒。

4. 揠苗助長,太過心急。


「婦孺皆解」本是讚美詞,學術圈內則千萬別說誰誰誰的論文或書籍或課程「婦孺皆解」。

如果「婦孺皆解」不是讚美詞,白居易在中國文壇為什麼有那麼高的地位?

課程的良窳,不在考題或習題的難度。不當(過難)的考題或習題,扼殺同學的信心和興趣,罪過一樁。

話及於此,點到為止。

--- the end


Pei-Lun wrote (2000/07/06) :

...讓我想要寫信給您是因為看到"過猶不及"那篇文章,我在台灣唸書的時候也遇見過那樣的老師,雖然不是程式相關的課程而是有關財務分析,不過那位老師出的題目真的是可以比擬文章中的例子,當時只覺得那位老師想用那樣的方法獲得自己地位的肯定,自然對於那個科目的內容也不是理解的很好,自己也覺得很可惜。因為老師的良窳可以決定學習的成果與理解,越好的老師應該可以用越淺顯的方法來解釋才是。上星期恰好來了一位澳洲的老師是專攻Dynamic Programming的,在Dynamic Programming裡算是大師級的人物,聽了他的講解才真正體會到唯有對於一個主題很了解的人才有辦法用簡易的方式說給別人聽。...