我去过两次美国。第一次是1987~1988年作为访问学者去的,买了一些英文书就回来了。第二次是1990年,当时我已经是北大英语系的讲师。我住在16号楼里一间10平方米的房间里。有一天坐在斗室里,我忽然想,我未来的路将伸向哪儿?二十五岁当讲师,三十多岁当副教授吧?出几本书,换个二室一厅;再熬十年,多写十几本书,升成教授,换个三室一厅。再以后呢?如果我要长命呢?我想北京只有一个地方等我,那就是八宝山。教授之后还当什么呀?后教授?
所以,我想趁年轻看看自己还能干些别的什么,这样就干脆去美国读书了。刚下飞机,我踌躇满志,像当年王启明一样心里喊着:“New York,I am coming!” 但我渐渐觉得我一点优势也没有了。Everybody around me can speak prefect English! 我第一次陷入绝境,怎么办?我当初要是学中文就好了,起码可以靠教他们中文来生存啊。人生每时每刻都会遇到这种情况。当你觉得everything is ready时,你忽然会发现nothing is ready。我当时特别郁闷。
为了看看计算机科学都涵盖什么,我去了一家大书店。我扫过满眼陌生的书,忽然中间有一架书caught my eyes,我觉得计算机就是我能学的东西。为什么?中间那架上有醒目的两个字:“programming languages”。当时我根本不懂什么叫programming,但我可懂什么叫languages!这一瞬间,我感觉到我已经掌握计算机科学的五分之一了。
谈到这里,我想提醒大家,接受过教育的人和还没有完成教育阶段的人的区别之一在于:接受过教育的人会随时把他自己所受的教育的成果积极地应用于生活,变成智慧促他成功。而一个书呆子或一个永不成熟的人才会终生让自己处于学习状态中而非生活状态中,因为他不知道该把学到的东西从什么地方用到什么地方。所以大家从现在起尝试着把任何学到的知识用于生活的细节中去,是最好的人生历练。当你遇到一个问题,Wait a minute! Think about it,把你所有技能都集中在一起看能不能完善地解决这个问题?能解决实际问题的话,说明你离教育目标更近了。如果只把知识作为孤芳自赏的资本的话,那你在教育方面所下的功夫就白搭了。
文学学士是怎样变成电脑硕士的
就凭我对languages的理解和自信,我给纽约州立大学发出申请,要求攻读计算机系硕士学位。但计算机系主任建议我读本科,因为我在北大四年读的都是文科项目,他认为我基础太差。借着一次面谈的机会,我来到学校。我对系主任说,先生,wait a minute,成绩单上看不出我的攻读资格。我今天来是想当面向你陈述一下我想直接读硕士,不想读本科,理由有三个:
Computer最重要的是运行。What’s software? It’s a program. How do you write a program? Using what? Using programming languages! 你再看看我的成绩单,你把重点词批出来,频率出现最多的词是什么?Languages!
从事计算机科学的人一定是有极强逻辑训练的人。顺便说一下,当时我在找计算机书时,想找本最简单的入门。我就抽出一本叫Basics的最基本教材。回去以后看了半夜基本上没看懂。但我被书中设计的流程图深深吸引了。我发现计算机是要玩逻辑的!于是一个语言、一个逻辑,让我增强了自信。 机器可真是一步都离不开人设计的逻辑。你再看看我的背景,作为教师在北大讲坛干了六年,又发表了很多文章,这两点都是逻辑方面严格的practice 啊!一个优秀的老师,会把非常零散的材料通过逻辑加工变成严谨的知识!写文章与写程序在某种意义上没有大差别。写文章开始前要有ideas,通过起承转合成了文章,发表出来你叫它article。而software呢?你要先有input,然后要寻找恰当有效的 data structure,通过数据结构的“起承转合”运行出了output,名异而实同。