12年前看过这篇文章,今天又看到了,还是有些感慨的。上课的时间虽然已经永远远去,用整块的时间去学习已经不可能,但道理还是要记着的,没准依然有用,自勉。
-----------------------------------------------------------------------------

迷时师度 悟了自度――侯捷

元智大学和清华大学的资讯系同学,最近不约而同邀请我在自校的资讯周上为同学们做个演讲。对於那些吊尔郎当,连自己也不关心自己的同学,我向来一点气力都舍不得花;但对於积极上进的同学,我可倒是很喜欢和他们谈话。曾经在不同的学校讲过好些个不同的谈话性题目(非关技术,但都不脱资讯范围),这次有感於在学校任教三年了,颇知道同学们的一些学习情况,所以想和大家谈谈学习的心态、老师的角色、以及学习者自己的角色。

我想先说一个小故事。

六祖檀经

佛教东传中土之後,虽然大德大贤备出,但由中国和尚所着,被奉为「经」者,也只「六祖檀经」一书而已。

六祖檀经记录着佛教禅宗六祖惠能一生的思想言行。其中对於六祖得道的过程,有详细的叙述。

六祖惠能俗姓卢,南海新兴人。年少失父,母且寡居,家亦屡空,业无腴产。所以他从小做了樵夫,养家活口。有一天他偶闻肆间诵金刚般若经,心有所感,於是询问邻人何处学佛,遂安置母亲,至河北黄梅山礼拜五祖。

五祖弘忍

五祖弘忍见惠能谈吐甚有根性,不动声色地让他到後院碓米。八个月後有一天,弘忍告诉众弟子说,每一个人写一首偈,谁能悟道,我便传他衣钵。当时人人以为五祖座下第一大弟子神秀必得衣钵,所以也没有人去作这首偈。神秀在这种情况下,一来「责无旁贷」,二来也想让师父看看自己心中的见解,便在三更时候於南廊壁上写下心偈一首:

身是菩提树,心如明镜台;时时勤拂拭,莫使惹尘埃。

第二天五祖弘忍见到了这首偈,把神秀叫到座前询问。并谓:「汝作此偈,见即未到,只到门前,尚未得入...」。要神秀回去再作一偈。过了数天,神秀却作不出来。

千古名诵

有个童子行过碓房,唱诵神秀的偈。惠能闻後,问明缘由,便请童子引至大堂。礼拜之後,惠能说自己也有一首偈,但是他既不识字更不会写字,乃请人代书写下千古名诵:

菩提本非树,明镜亦非台;本来无一物,何处惹尘埃。

此偈一成,众总皆惊。消息传至五祖,了然於心,但恐人损害,遂脱了鞋子当抹布,立刻把这首偈擦掉,并且说「这首也嘛没有悟道」!

第二天,五祖弘忍悄悄来到後院,看到惠能把大石头系在腰上,增加身体的重量来碓米,很是感动,於是和惠能展开一段非常空灵神妙的对话。弘忍问「米熟也未」?惠能曰:「米熟久矣,犹欠筛在」。於是祖以仗击碓三下而去。惠能知祖意,是夜三鼓入室,由祖为说金刚经。当说到「因无所住而生其心」,惠能大悟,於是五祖授衣钵以为信,并且说「衣为争端,止汝勿传...,汝须速去,恐人害汝」。

迷时师度,悟了自度

五祖弘忍亲自送惠能到九江驿,令上船,把 自摇。惠能曰:「请和尚坐,弟子合摇」。祖云:「合是吾渡汝」。惠能云:「迷时师度,悟了自度」。

我曾经在研究所毕业的前夕,因为看了这个故事,有感师恩,在实验室黑板上写下大大的这八个字,表达我心中强烈的情绪。我知道我就要永远告别我的学生生涯,再也没有人度我,我要自己度化自己了。

今天我意料之外地成为许多人的老师。远在接受学校的聘书之前,我其实也已经在外面开过很多课程,做着授业解惑的神圣工作。我的书籍文章,更使我扮演与广大读者之间一种默默的师生关系。每当一个课程的开始,不管面对的是业界的工程师,或是学校的学子,我总是告诉他们,课程是短暂的,课後才是长久的。一个课程就算长达一学期,也只是(只能是)奠定学习者日後自修的基础。

