Category Archives: 大学

我的大学(33):New Beginning

这个博客许久不曾更新了。上回写文章时的我还在为自己本科的毕业设计而纠结,现在的我已经住进了能洗热水澡的研究生宿舍(有这么作对比的 吗?)。按说太长时间不写文章必然会手生,但幸好在这未曾更新博客的半年里还有毕业论文这一浩大的工程为我润笔,所以我现在的文笔一定……更加惨不忍睹 ——因而如果在阅读这篇文章的诸君有在阅读文章的过程中发现这篇文章当中的任何段落中的任何句子由于充满了重复且无意义的文字而使整个句子变得几乎难以阅 读但你却发现明明整个句子提取主干以后可以用非常简洁的一两句话表达清楚的话,那一定是毕业论文对我的锻(cuī)炼(cán),教会了我如何写没有人会 读的文章。

这一年来我常常会觉得,大四以前发生的事情好像都已如上辈子那般遥远。当初的我曾在背包里放着一本谭浩强的《C程序设计》,满怀着憧憬与希望来到交 大,一本正经地参加学生组织和社团的招新面试,混入各个学院的迎新晚会看节目,穿着正装参加辩论赛然后两次惨败给同一个队伍,与朋友们在鸡公煲聚餐然后因 为菜点得太多只好打电话求援,接待某师兄和某大哥来交大游玩结果是我们把他们带到吉姆利得喝着畅饮玩了一下午的三国杀,紧接着又跑去自习教室通宵继续三国 杀……还有赶学院里那各种面向答辩的大作业的时光,参加stolon、hyll、这支队伍这三个为做项目而生的队伍的经历——这些队伍好像没有一个名字是 正常的。从这些经历中我收获了许多,比如Linux是怎么玩的,网站是怎么做的,还有用Java写网页是多么麻烦,Kinect的体感识别有多么不靠谱, 在C++的构造函数里胡乱放东西会多么蛋疼,以及小组合作的分工问题有多么纠结——所以比较正确的做法是,把所有的编程工作都交给雷哥。(Trust me. It’s been tested.)

我一直不知道我该算作理想主义还是近视(好吧,我确实近视 = =),直到大四我才开始真正思考起毕业后的出路。我一直不太能认同某些人对技术本身没有热情却积极准备出国的行为,然而从来没有思考过出国这件事的我后来 竟还是在一根又一根稻草落下后忽然产生了这样的想法,甚至还花了十来张毛爷爷报名了一次托福考试——只是后来真去参加托福考试的时候我已经确认直研了,因 此参加这次前一天晚上我才知道有哪些题型的考试的唯一作用就是鄙视了俞教主。

毕业前曾经在一次和昆仑聊天时,昆仑提到他读到一个人的日志,发现那个人大学期间参加的活动和做过的事,似乎都在切实地发掘和锻炼着自己的能力(相 比起某些存在的唯一意义似乎只是交朋友的社团和学生组织,嗯,这句是我加的),让他一方面感到惭愧,一方面也感到鼓舞;我也提到,现在的中国社会中许多人 心中“成功”的定义似乎只是有钱,而我更相信这样一句话:“Success is best measured by how far you’ve come with the talents you’ve been given.”(据说出自一本叫A Father’s Book of Wisdom的书)

然而对于人类来说,了解自己似乎真不是一件简单的事情。我还不能明确我的talents究竟有哪些。我不知道学术和工业哪条道路更适合我。我曾经尝 试过在微软实习,而学院在本科四年所教导的东西,在我看来,也是较偏向于工业领域的;于是我决定再尝试读研——一方面探索自己对于学术生涯的兴趣,另一方 面则是真心觉得自己懂的东西还是太少,我想要学习更多的东西,更确切地说,我想要学习更多自己真的感兴趣的东西。

所以大四这一年我生活的主旋律忽然从在寝室睡觉和在课堂上看闲书转变成了在实验室看论文和……在寝室睡觉。这一年来我越来越觉得有一种与我习惯的思 维方式所不同的,或许我可以把它称为“科学思维”的思维方式存在。我对这样一个可能根本是自己意淫出来的概念也只有一个抽象得“不可说”的理解,但同人于 野的博客中提到的许多学术著作,或者阿西莫夫的笔下虚构的神奇的心理史学,可以算作这方面的例子。我相信这种思维不止可以用来研究专业领域,还有许多我们 尚未真正理解而只依靠经验和“常识”来认识的事物可以依靠这种思维来提出革命性的思路。但我对这种思维却也不曾得窥门径,这也是我最近一直没有更新博客的 原因之一,我忽然觉得我对很多事物的理解的方式可能还太幼稚(另外还有一个原因是我忽然发现WordPress好丑)。

后来我们便在被雷哥誉为“毫无insight”的校长演讲中毕业了。毕业典礼的那天,巧遇昆仑、西瓜和zmc,于是在一起拍了一张合影;后来西瓜又翻出了四年前我们刚来到上海时在复旦门口的合影——把这两张合影放在一起对比着来看,似乎没变的只有光速和我的姿势。

哦,不对,不变的或许还有马书记每年开学时教导新生们要负责任的演讲。其实对我来说,本科毕业期间的岁月和研究生新学期开学的生活称得上无缝衔接, 几乎没有多大的区别——值得一提的区别或许只有寝室多了可以洗热水澡的地方,以及每天早上和晚上可以看到网上直播的软院研究生会的主要工作——在微博上煲 鸡汤。也许目前为止我重回交大读研究生最大的收获就是由于终于通过了一次交大的英语水平考试,而终于不用再背负英语一辈子没水平的恶名了(虽然这个研究生 的水平考与本科时的那款解谜游戏其实不可相提并论)。

太长时间没有写文章,忽然起念也只能作出这样的一篇滞涩的文字出来。也许最后还是该用一个稍微文艺一点的段落来结尾。十一长假本来有出去玩一玩的打 算,但念及祖国的人口,这一打算就落入了犹豫的沼泽。也许我明天就会忽然决定去苏州转上一圈,但也许我骑车骑到学校门口便改变了想法,不过那时我一定会模 仿王徽之的做法,装酷似地看着天上的云,慢条斯理地说:“乘兴而来,兴尽而返,何必到苏州?”

我的大学(32):古今

