12年前看过这篇文章,今天又看到了,还是有些感慨的。上课的时间虽然已经永远远去,用整块的时间去学习已经不可能,但道理还是要记着的,没准依然有用,自勉。
-----------------------------------------------------------------------------
迷时师度 悟了自度――侯捷
元智大学和清华大学的资讯系同学,最近不约而同邀请我在自校的资讯周上为同学们做个演讲。对於那些吊尔郎当,连自己也不关心自己的同学,我向来一点气力都舍不得花;但对於积极上进的同学,我可倒是很喜欢和他们谈话。曾经在不同的学校讲过好些个不同的谈话性题目(非关技术,但都不脱资讯范围),这次有感於在学校任教三年了,颇知道同学们的一些学习情况,所以想和大家谈谈学习的心态、老师的角色、以及学习者自己的角色。
我想先说一个小故事。
六祖檀经
佛教东传中土之後,虽然大德大贤备出,但由中国和尚所着,被奉为「经」者,也只「六祖檀经」一书而已。
六祖檀经记录着佛教禅宗六祖惠能一生的思想言行。其中对於六祖得道的过程,有详细的叙述。
六祖惠能俗姓卢,南海新兴人。年少失父,母且寡居,家亦屡空,业无腴产。所以他从小做了樵夫,养家活口。有一天他偶闻肆间诵金刚般若经,心有所感,於是询问邻人何处学佛,遂安置母亲,至河北黄梅山礼拜五祖。
五祖弘忍
五祖弘忍见惠能谈吐甚有根性,不动声色地让他到後院碓米。八个月後有一天,弘忍告诉众弟子说,每一个人写一首偈,谁能悟道,我便传他衣钵。当时人人以为五祖座下第一大弟子神秀必得衣钵,所以也没有人去作这首偈。神秀在这种情况下,一来「责无旁贷」,二来也想让师父看看自己心中的见解,便在三更时候於南廊壁上写下心偈一首:
第二天五祖弘忍见到了这首偈,把神秀叫到座前询问。并谓:「汝作此偈,见即未到,只到门前,尚未得入...」。要神秀回去再作一偈。过了数天,神秀却作不出来。
千古名诵
有个童子行过碓房,唱诵神秀的偈。惠能闻後,问明缘由,便请童子引至大堂。礼拜之後,惠能说自己也有一首偈,但是他既不识字更不会写字,乃请人代书写下千古名诵:
此偈一成,众总皆惊。消息传至五祖,了然於心,但恐人损害,遂脱了鞋子当抹布,立刻把这首偈擦掉,并且说「这首也嘛没有悟道」!
第二天,五祖弘忍悄悄来到後院,看到惠能把大石头系在腰上,增加身体的重量来碓米,很是感动,於是和惠能展开一段非常空灵神妙的对话。弘忍问「米熟也未」?惠能曰:「米熟久矣,犹欠筛在」。於是祖以仗击碓三下而去。惠能知祖意,是夜三鼓入室,由祖为说金刚经。当说到「因无所住而生其心」,惠能大悟,於是五祖授衣钵以为信,并且说「衣为争端,止汝勿传...,汝须速去,恐人害汝」。
迷时师度,悟了自度
五祖弘忍亲自送惠能到九江驿,令上船,把 自摇。惠能曰:「请和尚坐,弟子合摇」。祖云:「合是吾渡汝」。惠能云:「迷时师度,悟了自度」。
我曾经在研究所毕业的前夕,因为看了这个故事,有感师恩,在实验室黑板上写下大大的这八个字,表达我心中强烈的情绪。我知道我就要永远告别我的学生生涯,再也没有人度我,我要自己度化自己了。
今天我意料之外地成为许多人的老师。远在接受学校的聘书之前,我其实也已经在外面开过很多课程,做着授业解惑的神圣工作。我的书籍文章,更使我扮演与广大读者之间一种默默的师生关系。每当一个课程的开始,不管面对的是业界的工程师,或是学校的学子,我总是告诉他们,课程是短暂的,课後才是长久的。一个课程就算长达一学期,也只是(只能是)奠定学习者日後自修的基础。
进入社会的人,我想比较能够了解这里面的意义。象牙塔里的学生,即令闻言成理,总似乎不容易感受深刻。於是日复一日,年复一年,看着同学们勤嬉戏而荒精业。我带过好几届学生,大凡转学生、五专插班生、重考生都比较用功些,大概因为他们经历过一些小小的挫折。而他们的努力,很快使他们立於同侪之上。
挫折在人生早些时候到来,谁曰不宜!
谁悟了?
禅宗讲究顿悟,基本上是一种比较「玄」的境界。说是「迷时师度,悟了自度」,其实,除了大德大贤,谁又敢说自己悟了?智慧容或可以顿悟,知识又岂能够如此?谁敢说他对知识「突然都懂了」?所以「悟了自度」的「悟」,在这里我把它解释为「有了扎实的基础」:当你有了足够的基础,你就可以不依靠任何人任何时间任何地点传授您知识。只要有书籍,你随时可以自度。拥有足够的基础,你甚至可以开始另一种更高层次的自度:你开始自己设想问题,自己推敲解答,自己设计验证的方法,并自己判断逻辑有没有破绽。再高明的老师,也没有办法把自己的悟力灌入学生心中;唯有学生自己动念思考,再由老师协助解开关键环节,学生自己才能开悟。
南宗与北宗,顿悟与渐悟
佛法有顿悟,学问可没有。如果有人说,我突然在某一天对 Java 开悟了,对 OO 开悟了,对 MFC 开悟了...,我想那是他刻意(为了炫耀)或非刻意(因为遗忘)地忽略了他所谓的「悟」那一天之前的所有努力。是的,那叫渐悟,不是顿悟。
Inside OLE 一书作者 Kraig Brockschmidt 在他的序里面有这段话:
Essential COM 一书作者 Don Box 在他的序里面亦有一段类似的话:
听起来都是顿悟的例子。难道学习 COM/OLE 特别需要宗教信仰吗?我想是因为这些技术特别需要高度抽象思考,使得霍然开朗後的喜悦巨大到令人觉得是一种「突然的神迹降临」。其实你我都明白不过,知识点的突破,是靠知识面的累积。
时时勤拂拭,莫使惹尘埃
既然知道点的突破要靠面的累积,同时也知道我们「具足凡夫」,没有大宗师的智慧,我建议你还是多体会神秀的见解(六祖佛法南传,神秀创立北宗,主张渐悟)。把神秀的「时时勤拂拭,莫使惹尘埃」至少应用在你满桌子的经典好书上面。噢,你应该有满桌子的好书吧?没有?!那我就很为你惋息了,你连自度的小船都没有,连自救的工具都没有,谁来拯救你?我知道好多工程师桌上可怜没几本书,月入倒有 7,8 万,年终股票分红的张数比全年买书的本数还多。叹!不看书,你的日子会愈来愈贫乏,愈来愈空虚,因为你一直掏东西出去,掏空了人也就瘪掉了。
工程师或许说「我都嘛看 paper 和 document。看书?呵呵,等书出来都太慢了啦」。喔,在 project 方面你不得不冲,你不冲公司也会要你冲。但你不觉得有很多基本的东西,其实你摇摇晃晃?有很多基础的东西,其实你从来没有好好把它搞懂变成自己的中心思想?你的 project 总是急如星火,所以可以 work就好啦!「旗正飘飘(到处埋设 flag)」管它的!模组规划管它的!文件撰写管它的!目光浅短者,从来不去想日後的维护工作要如何进行,「深谋远虑」者,则想反正到时候我已经走人了。
这不就是我所看到的业界通病吗?
「学海无涯,唯勤是岸」,这句话我总想错不了。有人说,勤勉二字诀不是万灵丹,若无兴趣,再勤勉也没有用。我想从两个角度来看这件事。第一,「勤」能不能够克服「难」?如果目标是放在成为一个胜任的从业人员,这一点应该没有问题,毕竟 computer science 能有多难?Computer engineering 又能有多难?多花点功夫还有读不会的吗!一本不懂,再读另一本(前提是都是筛选过的好书)。一试再试做不成,再试一下嘛。
第二,「勤」能不能够克服「没兴趣」?大概不能!「学海无涯,唯勤是岸」这句话本来就是要以兴趣做为基础,这是大前提,着毋庸议,本来就不必说的。电子、电机、资讯的循环太快,竞争太烈,如果没有强烈的兴趣,念起来会非常非常痛苦,趁早转系转业吧。
然而,有多少人根本是懵懵懂懂地进入大学,懵懵懂懂地填了科系?他们根本不知道自己真正的兴趣在哪里。也许兴趣会因为努力後的成绩提升而加分,亦未可知呀!
坚定知道自己兴趣在哪里的人,是最幸福的人。自从我自己的人生终於归定位後,我清楚地有这种感受。
元智大学管理学院从去年起就大一不分系,大二开始才由同学自己选系。我非常佩服校方的这种从善精神与兴革魄力。
书籍是永远的老师
说到底,阅读习惯以及鉴赏能力的培养,是你能不能够在求学的道路上「自度」的关键。广义地说,也是你能不能够在人生道路上「自度」的关键。如果一辈子要靠别人来指点你该看哪些书,该怎麽看,忒也太没有长进了。你能阅读,就能鉴赏;阅读数量愈多,鉴赏能力愈高。很多人好奇我如何有能力评析那麽多又厚又深的大块头书,无它,因为我读的多,因为我读的深。
【余秋雨.台湾演讲】(余秋雨/尔雅/1998)一书中在「建议阅读」这篇文章上写道,「我觉得一个人的最佳读书状态大多产生在中年以後,但能不能取得这种状态则取决於青年时期的准备」。余先生又说,曾有两位年老的大学图书馆管理员告诉他,他们能从一年级学生的借书卡上预测这些学生将来的成就,几乎百试不爽。有人毫无规律胡乱借,有人穷数年之力死啃一大堆名着,有人的借书卡过於疏空,有人的借书卡却又太密密麻麻。
希望这些话能对我们产生一些启示。对於尚在学校就读的学生,我想特别指出,进入社会之後的工作是如此繁忙,你更需要在学校把握机会,奠定良好的习惯和良好的基础。
边际效益
如果你有一笔钱,放在银行的活存利息有 3%,定存利息有 7%,而且你暂时无需用钱,那麽你会把钱活存还是定存?
当然是定存。多麽简单的选择。
如果你知道,课前预习的话,上课听讲可吸收 70%;课後立刻复习,可把效果再提升 10%;课後第二天复习,只能提升 5%;课後第三天才复习,能保住原来的 70% 不错了;课後一个星期复习,只能保持 30%;期末考前才看,则当时脑袋瓜里只留有 10% 的残存记忆。
那麽,你会课前预习并且课後立刻复习吗?
很多人在处理金钱时都是聪明人,在处理时间时都愚蠢的要命。
你是哪一种?
如果可以循序来
一位读者写 email 给我,他说『有点可惜,Windows 3.0年代我刚开始碰电脑。如果照程序走的话,应该可以把基础打好的』。
面对此言我思潮起伏,想起自己这五、六年来的人生转折。『如果照程序走的话』,是的,我很幸运地照了程序来走,所以路不是太颠簸。我从 DOS 时代开始学习C programming、然後触摸低阶的 BIOS call 和 interrupt并学习 assembly 语言,然後研究保护模式以及记忆体管理,然後学习 SDK programming、学习 C++、学习 MFC programming、钻研 Windows 作业系统...。由於基础愈挖愈深,成果愈垒愈高,新技术新知识也就愈来愈容易上手。核心基础打得稳,更能够以不变应万变。
现在才面对这五彩缤纷花花亮丽的资讯世界的人,不管你是大一新生,或是忙於工作专案一直没有机会充电,还停留在古早年代的工程师,我可以想像你们的苦闷。新知识新技术如泰山压顶,你不知道从哪一条路开始走。有师长前辈指导正确的学习次序已是万幸,有些东西(还不少)偏又不是那麽有绝对的次序性。好比说作业系统好了,我是先学习抽象的一般性作业系统概论(例如大三安排的课程)呢?还是先学习专一而具象的作业系统(例如 Windows)实作技术呢?一开始就抽象会使我坠入五里路,没有踏实感;一开始就具象又使我的常识与一般观念不足。又例如C++ 和 OO,臻於高峰前通常必须经过几个阶段的反覆学习,包括语言本身、程式实务经验、classes 设计能力、市售application framework 之运用、对 object model 的彻底认识。这些阶段并不是结束一个而後开始另一个,它们都有重叠性。经过这样的铺陈,你会发现,原来通往 COM的基础已经在这些阶段中扎好了。
身在知识爆炸的时代,算是对求知行为的一个不幸吧。可是,永远有人生在你之前,也永远有人生於你之後,还能怎麽样?认命一点。
令人佩服的学习精神
这学期我开的 Win32 system programming and Win95 OS课程,除了自校学生选修,就我所知道的还有交大两位大学生和清大一位研究生,以及中坜地区几位工程师来旁听。过去也曾有台北来的工程师旁听。我非常佩服这些同学的学习精神。从台北或新竹坐车到内坜可不是件轻松的事,尤其在那想起来就头痛欲裂的下班时段。有一天我顺巧载那位清大研究生回竹,才知道他每周四上完我的课回到住处都超过晚上 11 点了。
为了上三小时的课,前後再花四小时。这样的求知心真是不容易呀,我很佩服。
旁听的同学永远是最认真的,远道来的同学又更认真。因为他们更懂得珍惜。
经典好书再次整理
三不五时就会收到一些 email,要我推荐专业上的书籍。我再次把个人研习领域(C,C++,Win32 OS,Win32 Programming)内的一些好书胪列出来给大家做叁考。
很多人混淆了所谓的入门书与基础书。入门书必须浅显易懂,因为它面对的是全然无知的新手;如何吸引并提升读者的兴趣,几乎是入门书最重要的功课。基础书不一样,它的读者早已入门,甚至有相当经验;它的任务是为读者挖好更深更实在的基础。通常这种书的论述层次都很深,一件事直接探到了源头;碰触范围也很广,旁徵博引以求全效。
通常过了入门阶段,一本入门书对你已是毫无滋味(但不要回过头来骂它,毕竟你也曾受过它的帮助。何况一本好的入门书是非常不容易写的)。至於基础书,可以伴你长长久久,上面的注解眉批、心得笔记,甚至还可以唤起你的许多艰苦而欣慰的回忆。
下面全都是可以为你奠基的书。其中 AW 是 Addison Wesley的缩写,MP 是Microsoft Press 的缩写。如果有中译本,我会在书名後面加注,但这并不代表推荐。这些经典的中译品质,有的很好,有的普通,也有的错误百出。有些书我不确定有没有中译本,各位网友如果知道,请告诉我或公开回覆,谢谢。除了 "Macro Assembler Bible " 年代久远,其他都是 1996 以後的新书。
--------------------------------------------------------------
⊙Assemble
1. Microsoft Macro Assembler Bible 2/e(Barkakati/SAMS) 碁峰中譯
⊙C++:
1. C++ Primer 3/e(Lippman/AW) 碁峰將有中譯本
2. The C++ Programming Language 3/e(Stroustrup/AW) 儒林中譯
3. Inside The C++ Object Model(Lippman/AW) 碁峰中譯
⊙SDK:
1. Programming Windows 95(Petzold/MP) 松格中譯
2. Windows 95 : A Developer's Guide(Richter/M&T Books)碁峰中譯
⊙VxD:
1. System Programming for Windows 95(Oney/MP)松崗中譯
2. Writing Windows VxDs and Device Deviers 2/e(Hazzah/R&D Books)無中譯本
⊙Windows O.S(and/or Windows System Programming)
1. Windows 95 System Programming Secrets(Matt/IDG Books)旗標中譯
2. Advanced Windows 3/e(Richter/Microsoft Press)松崗中譯
⊙Windows NT kernel mode driver:
1. The Windows NT Device Driver Book(Baker/Prentice Hall) 無中譯本
⊙MFC
1. Inside Visual C++ 4/e(Kruglinski/MP) 無中譯本。舊版由碁峰中譯
2. Programming Windows 95 with MFC(Prosise/MP) 松格中譯
3. 深入淺出 MFC 2/e(侯俊傑/松崗) 中文書
4. MFC Internals(Shepherd & Wingo/AW) 無中譯本
⊙COM
1. Essential COM(Don Box/Addison Wesley)碁峰中譯
2. Inside COM(Dale Rogerson/Microsoft Press)松格中譯
--------------------------------------------------------------
参考:
https://nieyong.github.io/wiki_ny/%E8%BF%B7%E6%97%B6%E5%B8%88%E5%BA%A6%20%E6%82%9F%E4%BA%86%E8%87%AA%E5%BA%A6.html
https://www.ptt.cc/bbs/CareerPlan/M.1111323953.A.1C8.html