进入社会的人,我想比较能够了解这里面的意义。象牙塔里的学生,即令闻言成理,总似乎不容易感受深刻。於是日复一日,年复一年,看着同学们勤嬉戏而荒精业。我带过好几届学生,大凡转学生、五专插班生、重考生都比较用功些,大概因为他们经历过一些小小的挫折。而他们的努力,很快使他们立於同侪之上。

挫折在人生早些时候到来,谁曰不宜!

谁悟了?

禅宗讲究顿悟,基本上是一种比较「玄」的境界。说是「迷时师度,悟了自度」,其实,除了大德大贤,谁又敢说自己悟了?智慧容或可以顿悟,知识又岂能够如此?谁敢说他对知识「突然都懂了」?所以「悟了自度」的「悟」,在这里我把它解释为「有了扎实的基础」:当你有了足够的基础,你就可以不依靠任何人任何时间任何地点传授您知识。只要有书籍,你随时可以自度。拥有足够的基础,你甚至可以开始另一种更高层次的自度:你开始自己设想问题,自己推敲解答,自己设计验证的方法,并自己判断逻辑有没有破绽。再高明的老师,也没有办法把自己的悟力灌入学生心中;唯有学生自己动念思考,再由老师协助解开关键环节,学生自己才能开悟。

南宗与北宗,顿悟与渐悟

佛法有顿悟,学问可没有。如果有人说,我突然在某一天对 Java 开悟了,对 OO 开悟了,对 MFC 开悟了...,我想那是他刻意(为了炫耀)或非刻意(因为遗忘)地忽略了他所谓的「悟」那一天之前的所有努力。是的,那叫渐悟,不是顿悟。

Inside OLE 一书作者 Kraig Brockschmidt 在他的序里面有这段话:

1993 年一月的某个周日下午,当我正做着与 OLE 全然无关的事情时,我突然获得了所谓的 OLE 涅 状态。所有关於 OLE 的支支节节突然全都归定位。在六个月的模糊心智之後,我突然看清楚了 OLE。

Essential COM 一书作者 Don Box 在他的序里面亦有一段类似的话:

幸运的是有一天(1998 年八月八日),突然像神迹一般,COM 对我变得再明白不过,我终於了解了 COM 的动机。如何把这个 programming model 应用在每天遇到的程式设计问题中,也因此显得再明白不过。

听起来都是顿悟的例子。难道学习 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