宋朝的黄庭坚曾经说过:“士大夫三日不读书,则义理不交于胸中,对镜觉面目可憎,向人亦语言无味。”鄙人远非古人士大夫之类,虽然长时间没读 书,仔细照照镜子也没发现自己更加面目可憎了(咦?我为什么要用“更加”?),但毕竟文笔是不利索了起来。这个博客隔了好久才终于出了上一篇文章,却是短 小无聊,索然无味。一方面是因为俗纷缭绕,以至于刚刚坐下来想要写点悠闲的文字,便有几个箩筐的罪恶感若天花般乱坠;一方面却是太久不读书,以至于腹笥实 在空乏得可怜。所谓文章天成,妙手得之,苟若吾胸无点墨之辈,只得效阮籍之哭,哀风飙道阻,叹舟楫路穷,然后让自己的文章效仿王勃的人一样中道崩殂,其实 却只是东施效颦罢了。

既然上一篇文章未得善终,不妨此处补述我的大学生涯二三事,以资叙事之完整。却说我暑期在学校门口的微软实习,混了三个月,却有幸得到自己的老板赏 识,出言挽留,但是忖度再三,虽然非常感谢我在微软的老板的赏识,但我还是决定了继续在交大读研。一方面是深感自己所学甚少,还是渴望能趁出山前再练会儿 内功;另一方面也是还并不明确自己将来到底会走上什么样的道路,学术界还是工业界,这是个问题。既然雾失楼台,敌情不明,所幸占一进可攻退可守之要地。当 然读研不是说读就读的,即使直升本院研究生还要有一套笔试机试加面试的筛选流程。虽然很久以前就对自己通过这个选拔挺有信心,但等真到了眼前却突然紧张了 起来,以至于整天和雷哥互相感叹好紧张啊怎么办,要挂了怎么办。当然后来毕竟还是成功了。哦对了,我选择的实验室,好像学名叫做Trusted Cloud

好,前尘已矣,接下来我们来说后事(为什么总觉得这句话怪怪的)。我早在《我的大学(23)》中就曾经写道:

当年我在烈阳下亲自迎来的小盆友如今也成了迎新的志愿者,于是又一批新面孔追着各种学哥学姐询问各种白痴问题:“选数学分析还是高等数学好啊?”“学生会和团委哪个好啊?”“应该加入什么社团啊?”

而前一段的某天突然发现某位实验室的师兄早在09年我入学之前就和我有过QQ聊天记录,经他翻看当时的聊天记录,我才发现原来我当初也问过“软院的 课程难不难啊”这种白痴问题。于是更进一步地回想自己当年大一时候的岁月,想起自己当年还一本正经地去参加各种社团和学生组织的面试就想发笑。实验室的另 一位现在研究生一年级的师兄,正在做大一的班主任,他说可以找回一些年轻的感觉——大概就是像那种一本正经地去参加各种社团的学生组织的面试一样的感觉 吧,我猜。

前一段偶然翻到一位软院学弟的日记,其中一篇记述了他们参加英特尔全国软件创新大赛并取得了一等奖的故事,这不禁让我回想起了一年多以前的自己的那 次出征。我曾经说过我要在过去将来时的某天记述帝都的那个秋天的那个蛋疼的故事,但似乎直到现在进行时我还没有把那篇游记补上。不凭借文字的记录,现在的 我还能记得在北京的那几天熬夜搞测试、写文档、改程序的情形,我还记得当时的深夜把疯癫的hyll(我们的队伍名)的笑点降到了无穷低,以至于还没人说笑 话四个人就忽然前仰后合地笑得不能自已,而雷哥在测试结束之后打算把测试文件拷到U盘上的时候打的是”rm -rf xxx”,还问了我一句:“是这样吧?”唉,我就不提再之后雷哥他老人家回去找自己的队友却忘了他们是谁的事情了。但最后当我们取得一等奖的时候感觉却相 当平淡。不像当初听说自己拿了NOIP一等奖之后那般满面春风,也不像发现自己成功保送到了交大的那天晚上激动得睡不着觉(唉,当初真是年轻而又愚蠢啊 = =),感觉只是平淡。

软件学院有一项传统的自娱自乐项目叫做软件展示会。大一参加的时候没有什么感觉(那天走得较早没看到后来成为软院镇院之宝的AEVIOU输入法的 演示),大二那年没举办,而大三刚刚从北京拿奖回来便把获奖的CubeWorld搬上了软件展示会。据后来参观此次软件展示会的董浩亮师兄所述,他看完以 后的感受是,相比此次软件展示会,他们以前的软件展示会都“弱爆了”。然而当时身处庐山的我,却也是同样感到自己的这届软件展示会“弱爆了”。

时隔一年,我再次跑来软件展示会打酱油,并得以见识到许多学弟学妹们开始登上软院的舞台展示他们的作品。身处当时软展的我却突然意识到,自己的心情 恐怕和当年的董浩亮极为相似。当初我们(呃……其实是雷哥)用OpenGL实现的CubeWorld的被人称炫的场景,相比今年那些学弟学妹们用 Unity开发的游戏,就好像拿凤姐和詹妮弗·康纳利比美。虽然仔细一想,那些作品可能也有很多不为人所知的缺点,某些东西也并不像我们所认为的那么炫或 高级。这种感觉的转换,盖当你审视自己的作品时,因为你深知它有怎样的缺点与不足,这些缺点与不足会在你脑海中留下挥之不去的阴影;而在你审视小盆友的作 品时,任何一处超越自己的地方都会让你感到惊艳。只是当这种心境反过来时,只怕就要有问题了。

我常常会感觉到,这个世界是如此颓废。但直到有一天,我到图书馆借书,发现有几个mm借了几本Python的教程走掉了。那一刻我意识到:嗯,这个世界,还是充满了生机啊。

跋:本来觉得这篇文章还是写得太烂了就不好意思发了,后来听了俞教主的鼓励:“想想我的流水文。”我就发了……

我的大学(31):The Dust Settles

When the dust has settled, 这个短语在Dictionary of Idioms中 的解释为:when the present uncertainty, unpleasantness, etc., is over。大四的前夕正是一段充满了uncertainty的时间,尤其是当你的身边集齐了想要出国、读研和工作的各类朋友,向你讲述各种这个方向上的牛 人事迹,即使你本来以为对自己的选择已经十分确信,也难免产生一些动摇。而when the dust has settled,在之前充满了uncertainty的变化就开始成为了人生每日的迭代当中一种新的常态。

