从此以后,我将自己牢牢地拴在了微软的开发平台上,终日沉迷于.NET。与此同时,我还学习了SQL Server数据库。另外,还补习了HTML和少量的JavaScript知识——这些虽然都不是微软技术,但在学习ASP.NET时必不可少。虽然我在接触编程时走上了歧途,对网络世界没有正确认识,可学习.NET必然逃不开ASP.NET,于是我终于深刻理解了什么是Web,以及B/S和C/S架构。
尽管我不爱上课,尽管老师同学都鼓吹Java,但我还是坚持使用.NET完成了几乎所有大的课堂作业和课设。虽然最后成绩不是很理想,但我感觉还是学到了很多东西,而这些也都是我今后工作中很受用的,我感到很知足。
不过当时的后果是可怕的,我差了两个学分,即将背上第二个试读,根据工大的政策,二次试读是要开除学籍的。不过学校在假期里开设了一种特殊的课程,这种课所学的东西并不在统一的课程安排之中,但是可以挣到有效的学分;讲课的人也不是正规的老师,而是勤工俭学的学生,一般是经过学校考核审查过的特困生。上这种课按学分收费,大概一分200块钱的样子;而负责讲课的学生则可以通过自己的劳动得到收入,当然,他们拿到的只是很少的一部分提成,大头儿都被学校抽走了。
我打算选一门与编程关系不是很大的、但又与计算机沾边的课程,而且学分最好恰恰是两分,我可不想浪费钱。看了看课表,还真有这么一门称心如意的课程——Photoshop。就这样,我不得不提前一周结束自己的假期来到学校,为了能留在大学里做最后一搏。其实通过补考也能拿到学分,但是那有一定几率,万一不过的话,就铁定滚蛋了;而这种课是按照学分使了钱的,可以保证必过。
戏剧性的是,第一天上课的时候,负责讲课的同学看到我问,你不是老刘么?我说是啊,你认识我?他说是啊,我们同一个系同一个年级的,我跟你们乐队那个鼓手一个班,从刚上大学时就老看你们演出。其实我们的乐队已经解散了很久了,但没想到还真有粉丝,还记得我。不过此时的我已经对音乐没有什么激情了,也没太多盘道,直入主题腆着脸问人家:哥们儿,那你看这个课……
哥们儿很痛快,说得嘞,你要愿意来就来,不愿意来就拉倒了,我把点名表都给你勾上就行了,回头考试就是交一个PS做的文件,我传给你,你用邮件发给我,这是要存档的,不能直接帮你交。我说行,够仗义,回头一块喝酒。不过这都是场面话,此后我们再也没见过面。不过我谢你,真心实意的感谢,如果你能看到这些的话。
虽然这一次侥幸过关,还遇到了这么一个痛快仗义的粉丝,但我一点愉悦和虚荣都没有。暴增的只有对大学学习生活的憎恶,同时,一个邪恶而刺激的想法慢慢在我脑中形成——离开它,越远越好。
此后的一个学期中,我又接触到了计算机中的另一个热门领域——计算机图形学和图像处理。不过,仅仅是接触而已,我并没有走进去。两方面原因,一是我的计算机性能尤其是显卡性能实在有限,根本无法应付这方面的学习,而我却实在没有财力升级机器了;二是与该领域有关的课程,对我简直是无厘头,直接导致我无法接受该学科,进而引爆了我对大学教育的厌恶,并且使我的邪恶想法变成现实。
首先是选修了计算机图形学的课程,并且坚持上课,认真完成作业,自认为考试必过。期末的时候照例有课程设计,因为性能的缘故,我暂时放弃了.NET,改用回C语言,并且翻出了我尘封已久的窗口库。其实程序很简单,按照老师的要求输入一组参数,在屏幕上绘制一个多边形,并进行填充。当然不能用C语言库里自带的绘图函数,无论是绘制直线还是填充图形,都必须通过自己写代码绘制像素完成。
很快我就写好了程序,并且用几组自己设计的参数进行了测试,自认为万无一失。隔壁宿舍一个哥们也选了这门课,在交课设之前的几天里一直苦苦寻觅别人做好的样本,不知道他如何辗转得知我也选了这门课,并且课设已经做好,于是从我这里拿走了所有的代码。他临走时我不放心地嘱咐道,把变量名都改一改,最好程序结构也变一变。
悠闲地过了几天之后,我自信满满地去老师办公室答辩,恰好他也在。老师先看了他的程序——其实也就是我的程序,然后给了一组数据。不幸发生了,老师的这组数据真是诡异,其实就是在屏幕上绘制一个等腰三角形,但在填充时,当自上至下一行行填充完毕,到右下角一个像素后,会发生“泄漏”,我的程序会越过三角形的边线,继续填充外面的整个屏幕。老师很满意地笑了,很显然,他是对自己的测试数据很满意。然后问我的同学,这是你自己做的吗?同学是个老实巴交的人,红着脸摇摇头说不是。老师又问,那你把这个程序看懂了吗?同学点头。老师说,嗯,看在你很诚实的份上,给你个61吧;这组数据是很容易出问题的,书上给的示例程序有漏洞,你回去最好再好好研究研究书上的公式和这个程序,对你会很有帮助的。
我在边上暗暗松了一口气,心说还好,老师还是很仁义的。于是我接着演示。程序刚一打开老师就微微皱了一下眉,也是,刚看见一个一模一样的,肯定郁闷,心里还得说呢,你们这帮孩子,都一样的东西倒是分开来答辩啊。不幸再一次降临,老师给出了和刚才一样的数据,看来这组数据真是屡试不爽啊。结果不言而喻,一样的问题。老师抬起头问我,这是你自己做的吗?我毫不犹豫甚至略带自豪地说,当然是了。可话一出口,我心头立刻一紧,涌上一种不详的预感。老师说那好,你就在这儿给我调试一下这个程序,不一定弄好,找出问题所在也可以。
我大囧,这时其他等着答辩的同学也纷纷过来围观,大家不约而同地对我的程序界面表示惊奇,有的甚至发出声音地问,咦,这是什么系统?可没有人能对程序中的问题给点线索。为了能出点彩儿,我利用自己的窗口库写了一个很华丽的界面——当然,是相对于其他也使用Turbo C完成的程序而言。但我的窗口库本来就不严谨,不得不和绘图代码纠结在一起,书中的复杂公式再加上一大堆临界条件的判断,简直是一团乱麻,而Turbo C查看代码又很不方便,别说找出问题所在,就是找出核心代码都很麻烦。这时我更加深刻地体会到面向过程编程的劣势和为什么一款优秀的IDE是必不可少的了。此外,这种图形程序也很难调试,在一行一行跟踪代码的时候,根本无法得知屏幕上发生了什么意外。
就在我汗如雨下囧囧有神之时,老师轻蔑地说道,算了,甭调了,料你也调不出来;抄的就是抄的,实话实说又怎样,老师体谅你们,不会太计较的;可你实在是不诚实,没法给你及格分了;你跟刚才那个同学抄的是一个人的吧?
我顿时觉得天旋地转,抄的……抄的一个人的……不诚实……好吧,我只有接受这个现实,默默无语地在其他同学或嘲笑或不可思议的目光中离去。
索性连这门课的考试也不要参加了。我还有另外一门更值得期待的课程——图像处理,这门课也是我下了大工夫的,而且我认为这门课相对还要容易一些,图形学涉及了太多的数学原理,而图像处理则基本上都是固定的数学公式,直接套用即可。到了考试那一天,我还是很欢快地只带了一支水笔就杀向了考场。
在发试卷之前,老师挨个检查我们的学生证并进行登记。查到我这里时,老师那双无神的大眼在纸上扫描了不知道多少次之后,问我,你选这门课了么?名单上没有你啊?“咔嚓!”我坚信我当时听见了闪电的声音,你信么?幸好当时“被雷到”还不是很流行,否则我一定是外焦里嫩那种的。我悻悻地走出考场,灰暗的林荫路上似乎只剩下我一个人,我差点就跪在地上以45度角仰面朝天高呼“苍天啊大地啊”了。
俗话说祸不单行。但俗话没说祸只双至。我还选修了一门课叫“虚拟现实技术”,主要学习的是VRML语言,这应该可以算一种3D脚本吧,通过代码定义一些3D实物和摄像机的位置,然后它的运行时环境可以自己render出3D场景,可以响应鼠标键盘操作,还能跟JavaScript交互。这门课没有考试,只有课设,要求做一个实际的3D场景出来,选题不限。
很多人选择做一个工大校园,为什么呢?因为“坊间”流传着这样一个现成的VRML脚本,就是我们每天生活和蹂躏着的校园。而我的选题是天安门广场,因为在做这个课设的时候,我还没有接受到计算机图形学课设的教训,固执地认为我应该凭自己的实力完成这个作业。为此,我还特地邀请舍友和我一起去天安门广场走了一圈,甚至还通过数地砖大概估算了一下天安门广场的实际尺寸和比例。
制作的过程辛苦而有趣,所有的参数、坐标都要不停地调整,但我还是能够保持愉悦,乐呵呵地对着桌子上的五分钱钢镚儿细心地描绘一个矢量的国徽。写出来的脚本也很有意思,你可以在广场上四处游荡,走到人民英雄纪念碑下面,还可以通过空格键跳上台阶,跟CS似的。在答辩的前一天,我还傻逼呵呵地用《大腕》台词自言自语:你说这得得多少分?我看怎么也得70分吧?70分那是成本,80分起,你还甭嫌多,还不打折;你得研究老师的心理,抄的都能给及格,这自己做的他就不在乎再多给20分;所以我们做课设的口号就是:不求做得好,但求自己做。
结果依然无厘头,几乎所有同学交上去的课设都大同小异,都是工大校园,有的是学校外面的马路上放了几辆汽车,还能走来走去;有的是学校门口门柱上的时钟变成了可以根据系统时间运转的;更有龌龊的在女生宿舍的窗子上放上了半裸的美女贴图。所谓法不责众,虽然明眼人一看就知道这些都是抄的,但总不能都不及格或者都只是将将及格啊,于是这些“作品”普遍得了高分,最少的也有86。而我的天安门广场由于难度系数不高,只得到了象征性的65分。
是时候说拜拜了。
在我到教务处办理退学手续的时候,负责此事的老太太倒很是开明。一脸慈祥地对我说,嗬,有前途,中国的比尔•盖茨啊。我心说,什么年代了,你们Y的就知道一比尔•盖茨啊;再说了,中国出得了比尔•盖茨么?不过为了回报老太太的和蔼,我尽量淡定地说,我不是比尔•盖茨,我只是厌倦了大学的教育而已。