迷时师度,悟了自度(时间的边际效应),附VC参考书的更多相关文章

  1. Jackcard类似度和余弦类似度(向量空间模型)的java实现

    版权声明:本文为博主原创文章,地址:http://blog.csdn.net/napoay,转载请留言. 总结Jackcard类似度和余弦类似度. 一.集合的Jackcard类似度 1.1Jackca ...

  2. GPS校时器,GPS时钟装置,NTP网络时间服务器

    GPS校时器,GPS时钟装置,NTP网络时间服务器 GPS校时器,GPS时钟装置,NTP网络时间服务器 GPS校时器,GPS时钟装置,NTP网络时间服务器 GPS校时器,GPS时钟装置,NTP网络时间 ...

  3. 数据可视化之powerBI技巧(二十)采悟:创建度量值,轻松进行分组统计

    上一篇文章中的分组,都是通过新建列的方式实现的,直观上比较容易理解.不过这样都修改了原始数据的结构,如果我们不在源表上进行修改,直接通过度量值的方式来进行分组,是否可以实现呢? 答案当然是肯定的. 采 ...

  4. 文本相似度 余弦值相似度算法 VS L氏编辑距离(动态规划)

    设置n为字符串s的长度.("我是个小仙女") 设置m为字符串t的长度.("我不是个小仙女") 如果n等于0,返回m并退出.如果m等于0,返回n并退出.构造两个向 ...

  5. Uva1660 (点联通度、边联通度问题)

    题意: 给定一个n(n<=50)的无向图,问最小删去几个点,可以使得这个图不连通 解法:   1.  基本概念 (1)一个具有 N 个顶点的图,在去掉任意 K-1 个顶点后 (1<=K&l ...

  6. 采用Asp.Net的Forms身份验证时,非持久Cookie的过期时间会自动扩展

    问题描述 之前没有使用Forms身份验证时,如果在登陆过程中把HttpOnly的Cookie过期时间设为半个小时,总会收到很多用户的抱怨,说登陆一会就过期了. 所以总是会把Cookie过期时间设的长一 ...

  7. TCP释放连接时为什么time_wait状态必须等待2MSL时间

    为什么上图中的A在TIME-WAIT状态必须等待2MSL时间呢? 第一,为了保证A发送的最后一个ACK报文能够到达B.这个ACK报文段有可能丢失,因而使处在LAST-ACK状态的B收不到对已发送的FI ...

  8. 花时三月 终于Spring Boot 微信点餐开源系统! 附源码

    架构 前后端分离:             Nginx与Tomcat的关系在这篇文章,几分钟可以快速了解: https://www.jianshu.com/p/22dcb7ef9172 补充: set ...

  9. 陈莉君教授: 回望踏入Linux内核之旅

    本文系转载,著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作者: 陈莉君 来源: 微信公众号linux阅码场(id: linuxdev) 初次踏入Linux 几多耕耘,几多收获 ...

随机推荐

  1. shell操作文件的几条命令:删除最后一列、删除第一行、diff等

    删除文件第一行: sed '1d' filename 删除文件最后一列: awk '{print $NF}' filename awk删除重复行的命令:awk '{if (!seen[$0]++) { ...

  2. java 静态变量生命周期(类生命周期)

    Static: 加载:java虚拟机在加载类的过程中为静态变量分配内存. 类变量:static变量在内存中只有一个,存放在方法区,属于类变量,被所有实例所共享 销毁:类被卸载时,静态变量被销毁,并释放 ...

  3. comparing-html5-mobile-ui-frameworks

    http://html5hub.com/comparing-html5-mobile-ui-frameworks/

  4. cocos中常用到的单例模式

    单例:即只有一个类对象,且提供全局的访问权限 特点: 1.构造函数私有 2.私有的静态成员指针,标识是否已产生了单例实例 3.提供一个getInstance()方法来获取单例对象 下面已打飞机中的子弹 ...

  5. Ant学习---第二节:Ant添加文件夹和文件夹集的使用

    一.创建 java 项目(Eclipse 中),结构图如下: 1.创建 .java 文件,代码如下: package com.learn.ant; public class HelloWorld { ...

  6. JPA学习---第十节:JPA中的一对一双向关联

    1.创建实体类,代码如下: 代码清单1: package learn.jpa.entity; import javax.persistence.CascadeType; import javax.pe ...

  7. Zclip复制页面内容到剪贴板兼容各浏览器

    Zclip:复制页面内容到剪贴板兼容各浏览器 WEB开发中,要让用户复制页面中的一段代码.URL地址等信息,为了避免用户拖动鼠标再进行右键复制操作而可能出现的差错,我们可以直接在页面中放置一个复制按钮 ...

  8. Windows 7系统下删除开机引导项的方法

    Windows 7系统下删除开机引导项的方法: 1.使用管理员权限运行cmd,在命令行窗口使用  bcdedit 回车 2.查找description为你想删除的段,看对应的标识符是多少, 然后使用 ...

  9. 集成Spring后HibernateTemplate实现分页

    spring 整合 hibernate 时候用的 HibernateTemplate 不支持分页,因此需要自己包装一个类进行分页,具体实现如下...使用spring的hibernateTemplate ...

  10. 我是IT小小鸟,老师我之前上传了!!!!老是请您看到我

    我是IT小小鸟读后感 世界上没有一蹴而就的成功者,只有头悬梁锥刺股的奋斗者.蜉蝣向往大鹏的辉煌,却不曾知大鹏以往的汗水.蜉蝣之所以为蜉蝣,是因为它犹如井底之蛙,目光短浅,之盲目地羡慕成功者,而大鹏之所 ...