如今我已经习惯了这样的常态:听俞教主比较各个公司的员工待遇,讲又有哪些人拿到了哪些公司的offer;听韩总吐槽所谓的IT业三大养老院,然后 再顺带黑一黑我们读研的;看雷哥每天在微博上装小清新和卖萌;而我一边应付乱七八糟的事情,一边听将要去香港成为Dr. Wang的带狗质疑我现在过的真的是大四吗;偶尔还会有别人吐槽几句,我竟然到现在还没有找到妹子。

上一周的时候,我本科生涯的最后一门第一专业的课程结束了。本来我想在这篇日志里写点东西,来回顾和总结一遍我前三年的本科生涯,但现在我又不想写 了。但如果真要写点什么,我想说,我对中国的大学满腹牢骚,但我不后悔我读了大学(但我也不是劝你读大学);如果还要写点什么,我想忏悔下自己的大学生涯 翘课太多,有些课程实在学不到东西与其上课不如睡觉,但并不是所有的课程皆是如此。

还是那句话,写博客这事,闲的时候没东西写,忙的时候没时间写,此事古难全。既然回顾和总结本科生涯的构思中道崩殂了,这篇日志好像只能这般戛然而止了。

我的大学(30):这年夏天

有道是“赤日炎炎似火烧,又是一年暑假到”。话说这日我正在公司里一边盯着屏幕一边拿两个指头敲代码,突然间斜刺里杀出一名彪汉,定睛一看,只 见他:身长八尺,腰大十围,河目海口,燕颔虎头。侧撇两道胡髭,翩翩有若陆小凤;横陈一双虎目,威风好似吕温侯。原来是DHL的快递大哥。只见他看了看我 座位号,又对了对我的名牌,然后叫着我的名字塞给了我一份快递,还没等我反应过来就一个闪身,消失不见了。空留我坐在那里拿着快递的包裹发着呆,直到自己 成功地从编程态切换到日常态,看着纸包上“清华大学”的印章,才反应过来原来是BYVoid的书送来了。

回想起来,当年我和BYVoid在河南省实验中学的逸夫楼机房(江湖上戏称为“逸夫网吧”的地方)里聊天的情景仿佛还在昨日,那时他听说我报了上海 交通大学的软件工程专业,对我说他听说软件工程专业遇到的编程问题和OI的完全不一样。那时的我还完全无法想象OI以外的一个编程世界,如今虽然仍然未能 窥得编程的宏伟世界之全象,却也已经有海阔天空的感觉了。当年我们还都是在OI界打拼的小P孩,如今我却坐在微软的办公楼里接收BYVoid送来的他自己 编著的书籍《Node.js开发指南》。

这本书我曾经在人人网上推荐过,在此不妨再推荐一次。在此书出版之前,我曾有幸成为了此书的审稿人之一,得以提前阅读了这部佳作。虽然BYVoid 同学写作这本书的时候才大二,这本书是他的处女作,然而此书语言上字斟句酌,又不失形象,讲解时深入浅出,理论扎实,结构严谨,所有例子中的程序也都堪称 优雅。一言以蔽之,质量上乘,不但在中国技术类书籍市场中鹤立鸡群,在全世界的同类书籍中也绝对称得上上乘之作。想要了解这只蛋请猛击这里,想要了解下蛋的鸡请猛击这里

好,花开两朵,各表一枝,如今且按下BYVoid童鞋之事不表。却说弹指之间几个月的时光飞逝而过,我才恍然发现自己的这学期竟然已经消失殆尽。而 自己这学期的书读得少得可怜。于是难免地写文章都写不利索,文思枯竭,以至于遣词造句时有若病恹恹的冬蛇,疲软且无力;想用典时却又好像丢了五色笔的江 淹,墨尽而词穷;偶尔想诌两句古诗拽一拽,也只是“欲说还休,欲说还休”,最后只好“却道天凉好个秋”。说书人有句常用语叫“有话则长,无话则短”,如果 我们从这句话的反方向来看,我这学期几乎没什么文字,在《我的大学》系列中的篇幅如此之短,是否说明这学期无话可说呢?

据说林语堂当年写《京华烟云》的时候,写到红玉之死时,曾取帕擦泪曰:“古今至文皆血泪所写成。今流泪,必至文也。”林语堂先生的这番话被广泛传 颂,但是窃以为……林语堂先生其实是没有搞清楚充分条件和必要条件,他的前半句只能表明“血泪”是写成“至文”的必要条件,而非充分条件,所以推理不成 立……所以,从前文“无话则短”的论述也是没有办法推出“短则无话”的。也就是说,(绕了这么半天,)我这学期可以吐槽的事情并不比恒河沙数要少;换一种 通俗的说法,这学期依然很蛋疼……

上回说到我一时头脑发热选了数字媒体与艺术方向,结果陷入了水深火热的渲染真实感世界的计算机图形学战争之中。于是这一学期学习下来的成果是,计算 机图形学课程让我从此再也不想碰OpenGL,游戏程序设计课程让我从此再也不想碰UDK,神奇的是,细数下来没让对什么工具感到恶心的竟然是数字图像处 理课程(因为除了Qt其实没用什么工具?)。数字图像处理这门课还是让我收获很大的,因为它极大地刷新了我的世界观,让我意识到原来对于一个老师来说上课 还可以这么轻松,讲课可以除了这门课程涉及到的重要算法什么都讲(比如花半节课时间讨论怎么检查作业),检查作业还可以临时空降场外人士来帮忙检查……不 过鉴于我猛然想起下学期还有这位老师的课,此处还是戛然而止,避免失言吧。

