一场雨过后,午后阳光慷慨的洒下来,图书馆的空间溢满温暖,还有,春的味道。

半个上午以非常手段完成了《计算机网络》的 6 章作业后,内心已极其疲惫,就像一场长长的火车硬座长夜,一旦结束,想做的,无非就是找一张舒服的床,开一瓶美味的饮料,躺下来看一场轻松娱乐的电影。虽然内心里有一种声音在不断提醒我:“嘿,boy,计算机组成作业已经三次没交啦,数电过几天要补考啦,导师说下周要看你做的怎么样了哦……”。

累,很久没有感到这么累了。累到什么都不想做,想想要是生场大病就好了,这样就什么都不用管,躺在床上专心看书就好了。也不用像现在这样,上午看 Objective-C,下午看 C++ 设计模式,晚上去下载 OpenGL 红宝书,睡觉前还要想着八竿子打不到的时序逻辑电路;明天又要去看 MIPS/ARM,还有拐弯抹角的 LR(1) 语法分析,以及 900 多页的《计算机网络》—— Tanenbaum 可真是能唠叨啊。

我以为我能搞得定,就像大一期末 2 天时间复习完《数学分析》那样,又或者像高三竞赛前夕一天复习完 400 页《基础有机化学》并且还能做几十页的笔记那样,但这次似乎有些不同。想毕业,我得:

  • 4.20 编译原理(考试)、数字电子技术(补考)
  • 4.22 毕业设计中期检查报告
  • 4.24 计算机组成期中考试
  • 5.13 数字电子技术毕业清考(如果补考不通过的话)
  • 5.16 电路原理(甲)I 毕业清考
  • 5.30 毕业设计检查
  • 6.10 毕业设计答辩
  • 6.25–6.31 编译器设计、计算机网络、计算机组成、计算机体系结构考试

编译原理的期中考试混了下,作业用非常手段最后时段补齐了,LL(1)/LR(1) 分析还模棱两可,两天时间希望能搞差不多吧;至于夏学期的编译器设计,8 周,仅仅 8 周,你觉得 8 周来写一个编译器,这个 Project 如何?数字电子技术三进宫,一点没看,我就不明白了,我一个靠 Linux/Script 混饭吃的 Programmer,干嘛非要去学什么狗屁触发器和时序电路?干嘛非要让我去学楼道灯开关的电路设计?我又不是 Steve Wozniak。真的需要了解这方面的知识,一本《编码的奥秘》足矣;电路原理,不是我学不会,永远记住,这个世界上我学不会的课程不多,只是我不想学而已;计算机组成 / 计算机体系结构,MIPS,作为上个世纪 80 年代的恐龙,你还在不停地折磨你的学生,你好意思吗?计算机最重要的设计思想在于抽象、分层,我写我的 C/Python/Bash,至于你 CPU 指令怎么流水怎么冲突,那是 Intel/AMD 工程师的爱好,和我无关。

至于毕业设计,在 Windows 上用 VMware 运行 Mac OS X,里面开 XCode 用 C++ 来封装 Objective-C 代码然后在狗日的慢的要死的 iPhone/iPad Emulator 上测试 Win32-Style 的C++程序,所有的一切让我想起来两个字:山寨。何苦如此呢。不是有 Qt 吗,干嘛要自己重新写一套,Reinvent the Wheel?怕开源,怕别人看到你的代码?可是为什么作为国内顶级学府的浙江大学的计算机学院,要用盗版的 Visual Studio 在盗版的 Windows 上写 “版权保护”的程序呢?

至于 Mac OS X,引用 Linus 的话,“简直是个十足的废物”,除了极致的工业设计,和 Linux 相比,简直一文不值。整个系统,图形界面自成一套,目录结构、命名风格和传统 UNIX 的 FHS 完全不同;软件包管理系统,要么是 Macports,要么是 Homebrew,前者在系统中也是自成一套,往往会造成重复的程序库版本,后者的功能以及资源和众多 Linux 发行版相比相差太多;至于 Mac 产品设计的哲学和风格,我只能说,美观、人性,同时,霸道、专横、跋扈。怎么最大化一个 Finder 或者 Safari 窗口,让它布满全屏?不要告诉我这是苹果的哲学,以及对人性的关怀考虑,我所想到的,就是霸道,专横,自作主张。

至于 XCode,和 VS、Eclipse 相比,简直是处在史前时代:没有代码补全、多窗口设计、无法调整窗口布局;Interface Builder,对于一个初学者来说,用 Interface Builder 拖来拖去,最后到底生成了怎样的代码?不知道——因为 Interface Builder 不生成代码,生成的是一个二进制的 nib 文件,序列化的 Object。什么叫序列化?I don’t know。对于一个拿了 Baidu Offer 的人,尚且不知道什么叫做对象序列化,Interface Builder 的存在,是不是背离了最初“让开发变得简单”的目标,适得其反了?总而言之,我觉得用 Interface Builder 来写程序,就像用 Dreamweaver 来写 HTML 代码一样,甚至比那还糟糕,最起码在 Dreamweaver 里面你还可以看到底层的 HTML 代码,但是在 Interface Builder 里面,你什么都看不到;Objective-C,当所有的类要靠 NS-、CF-等前缀来避免命名冲突,和 C++ 的 namespace 相比,是不是有些原始和不雅观?Why Objective-C?除了一个专横霸道的 Mac,还有永远也不会成熟的 GNUstep,Objective-C 几乎毫无用处。

吐槽归吐槽,连日来的压抑也让我开始明确自己的未来之路:

  • 我不适合搞学术:没有天赋、本科阶段也没有良好的基础。
  • 我讨厌写 Paper:就像我不会为了谈恋爱而谈恋爱一样,我也不会为了写 Paper 而写 Paper。有人说学术研究就是“大牛挖坑,大众灌水”,为了发 Paper 去搞学术,有了 Paper 才能升职,不可否认,在没有找到一个更好的评比办法之前,量化评比就像中国的高考一样,确实是最经济最有效相对最公平的方式了,但是,我不喜欢,也不想去适应。
  • 我讨厌 Deadline:我始终认为好的东西是雕琢出来的。Deadline压身,往往会分散人的精力,给人施加很大的压力,进而又会影响人的发挥。
  • 我讨厌别人在后面催着赶着我去做事:那感觉就像一头牛被鞭子抽着闷头耕地一样。

还有三个月。三个月后,无论能否毕业,我要开始做一个差生。在也不为了一些名头上的东西,强迫自己做自己不喜欢的事情。即便是没有了 Vim/Emacs,没有了 Linux/C++,没有了 TeX,生活也可以是美好和令人期待的。不是吗?