陈教授是我们编译原理的老师,从上课开始就弥漫着紧张的气氛,这种气氛是课程带来的,NDFA、DFA、词法、语法、语义、语法制导定义…从来也没有想过,这么课对我的职业会有那么大的影响…
我是属于班上玩计算机稍微有点多的,大二自己买了台电脑,在室友的引路下开始学习用Turbo C、Borland C编程序,最让我感兴趣的是在电脑上显示图形,那时Windows 3.1还是可以通过软盘安装的时代,记得Windows 95刚出来的时候十几张软盘漫长的安装过程…看着室友演示turbo c里面图形demo的时候那个震撼啊,了解了画线法、画圆、填充… 当年的VGA显示模式…写程序完成这些似乎带有无限魅力…由于写程序涉及到调试、也学过了汇编,对于IDE的编译链接也有所感知…这些似乎会对这门课程的学习带来一些便利,但最终这么课程的成绩还是证明,我自大了...
陈老师的用的教材是他自己编著的,来源应该比较广,但引用较多的应该Alfrad V Aho和Jeffrey D Ullman的那本《Principles Of Compiler Design》,也就是广为人知的龙书。 所以书中很多的语句带着翻译过来的英语的语法,由于很多描述过去抽象,又加上语言差异,所以对我还是有不少挑战的。
当年的课程考试中总有一些偏实践的题,记得清楚的几个提:
- 就是涉及到链接时候参数顺序的,某种顺序就可以正常链接,换个程序不行,问你为什么
可惜现在年代久远后我也基本忘记了;记得比较清楚的是科学院体系的所有的考研试题中编译原理的部分都是陈教授的功劳。
和陈教授的最大的交集其实是我的爱人,我们一个班,她报名实验室的时候选择了陈教授的实验室,当时在电三边上的科大恒星的实验楼里。科大恒星是科大成立的以软件开发为主的一个企业,软件以出口日本为主,陈教授老早就是负责人,他的办公室、教学区的实验室和公司属于两个区域,他的办公室在教学区的最外侧靠西的一个地方,里面有我们都喜欢用的HP的激光打印机,看着打印机可以把图像、文本打印出来,当年还是感觉挺神奇的。
陈教授每天都很规律,早上很早就到了实验室,教学备案、写书或者处理公司业务,到了晚上我们21:30左右回北区的家。记忆中,他都骑着自行车。和我爱人谈恋爱的时候,我们老喜欢从实验室走去黄山路路口去吃烤羊肉串,在昏暗的灯光中,时常能见到那个熟悉而瘦弱的身影,骑着不太大的自行车,很严肃的从西向东骑着,一如他的治学风格,我们也就很拘谨的扭过头,生怕被他认出来而被训斥...
我进实验的时候,原先在网络中心,因为爱人的关系最后选择了在陈老师这边做毕业设计。跟着恒星的总工刘勇,和我们班的学习委员叶春杨一起。对刘勇的感觉是技术这块应该不错,不过业务感觉很忙,所以也没啥指导,对他们的工作也没啥了解。学校对学士的毕业论文也没啥要求,所以也就在懵懵懂懂间我们就毕业了。爱人跟着张昱老师,我们班的王奎武跟着董兰芳、张翔宇做人脸合成...我们的座位基本是离开陈老师的办公室最远的,所以一般也是最安全的...
爱人读研究生选择了直升博士,由于一直跟着陈教授这边,所以也就选择了陈教授,同期还有9611的陈晖因为4-5分流也一起。陈教授当时研究的主力偏向程序分析、形式语义这一块的,感觉离开我们实践太远了。记得研究生时期选修了他开的一门课-《Foundation of Programming Language》,形式语义、描述语义、操作语义、语法美化...到了工作后,遇到了Stanford毕业的同事Brian,他原来跟的导师就是John Mitchell,我们相对一笑,这玩意太难了...我承认,我不是学习理论的料。 我因为实习的关系,和Intel的原来的校友来自8811的李晓峰有了联系,后来由于Intel想在国内有些学术合作,后来资助了陈老师的实验室做Runtime相关的技术研习,从那时起我们就开始学习Just-in-Time Compilation、Garbage Collection以及各种System level的运行时支持...当年Intel做了个开放源码的Runtime: Open Runtime Platform,用以理解这种技术对CPU和编程语言、应用之间的关系。我毕业后能进入Intel,很大程度上也是得益这些实习的预备和对这个方向上的有所积累。晓峰对Programming Language也非常感兴趣,尤其感兴趣的是Benjamin的那本《Types and Programming Languages》,晓峰是我见过的所有人中既能够理解理论,又能够灵活应用技术的唯一的大拿,我感觉我天然是个工程师,只对解决具体的问题有着浓厚的兴趣,过度抽象在读书和刚工作的时候显然不是我的兴趣。这些方向上的与陈教授就有了不少重合,所以互相之间应该有一些交流。晓峰对计算机如何用语言来提供系统层面的支持,以达到普适和高效有着浓厚的兴趣。当年还和他一起感兴趣的法国的一个牛人的项目Tunes(原来以为,因为年代久远而消失在我的记忆中,但我还是通过只言片语从我遥远的记忆中找出来了...)由于这部分的合作,Intel几乎会每年邀请陈老师来,这都受益于晓峰的努力。但我和他的交流很少... 我于2003年7月毕业,加入了向往已久的Intel中国研究中心,成为了一个Research Scientist,其实对这个职位的认知一无所知,感觉大学和研究生的课程对这个职位也没啥帮助,更多的是靠的我对系统的理解和热爱积累下来的理解,我在做实习期间找到了一本书《Computer System : A Programmer's Perspective》,简称为CSAPP,我对这本书有极大的震撼,感觉我自身对于计算机的理解、认识基本就是这本书的总结,而且比我的总结更深刻。大学课程的设计中普遍存在的问题: - 课程老旧,教科书都很老。90年代后期国家大力引入原版教材,对课程建设应该帮助特别大;
- 课程和实践之间关系微弱,学得不知道怎么用的,要用的不知道要去哪儿学。