上回还说到我游走在上海,参加了几家公司的笔试和面试的事情。前面我也数次不小心地提到,我现在在微软实习。在接到微软的offer之前曾经面过腾 讯、eBay。回想起自己面试腾讯的时候因为是处女面(也许你不理解我上一篇《我的大学》中突然出现的神旺大酒店,嗯,现神旺大酒店就是腾讯面试的地 方),说话挺没逻辑的;到eBay面试的时候说话就显得游刃有余了。话说eBay面试我的第一个面试官一开始问了我不少Java的问题,结果我只回答出了 一个其他全是斩钉截铁地“不会”(不过我还会提到,比如说,如果这道题用C的话我就会了),然后面试官看着我的简历问我做过那么多项目都是用的什么语言, 于是我高兴地说C++啊,然后开始问我C++的问题我就开始心里暗爽了啊,这是在刷分啊;然后又问我做一个购物网站大致是什么流程,于是我又暗爽了啊,你 知不知道我每次学习一个Web框架的方法都是先自己实现个购物车的demo啊!后来第二个面试官上来的问题也让我心里暗爽,他让我比较Java和C++的 区别,这个我简直可以写一篇上万字的文章出来啊,让我再把C、Python、Ruby、Clojure什么的一堆东西扯进来来一锅大乱斗都没问题的,可惜 那时候没说多少面试官问了另一个问题结果我蛋疼地忘了接下去扯了……但这还不是最蛋疼的,最蛋疼的是面试快结束的时候面试官冷不丁问了一句:“面向对象的 三要素是什么?”然后我第一遍竟然答错了……那一刻我深深地觉得自己对不起软件学院……

后来我果断被腾讯和eBay默拒了,再后来去参加了微软的面试,微软的面试是让我觉得最对口味的面试,因为面试的大部分时间都用在现场写代码上,这 比许多空谈要实在多了。后来在某个周一的某门选修课上接了一个电话,得知拿到了微软的offer,尘埃落定。然而一周过去以后的那个周一的同一门选修课 上,我又接到了一个电话,通知我去Google面试。后来思考再三,尽管Google也是自己很想去的公司,但因为自己已经接受了微软的offer,还是 拒掉了这次面试。虽然这种事情在不正经的时候可以拿来当作吹嘘的资本,但我内心里是觉得挺可惜的,也对不住现在在Google实习的然师兄的推荐了。

现在我在微软实习了已经将近一个月了。话说微软这边的环境还真是好,平时休息区冰柜里有免费的饮料、牛奶、咖啡、茶和各种零食(甚至还有泡面!)不 说,每天某个时间段阿姨还会端上来一盘子水果。由于我的位子具有得天独厚的地理优势,几乎每次水果都不会落下来。在公司的每层还有一个专门的game room,里面有桌上足球、乒乓球、台球和XBox 360,以及三国杀和按摩椅,于是最近总是习惯下班后在公司食堂吃了晚饭再到game room玩上一会儿再回寝室。啊,难免感到生活还是很惬意的啊……

话说我觉得自己去微软实习真是一件很神奇的事情,因为我在这之前的一年我几乎都是在Linux下编程,已经很少使用Windows;我胡乱学习了许 多种编程语言,还有很多种编程语言虽然我不会但也能够扯上一堆话(也许可以写一篇《如何和别人讨论你不会的编程语言》了),却偏偏C#是我一点点点点都不 了解的;我碰过JSP,PHP,3P里却唯独没碰过ASP。幸好之前在学习不少别的语言和框架时的经验能帮上忙,虽然现在对C#和ASP.NET我还有很 多东西压根不认识,但一边google或msdn一边写程序还是比较轻松的(有多年程序经验的人都知道,写程序总会碰到各种各样无比蛋疼的问题,所以请务 必理解我这里“轻松”绝不是“轻轻松松”,或者“不蛋疼”之类的意思……)。顺便说一句,C#这门语言还是很有意思的,不过限于篇幅,和自己目前的理解都 十分有限,这里还是不过多讲述了。

有位哲人曾经说过:“生命不息,蛋疼不已。”在我的上一篇文章中描述的失于雾的楼台而今已然展现,只是前方还有许多未卜的道路,等待着一个个入刺辉煌的绳命走过。所以本篇的终结语还是脱不出说书人的智慧:“欲知后事如何,且听下回分解。”

我的大学(29):雾失楼台

秦观有一首《踏莎行》的词,它的开头前两句是:“雾失楼台,月迷津渡。”此二句所牵涉的文学技巧,由于本人在一个连汉语言文学二专都没有的学 校待了太久,已经搞不清楚该用哪些专有名词来赏析了,所以请有慧眼者自识之。秦观的这首词据说是在他遭逢贬谪之后所作(为什么在语文课本上出现过的诗词几 乎都能据说是贬谪之后所在 = =),这一背景似乎与我并无可堪共鸣之处,然而其中的迷茫的情绪却依然成功地穿越了时空,与我的脑电波发生了共振。

好吧,上面一段话似乎有装X之嫌。不过我相信比起看一个很久没写博客的家伙,在他新更新的日志中一上来就抱怨最近俗事缠身,不得清闲,或者吐槽自己 的学校跟学院,还是一段类似上面那段话的文字更像话一点(围观群众:你在一开头真的没有吐槽自己的学校吗?)。不过,迷茫之情却并非无病呻吟。因为人生就 好像《三国志12》里的战斗地图,密布了战争迷雾,你只能看到你周围一段距离的情景,而且智力越高看得越远(比比看诸葛亮和兀突骨的视野? = =);远方的楼台则深锁在重重迷雾间,只有当你到达附近的时候,才能看清楚,它上面的标志到底是上海环球金融中心,还是神旺大酒店。

曾经有学长告诉我们,大三下学期是最轻松的一学期,结果呢?我写着写着代码清明的三天假期就过去了。也许是我当初头脑发热选择了数字媒体与艺术这么 一个方向的缘故——这个方向简直是个巨坑啊!以计算机图形学为例,建模也就罢了,还要光照;光照也就罢了,还要材质;材质也就罢了,还要贴图;还要阴影, 还要倒影,还要粒子,还要流体;这也罢了,还有不少人不满足于OpenGL或者DX本身的光照模型,还要自己写shader,还要GPU编程……还有什么 HDR什么乱七八糟的名词。我能说其实这里面一些东西整出来的效果我根本就看不出区别吗?国外那帮搞3D游戏的人都是疯子吗?!

