实验室几日 - 行者无疆 始于足下 - 行走,思考,在路上
实验室几日
3月底接到学长的电话,说有一个紧急项目需要赶工,大概是需要二十天奋斗。我犹豫再三——编译原理还没有看(到现在也没有看……),很多课也需要补补了,计算机组成和计算机体系结构两门大头更是头疼。岂料第二天导师又给我来了电话。那时候早晨九点,我还在床上睡觉,看到导师的电话,立马醒了过来,连声“是、我去、一定”。就这样,还引来室友一片羡慕——“你们导师还给你电话啊,我导师就没理过我……”。于是周日去实验室开会,导师布置任务。会上导师间接批评了我。想想也是,导师说的也有道理,自己乱搞,到头来还是花拳绣腿。应用才是检验你水平最重要的标准。自己进实验室也大半年了,却始终没有做什么东西出来。一来自己水平不济;二来很多东西尚待熟悉;三来自己课业也不轻松。不过这样下去也不是个事情,人家没有实验室的想办法挤进实验室,自己身在福中不知福,倒真是有点不应该了。
项目大概是这样,在自己开发的一套gui engine的基础上,重新写一套模仿iphone的控件,并写成一套业务逻辑,交给客户。开发环境是VS2008,嵌入式系统用的是基于WINCE的Windows Mobile 6.0。整套老的基础代码大概写了好几年了,有5万多行,实现了一个基本的WINCE应用程序的GUI。以后的发展方向可能是平台的移植,布局管理器的加入和bug的修复。我们这个项目就是在这个代码的基础上临阵磨枪,20天仿出一套iPhone的东西。
所谓“会者不难,难者不会”,对于熟悉这个体系的人来说,改造美工都比较容易;对于新手,初来乍到,恐怕光是熟悉Windows消息循环都要花一定的时间。好在我看过200页的《Windows核心编程》,对于基本原理还是略知一二,加上前人写好的程序框架,在这方面也不用操太多的心。
整个项目组六个人,一个毕业的学长,一个公司的员工,两个大四的刚考上zju研究生的学长,一个大三软工的同学,还有我。不过令我感到十分震惊的是,两位大四的和大三软工的学习,竟然连基本的c++语法、输入输出都有不小的问题。可见,当我们抱怨工作难找的时候,又是否考虑过,自己就竟能为你的雇主带来些什么呢?
自己主要负责文本类型控件的编写。差不多快十天了。其中一天泡了图书馆看《C++标准程序库》,两三天陪陪mm,两三天搞搞课业,剩下几天都在实验室了。最终还算有些成果——虽然以学长的标准,这不算什么。
目前的控件支持Alpha透明、圆角效果、字体颜色、字体背景色、部分支持字体大小、字体排列方式、字体的下划线粗体等效果、位图和png图片的载入。存在的问题主要是字体换行和光标定位。当然,我一个人是做不来这么多工作的。我的工作只是参照原来的老的控件代码,整合一些新的函数接口,提供一个统一易用的控件使用接口而已。不过,说起来容易做起来麻烦。许多参数,字体大小,颜色,alpha值需要自己慢慢调。也曾考虑过设计模式的问题,想设计一个IStyle类,统一管理控件外观,不过这超出了我的能力和职责。Anyway,这个过程还是收获了很多。更加深刻的体会到,把你自己的想法转换成可运行的代码,让你的代码编程漂亮的GUI界面,这样的转换需要多大的能力和精力。否则,MINIGUI也不会耗时十年,才写出3.0。
此时我又想到了Open Source。我相信Open Source never die。我也相信终有一天,所有的软件代码会向数学公式一样,成为程序员通用的语言,而不是藏着掖着。我初步体会到了交流的重要性。事实上,软件开发过程中,闭门造车是一件非常可怕的事情——浪费时间、浪费金钱、浪费生命。Reinvent the wheel,这也是我对这个项目始终提不起兴趣放不开手脚的最大阻碍吧。我还想着,什么时候Qt也能运行在windows mobile平台上,这样我们就不用天天面对着这坨猪肉一般的代码发呆了。
另:可能你会问“为什么你的vs是黑色的?”。其实,google下filetype:vssettings就可以了。设置黑底白字,可以有效的保护眼睛,延长屏幕的使用寿命。另外,visual assist,非常好用的vs插件;viEmu,让vs的编辑器拥有简单的vim的快捷编辑功能,提高工作效率。俗话说,磨刀不误砍柴功,简单的配置,换来的是日后的方便。
Anyway,该做的还是要做。完成这几个控件,写几个页面。然后好好补补课程,一个短学期又要过去了。好快。
“每当一个人走在月亮下的时候,就会想起你的手”。