当我写下标题之后,面对着一张白板,发现不知道要写什么。或许我还没准备好这个主题。一个村上春树式的标题,或许是因为我想表达得蓝调一些,那么就还是写一写,就当是怀旧吧。
记得大学时,同学们都在用VC6写C++程序,而我为了标新,用Cygwin下的vim写,后来干脆在自己的JOY BOOK 3000上安装了一个Fedora 5,用着那个被修改成半透明的Console下的vim,感觉很爽的样子。现在想来,如果一个人写C++不用IDE,那不是装X就是傻X。
大学时,我们的专业课没有Java,不过我买了一本《Java参考大全(第五版)》,自学了一下。看着JDK5的那个不伦不类的泛型,以及一些C++中很平常,但到了JAVA中就不见了的语言机制,之后感觉“这个语言不行啊!”。但到现在已经做了六七年的Java程序员之后觉得:能用Java做的,干嘛要用C++呢?装X么?
要形容当时的我,可以套用一个比较俗套的语法:哥写的不是程序,是装逼。
比业之后进入一家公司工作,这家公司的主要开发语言是Java。因为我在学校没怎么用过Java,所以被认为技术水平不行,安排到SIT组做系统测试了。在这里碰巧又找到了装X的机会——一般人在用Loadrunner做性能测试时,登录的用户名是在Vuser中配置了很多个,然后挨个用的,而我是调用Oracle的OCI接口在数据库中直接查的——明显是有劲没处使了,要是现在我再用Loadrunner,直接用VUser就挺好了——不过装一下也是有收获的,至少学会了99%的Oracle用户都没听说过的OCI接口(连当时我买的《Oracle 9i/10g 参考大全》中都没介绍OCI的)。
后来终于有机会进入了研发团队,做起了SSH框架下的系统。但骨子里的C++情结让我一直在寻找使用C++的机会,最后终于是在公司的手持终端(WinCE的系统)上开发了一个拼图游戏(与终端开发组的一个同事合作开发)。后来合作开发那哥们又把这个程序移植到他的魅族M8(当年的国产神机)上去了,看起来还不错。现在新一代的手持终端都改用Android了,C++已经几乎退出了公司内部开发使用。
在这个拼图游戏的开发中,我还是学到了不少东西:我负责开发游戏的图象处理,完全没有用到任何Win32的控件,直接用DirectDraw画满整个手机屏幕,最开始实现时发生一个有趣的现象——当把方块移动的速度调到很慢时,移动方块时,游戏用户无法做其它操作,原因是整个界面全部在主线程下运行了,当主线程在忙着处理图像时,其它的事件就排上队了。后来竟然在这样一个简单的程序中,我还是写了一个线程池在里面(当时C++11标准还没有颁布,标准库中还没有std::thread,所以这个线程池直接使用了微软的API)——复杂的消息行为放到线程中运行,主线程就可以处理用户的点击事件了。
在做公司的系统时,第一次接触了Ext2。当时做页面经常会痴迷于搞一些无聊的东西,比如:一个panel是不是要有frame?是不是要有border?border要几个像素才好看?在某个地方用到(√5-1)/2这个比例会不会给用户的感觉更好?……当时经常为几个像素,把页面调来调去。说得高级一点就是“如何给客户一个更好的体验?”,不过在用户体验上我还是不入门,怎么做都很丑的样子。
未完,待续……
当我在写程序的时候,我究竟在写些什么?