西晋的名将羊祜曾经说过:“软院大作业,恒十居七八。”(后来被误传做“人生不如意,恒十居七八。”)南宋诗人宋岳也曾经题诗,单赞软院大作业之事 说:“大作业事常八九,可以秒杀无二三。”(后来也被误传做“不如意事常八九,可与语人无二三。”)不过说实话,与其大学四年天天坐在电脑前看美剧养老, 我还是更愿意做上那么些大作业,即使它们没让我对这门课多多少理解,至少也让我对代码的理解和掌握深入了许多——尽管几乎所有的大作业检查都不看你的代 码。此外,尽管每个大作业都没有非常深入地探究过什么,至少它们让我把从CLI到Web到GUI,从应用到网络到编译器到操作系统,各式各样的程序都写上 了一遍或者几遍,我认为这也是非常有帮助的(话说,我这么一个经常吐槽软院的人突然写这么一段话会被当做卧底吗?)。只是某天在上科技史课,听钮老师讲开 普勒推算开普勒第一、第二定理的过程的时候,突然发现,自己很久没有像高中时候那样拿起笔来,十分入迷地推算一些公式,研究一些算法了。这让我这个高中时 代的数学课代表(虽然后来被老师撤了)突然间感到一阵失落,与十分遗憾。我希望有一天,能够恢复那些绞尽脑汁,去不断向某个问题发起挑战的岁月。

最近参加了几家公司的笔试和面试。游走在浮躁的上海,有时我会去比较现在的自己,与三年前那个刚刚踏入大学的自己。身高好像没长过,不过肉似乎是掉 过几斤。当然最 主要的不同还是在对程序的理解上,大学前的我无法想象OI风格以外程序的存在,而今我已经可以侃侃而谈地比较(忽悠)面向对象的编程与函数式编程的区别, 也开始思考自己开发某些特定的工具来帮助自己写程序,我甚至还写过加起来已经有万把来字的文档……这些事实是三年前那个每天和同学一起感慨一遍“前途渺 茫”的我怎样也无法预知的,如今已成了眼前的楼台。

只是未知后事如何,且听下回分解。

我的大学(28):千坑万雨

似乎又是有一阵子没有更新这个博客了。没办法,忙的时候没时间写,闲的时候没东西写,此事古难全。《我的大学》系列的上一篇日志是《写在末日 的边上》,本来是该记述期末那段时间的大学生涯的,不料却成了一篇胡言乱语,这似乎也是我最近写的《我的大学》系列文章的一个共通之处(不过其实有些太胡 扯的文章在发表之前我主动把“我的大学”四个字去掉了……)。即使而今再想补述,怕也是亡羊补牢,记忆不靠谱了。如果一段时间里发生的故事已经不存在于任 何人的记忆中了,那么这段时间是否还有什么意义呢?

古人有诗说是“学逼人来不自由,项目作业势难收”。开学总是一大波忙乱的事情接踵而来,这些事情,写成乐府民歌的话就是,“东市开个会,西市上个 课,南市填个表,北市答个辩”;摊上上海现在这种天气,更是天天“渺万里层云,千坑万雨,只影上学去”。于是吴承恩曰:“一叶浮萍归大海,人生何处不坑 爹!”于是李清照曰:“怎一个惨字了得!”

这学期的大作业又有不少需要组队的。当初刚刚组队开始搞MeeGo那个项目的时候,颇有一番雄心壮志,觉得既然组员都是很厉害的人物,就应该做出来 一件很厉害的东西。结果仅仅思考我们要做什么就讨论了几周,也毫无结果。这件事让我后来想明白一个道理,是先有的创意再有的组员,而不是相反。

软件学院很多大作业都是组队项目,可能是为了锻炼合作开发能力的缘故。这种作业方式我刚开始还觉得挺给力,可是后来渐渐觉得有些不爽。本来大作业就 应该是锻炼学生能力的手段,可是分工合作,每个人就很难获得和自己合作的人所做的那部分的知识和经验(遑论还有很多跟着混的情况),以我为例的话,我至今 GUI以及网页前端编程能力低下,即使有有可能存在的天生不擅长此事的因素影响,几乎未经锻炼想必还是最主要的原因。然而毕竟一个合作的项目的好坏意味着 所有组员的课程成绩,这就导致让擅长的人做擅长的事,比锻炼不擅长的人更加重要。

此外,合作还意味着妥协。对于我相信的东西,我会尽量去说服他人,然而无论结果如何,总有人要做出妥协。如果从“理越辩越明”的角度来看,这也许是 件好事,但牵扯到技术的事情则往往不是那么简单。比如如果我想用某种编程语言来做某次大作业,但是我的组员们并不了解这门语言,那么我也只能随波逐流;再 比如如果我想在某次大作业中尝试某种新的技术,但这种技术是我自己也不熟悉的,我无法保证做出这种尝试以后会有积极的效果,那么为了全体组员的成绩,也只 能放弃这场“华丽的冒险”。也许有人会说,这就是现在的IT行业的普遍现象,但是毕竟作业不是工程啊!“练功”和“比武”必须是两回事。

还记得高三保送以前我每天都要跟几位同学感叹一遍“前途渺茫”,如今的大学三年级也颇有这样的味道。不像雷哥从两岁起就知道自己将来要去的是嵌入式 方向,我在上一学期选方向之前曾踌躇了许久。跟着杨老师、肖老师去北京转悠的时候还觉得自己肯定不会选择数字媒体和艺术这个方向,结果现在我已经成了这个 方向的学生。而今站在本科毕业的十字路口,匆匆的时间又会把我推向何处呢?且听下回分解。

我的大学(27):写在末日的边上

我们都好引用孔子在川上曰的一句话:“逝者如斯夫,不舍昼夜。”这不,前面我们刚考完编译原理,一转眼这就2012了。话说此时距离孔子发出他 那句著名感叹不知道已经有二千几百年了,那位当年说“未知生,焉知死”的那个“丧家犬”现在早已成了死透了的至圣先师,估计如果教他现在说些什么,如果他 还能说话的话,说的该是“既知死,犹不知生”吧?所以面对这种情境似乎有两种态度,一是既然终究要知道“死”,不如趁现在好好研究“生”;另一种是既然怎 么着都研究不出来“生”,那还不如研究毛线好了。

列位看官!不好意思,前面我扯偏了。这篇日志的本来目的是在这个特殊的时节,谈一谈已然一头扎死到历史的尘埃中去的2011,以及那个久负盛名、如 今终于“犹抱琵琶半遮面”地登场的2012。所以前面的开头的本来目的是从用第二句话同时“花开”这前面所提到的“两朵”,然后用串行的方式“各表一 枝”。可惜一不小心我的键盘就滑了一下,我的膝盖好像也顺便中了一箭。其实我似乎一直不太擅长写一篇条理清晰、逻辑顺利的文章的,这个是我从我这学期n次 做答辩和presentation的经历,以及写某些稍显严肃的文章的时候的体会中得出的。不过写文章做不到“浑然天成”似乎也不是太大的问题,也许我还 有一个努力的方向是“离题万里”,“浑然天成”。

嗯,上面那么一段话看起来似乎有废话和再度偏题的嫌疑,不过仔细掂量下可以发现,这也是我在逝去的2011年所得的诸多体会之一,所以目前还可以说 是按计划进行。昨天(仍是2011年的时候)和前天就看到有不少人在写2011年的总结,当时我就在想,这2011可是还没断气呢!所以我忍到了这个时候 才开始写2011年的总结(真的不是因为当时在预习编译原理吗?)。

前一段校内上流传这么一段话:“一花一世界,一叶一菩提。一天一本书,一周一学期。”我读到这句话的时候真想拍案叫绝,不过桌子实在是太乱了,如果 真的拍了我电脑旁边堆的那一摞才翻过和正要翻的书估计就要塌掉了。这句话真的挺形象的,不过和我们学院的真实情况还是有蛮大的差距,因为我们除了期末考试 还有各种照着你的膝盖上射箭的大作业。我猜想,如果教我现在谈起当初调MINIX调度器,写DSDV算法,还有写编译大作业的三地址代码生成部分和面向对 象大作业的某个usecase的代码时候的情景,会不会有种谈起“哥当年军训的时候”的感觉?

我觉得2011年这一年的软院生涯还是让我学到了不少东西的。但是每当我思考到底是什么让我学会了什么的时候,我却会有点茫然。比如说我似乎是从大 二下学期的软件工程课程大作业中学会了点Struts,还有些JavaScript,但是这些好像都不是那门课所教授的内容。再比如说我在这一年刚刚开始 使用Linux,而我使用的第一个Linux似乎是MeeGo,使用后者是为了参加Intel的一个比赛,可是可以说参加那次比赛的经历教会了我使用 Linux吗?好像不是的,似乎是因为后来我给自己的电脑安装了Fedora然后这么一路折腾出来的。那么从参加那次比赛的经历中我到底学到了什么?我还 真不知道怎么回答。再比如说我通过大三上学期的编译原理课程大作业里学到了什么?词法分析和语法分析部分似乎只学会了怎么使用JavaCC这个工具,而后 来的第二次大作业类型检查和三地址代码的内容我手工实现了三地址代码的生成,不过这部分我似乎没用到什么课本中的知识,就那么自己写着来实现,实现得并不 美观,而实现之后我也不知道美观的写法应该是什么样子,我依然不清楚我从其中学到了什么。

其实我根本没有想明白的还有一个问题,那就是怎样才叫学到了什么。比如我学会了使用JavaCC这种工具,但这又算学到了什么?又比如说,大二下学 期的软件测试课程,可以说我学会了(至少当时学会了)使用WinRunner这个软件对Win7自带的计算器进行一些测试,so what?雷哥常用句式里有一种“不就是XXX吗”,比如说你和他讨论“解析HTML”这么一个话题,他会说:“不就是给你一句话让你生成一些图形吗?” 或者给他看一些很炫的GUI程序,他会说:“不就是一些调用现成库的逻辑吗?”(不是原话,意思应该相差不大)每次碰到这种情况我会发现我还真不知道怎么 回答,而且说实话我还真觉得他说的是那么回事,所以我每次的回答都是“是”。当然雷哥好像并不是达到了那种视红颜如尘土、视算法以外的一切如民工活的境 界,因为我记得当初问他老人家实现shell是不是就是调用各种系统调用的时候他告诉我怎么设计这个程序的逻辑什么的也是挺难的。不过这是题外话了。

我还记得大二下学期的时候,虽然我在软件工程概论课程上做课堂演示的时候是很自信的样子(当然当时我也确实很自信,虽然现在越来越能感觉到当初那次 大作业我们的作品里有很多糟糕的东西,但是我对那个时候我们做出那样的作品依然感觉很自豪),但是其实那一段我一直有种沮丧感的。我记得当时我是这么想 的,一个人比另一个人强分为两种:一种是我比你多看了一些东西;一种是我就是比你厉害。当时的我相信我自己是比某些人(泛指)强的,但这种“强”似乎仅仅 是因为我比他们多看了一些东西罢了。换言之,如果他们也看了这些东西那么我们就没有任何差距了(毕竟在这个现实世界里阿基里斯还是可以追得上乌龟的)。我 现在会使用WinRunner对Win7自带的计算器进行测试,你现在不会,但这又如何?我现在会使用Struts,你现在不会,但这又如何?

我们前面讨论的我没想明白的问题又是一个让我非常沮丧的事情,虽然貌似在过去的2011一年里我学了很多东西,至少我可以列出来一大堆新学了的东 西,但我却很少能说出来我学到了什么东西。戴着这些轻飘飘的名词,就好象表面上看来你坐在帝王的位子上,但你旁边却站着伊尹、霍光或者曹操。不过也许我之 前对一个人比另一个人强的情形划分还是太过简单,毕竟“我比你多看了一些东西”还包含别的情形,比如说“我比你多看了几十年的东西”——换言之,至少你还 是可以比别人多学一些东西,而这些东西他可能要很久才能赶上。这似乎又是一个“术业有专攻”的范畴的问题了,只是在做过对于一个大三学生来说貌似也不算少 的项目以后,我却还没有想清楚我将来到底想在这茫茫代码地,钻到哪个坑里去。

Continue reading

我的大学(26):MINIX,强迫型人格障碍,自由主义,怀疑论和标题党

最近一段时间来我的大脑调度器被多进程折腾得几近崩溃,以至于连liyaos.com域名过期了都没发现(感谢sqybi童 鞋的提醒),一直过期上10天才屁颠屁颠地赶在断网前把银子交给域名商,这才宣告本网站的复活。一个多星期以前,我人生中第一次来到帝都,游历了 MSRA、北京交通大学、天安门以及国家会议中心等地,品尝了北京本地的北京烤鸭,顺便拿了个第四届英特尔杯全国大学生软件创新大赛一等奖。这一部分的经 历我将在预留篇目《我的大学(25)》里记录。

甫从帝都回到魔都,操作系统大作业便率领着编译大作业、编译小作业、计算机网络实验、计算机网络作业等豪华阵容迎接我们,盛情所至,实教我应接不 暇。盛情难却之下,只好睡上一觉就开始搞JavaCC和MINIX。你们知道写MINIX调度器的最大问题是什么吗?那就是你思考的时候要用的是一个弱爆 了的人类大脑调度器。写MINIX调度器的过程大约是这样的,改几行代码,重新编译安装,趁着这点时间去看看JavaCC的知识或者看看网页什么的,然 后……然后你就忘了你之前写MINIX调度器的时候改了什么了。我就是在这种状态下编译了至少有100个版本的MINIX,顺便在编译安装的时候翻完了一 本武侠小说。

且先不说大作业这种煞风景的事情了吧。前一段在考据癖的博客上看到一篇文章《颤抖吧,强迫型人格障碍!》。很久以前听过一个叫做“强迫症”的词语,所以一直以为自己有点强迫症;而考据癖的这篇文章里有这么一段非常形象的陈述:

强迫症和强迫型人格障碍的症状区别有:强迫症患者知道自己这么做是不对的,无意义的(我为什么老想这些恐怖的事啊)。而强迫型人格障碍人群则认为自己的行为是正确的(没按序号排好是件多么天理难容的事情),还可以列举出很多理由来证明自己的理性。强迫症患者会为自己无法控制自身做出无意义的行为而感到困扰(我又想了/做了不该想/做的事),而强迫型人格障碍则以此为乐(啊哈哈哈终于排好顺序了看着顺眼多了)。 强迫症患者只会强迫自己的行为,而强迫型人格障碍会同时以自己的高标准严格要求别人(喂,你这里没对齐),因此会在一定程度上影响到人际交往。

所以读完以后我大概觉得自己不是强迫症,而是有些强迫型人格障碍了。但是这样的判别标准就带来了一个问题,首先是:既然强迫型人格障碍是一种障碍, 那么如何克服这种障碍呢?考据癖的文章里没有提到这一点,于是我就开始思考了。因为我觉得自己就有些强迫型人格障碍,所以很快我就碰到了这样一个问题,我 为什么要让自己改掉这种他们称为“强迫型人格障碍”的人格?我们有个词语叫做“完美主义”,有时候对细节的重视对全局来说也是至关重要的,换言之,这种 “主义”也好,“障碍”也好,不是绝对的对却也不是绝对的恶,那么我为什么要丢弃它?

这就使我开始反思我们最早碰到的问题,这个问题的前半截是“强迫型人格障碍是一种障碍”。但是,为什么它是一种障碍?在上面所引用的考据癖那一段文 章里最后一句提到,“因此会在一定程度上影响到人际交往”,这也许算是一种坏处的判断,但是,难道真有在人际交往中通方咸宜的人格吗?我不这么认为。那 么,是谁、又凭什么有权力去判断一种人格有障碍?

想到这里,其实我还为那些判定这种人格有障碍的人们想到了一种秒杀我这么多辩论的策略,那就是抛出我引的考据癖的那段文字里的最开始几句话:“强迫 症患者知道自己这么做是不对的,无意义的。而强迫型人格障碍人群则认为自己的行为是正确的,还可以列举出很多理由来证明自己的理性。”我不正在做后面所说 的这种事情吗?如此说来我可真是“强迫型人格障碍”了!既然如此,就根本无须与我辩论了,因为我已经不可理喻了!

这不恰似精神病患者的困局吗?一但你被别人认定为精神病了,那么你的一切辩驳,无论理性与否,都变得无用。这个问题的另一个层面是,一但你被别人认定为异端了,那么你的辩驳,无论理性与否,都将是个悲剧。这不是一个正常的社会所应有的现象。

我最近在读一本名叫《自由的所以然》的书(提前说清楚,读这本书是因为作业要求!),这本书是研究严复对John S. Mill的On Liberty一书的翻译《群己权界论》。严复的翻译以及这本《自由的所以然》的作者黄克武先生的研究姑且先不说(因为这些是我的作业要做的 事……),John S. Mill的一些观点倒是深深打动了我。譬如说下面这段:

If all mankind minus one, were of one opinion, mankind would be no more justified in silencing that one person, than he, if he had the power, would be justified in silencing mankind.

容我斗胆简而言之的话,这段话的意思是,全人类打压单独一个唯一的“异端”,相比这个“异端”凭借某些力量或权力打压全人类,前者并不比后者更正当。John Mill这样的观点非常符合我的思想,而黄克武先生有一段对Mill先生观点的总结是这样说的:

对他而言,人类的生活非常复杂,真理不是单一的,也不是先验的,所以他强调,世界上没有所谓的最终的真理;换言之,人类往往只能针对某些特定的课题,得到一些暂时性的解决方案,而以开放的心胸相互沟通,彼此容忍,是获得这些解决方案的较佳方式。

我们经常说,“真理往往掌握在少数人的手中”。这句话本身是十分先验的,没有严格的证明,也不太好从逻辑上推理(我不懂什么哥德尔定理,但是也许死 理性派们可以考虑试试)。然而我们都无法否认这样的情况,这个世界的真理真的掌握在少数人,或者说“异端”手中。传说当神谕宣示所宣告苏格拉底是人类中最 聪明的人的时候,苏格拉底说,他只知道一件事情,便是他一无所知;而我也相信对于全人类而言,如果说他们能够确信地知道什么事情的话,那也只有一件事情, 那就是他们什么都不知道(我们别讨论这句话可能存在递归调用的问题好吗……)。

竟然就这么说到怀疑主义的思想上来了,不过既然已经说到了这里,不妨再引用一段话对它稍作深入。周国平先生的《无用之学》一书里曾谈到另一位Mill以前的英国哲学家David Hume的观点,书中这样说:

他不但否认因果之间有必然联系,而且否认任何因果关系的存在。他的观点可以归结为两点:第一,我们的感官只能感知个别的事 实,并不能感知事实之间有没有因果关系。仅仅由于某些事实经常集合在一起先后或同时被我们感知,我们便推断它们之间有因果关系。所以,所谓因果关系只不过 是我们的习惯性联想,至于实际上是否存在,我们永远也无法知道。第二,所谓因果关系是一事实必然导致另一事实的关系,可是,观察和实验是有限的,不管我们 多少次看到两个事实同时或相继出现,我们也不能据此断定它们永远如此。

这些让我联想起曾听说过的,据说是奥地利的政治学家和经济学家Friedrich Hayek说过的一句话:“自由的精神就是对自己是否正确不是很有把握的精神。”一方面,自由本来就应当是人类的追求(尽管自由不是一个天生的概念,它是 我们造出来的;像“天赋人权、自由平等”这类的概念都只是我们人类自己造出来的罢了,但这丝毫不妨碍我们对它们的追求);另一方面,人类的智识本来就是不 可靠的,在这种情况下,谁又有权力去做裁判呢? “No one’s opinions deserve the name of knowledge.”

当然,Mill在On Liberty中也提到,在日常生活中,我们必须假设我们的观点是正确的(”We may, and must, assume our opinion to be true for the guidance of our own conduct”),另一方面,自由也必须是有界的,以避免践踏他人的自由(然而这个每个人的自由领域则应该尽可能地大)。我提到这些只是为了表明 Mill的On Liberty一书中逻辑是十分完整、严密的,为了避免他人因为我的这些说法而对Mill的观点或者自由主义有所误读我不得不也提及这些情况,但这个概括 明显难以完整,如果想要窥其全象则还应当读一读Mill先生原版的不刊之论。

比较了解我的人可能知道我是一个怀疑论者,有的人可能也感受到我较有自由主义的倾向。以上是我自己支持自己的思想的浅薄思考。话说,你们不会把这篇文章读完还觉得这是一个强迫型人格障碍者的申辩吧……

PS:其实我不大会区分怀疑论和不可知论两个名词的,因为这两个名词的内容看上去我都自觉有点像的,一个人应该可以同时是怀疑论者和不可知论者吧?

我的大学(24):此处无题胜有题

如果把本科生三年级比作三级主基地的话,那么在二本升三本以后要做的第一件事应该是升级科技:大作业狂热。十一假期以前我还很傻很天真地在虾米 上分享音乐Wake Me Up When September Ends,计划着怎么在一个长假里把混乱的作息和生物钟给正常化,结果是昏头昏脑地把各类大作业做得差不多了以后,觉得终于可以放松一下的时候,已经没有 什么国庆假期了。

国庆长假结束以后的周六和周日,这个据说很多学校拿来上周四、周五的课的时间里,我们学校上的却是周一和周二的。你们知道最巧的是什么吗?那就是我 一周里课数最多的日子,排名第一是周一,其次是周二。在正常的日子里,我上完周一和周二的课程就会迎来一个几乎没有课的周三,有些课的周四,和一个真的没 有课的周五,完美的作息曲线;而十一长假的结果是,当我痛苦地熬过一个周一和周二以后,蓦然发现接下来还是周一和周二。

十一长假结束后的一个星期里,终于体会到了上学期JBoss的关于“很多大作业”的言论果然不虚。面向对象分析与设计、编译原理、操作系统、计算机 网络,外加修的一门历史课要求一个月之内读完一本书并写一篇读书报告(这个作业很有趣的,简而言之是一个外国人写了一本书A,一个中国人翻译了这本书B, 又一个中国人研究了A和B写了一本评论B的书C,我们的作业就是研究并评论这本C……),以及什么所谓的Intel杯软件创新大赛,相比这些事,还有些其 他的像什么通识课作业和计算机网络实验这类的我都懒得提了。

说起那什么Intel杯软件创新大赛,这个从今年暑假开始的东西,终于在几轮折腾以后得知我们小组有幸地进入了决赛。可惜进了决赛也才从三等奖算 起,而三等奖只有2000块钱,小组四个人分赃以后怎么想也不够塞牙缝的。不过一件好事是终于有机会去传说中的帝都转一圈了,在这个时空里我可是还没去过 帝都的,不知道有没有机会一睹正宗的烤鸭的风采。

昨天晚上去软院做计算机网络实验,到的时候老师还没到,于是便又在软院里转了一圈。如果说学计算机的和学其他专业的人是在两个不同的世界里,那么在 软院似乎看不出来这一点。上学期院庆时候的展板还在,这些本来最应该能体现软院特色的展板上,每个的标题都是“十年树木,百年树人”——如果说这句话能体 现任何学计算机者的哲学观的话,那恐怕只有“可移植性”这一条。这样的展板用来做任何学院的院庆展板恐怕都可以吧,都是标题谁都知道,内容谁都看不懂。

当然软院老师教育我们做软件最要考虑的是用户需求,这些展板不是给我们看的而是给别的人比如领导之类看的。我在另一篇《我的大学》系列文章里曾经吐 槽过所谓的软院院庆,并意淫了一番如果让我来办院庆会是什么样子,显然那时的我也没想明白所谓的用户需求。我以为计算机相关的专业都应该是产出黑客的地方 (此处黑客的意义请参照Paul Graham的《黑客与画家》里的意义),这里最常见的不应该是开会,而应该是电影《社交网络》里出现的写10行代码喝一杯啤酒类似的竞赛,显然我错了。 这里不在乎你写不写得好代码,你要搞清楚用户需求。

不多扯这些东西了,毕竟我JavaCC还没看明白,MINIX还各种不懂,那本要写读书报告的书才看了不到一半,而过几天又要上京。如果说最近的经历教我学会了什么的话,那就是在面对堆积如九仞之山的各类知识的时候,不要忘记自己弱爆了,但也不要忘了自己正在取得进步。

我的大学(23):昨日之日不可留

许久未做《我的大学》文章,并不是因为这些时间我的大学无甚可记之处。我一直想为上学期的软件工程概论大作业写一篇文章,我还想为进入大学两年 以来(或许再加上高中的三年)的许多在编程上的滚打与感悟做一些沉思,此外还有许多连我自己都已经遗忘了的构思,可惜这些想法在我的草稿箱里存了许久,也 未能实现。有些想法太重,生命却又太轻。

短暂的假期稍纵即逝,而还在没心没肺地度日子的混蛋已经大三。当年我在烈阳下亲自迎来的小盆友如今也成了迎新的志愿者,于是又一批新面孔追着各种学 哥学姐询问各种白痴问题:“选数学分析还是高等数学好啊?”“学生会和团委哪个好啊?”“应该加入什么社团啊?”我也曾经在迎新的时候满怀各种兴奋与热 情。但终有一天大家都会发现,没有谁为谁选择一条道路,我们都在各自的道路上越走越远。

写这篇文章之前,刚刚写完许诺果壳的一篇稿子,然后发现时间已经跨越过零点。“弃我去者,昨日之日不可留”。李白的此句堪称妙笔,他的下一句同理。