年轻的时候,常常以程序员自诩,涓涓代码流于键盘之下,那是何等的满足!如今已过而立,随着小儿的出生,青涩自负的青春早已作古,现在的我在做什么呢?该做些什么呢?心里的头绪越来越多,终是忍不住上来与大家探讨探讨。
 
回想自己走过来的路程,10几年前,我在扬州城的一所大学里修学机械工程专业。直到大二,与计算机惟一相关的课程是一门《FORTRAN77 程序设计》,学工科的同仁们应该不会对ForTran感到陌生吧!这门苦涩的课程让一个香气袭人的女老师讲得一塌糊涂,然而我似懂非懂的认真学习了一个学期并通过了后来的省二级考试:)后来,我开始迷上了QBASIC,它可以画图,这是我感兴趣的原因。另一个不经意的时间,画法几何老师办了一期AutoCAD与C语言辅导班,抱着对C语言的神往,我报名了,并从此不可收拾的喜欢上了C。兴趣是最大的老师,我要是一头骡子,前面挂着胡萝卜,就算背负着再重的货物,我也愿意一往无前。
 
很难想起,最初接触到C的时候我会干些什么。当时的系科协举行的两届计算机设计大赛,我倒是参加了。第一次的参加大概是96年,准备的是一个DOS下的画图程序,通过该软件可以操作键盘绘制一些简单的图形,并实现图形的保存和读取。搞机械专业都会接触到AutoCAD,当时我对其中的十字光标很是着迷,因此在那次设计赛中弄了个十字光标,也就是通过这个软件,我熟悉了INT中断、异或模式、拖曳作图、文本窗口模式、图形模式、位图保存等等的知识。也是大概那个时候,我迷上了《电脑爱好者》,并发表了《何为中断?》《使用C++完成图形的存取》等文。
 
等第二次参赛的时候,很荣幸的,我已经是系科协主席了,当时找了系学习部长负责会议的主持。参赛的作品是一套窗口界面,后来杨汉玮同学称之为FakeWindows,那已经是97年,Win3.1已经在使用,Win95还没有普及。当时的想法很简单,想利用C++语言构建一套DOS界面下的图形组件库,结果也差不多了,做了一堆组件,包括菜单、文本编辑框、命令按钮、radiobox、checkbox、滚动条,以及定时器。当时学习Win3.1的痕迹很重,包括那个输入框中的光标闪动的频率都是前后比较下来的。通过这些,我熟悉了C++语言,熟悉了鼠标、图形编程,并熟悉了如何在DOS中输入输出汉字。通过项目实践学编程,这也是我多年以来总结出来的一条经验。那些日子是开心的,或者熬夜,或者在梦中想着那些飞舞的代码,让我感觉青春无悔。
 
也是那个时候,我发表了《汉字处理技术》、《中断处理技术》、《鼠标处理技术》等文。有所收获,就与读者们一起分享、一起研讨,既可以享受编程的愉悦,又可以一起提高,何乐而不为呢?
 
我的第一份AutoCAD上机作业是画了一盆花,当时找了个相机拍了张照片,由于屏幕上的东西很不清晰,冲洗店居然认为该胶卷作废没给冲洗!@#$%^不管怎么说,后来洗出照片了,颜色很好看,我寄给了远在安徽农村的老爸老妈,他们估计不明所以,但是很高兴。至于FakeWindows,我也是及时的拍了张照片,如果老家里的那本相册还没有来得及腐蚀的话,那些画面应该还存在。敝帚自珍,当时这些代码我也是用3寸软盘拷贝了好多份,可怜的是,早已不知道那些盘放在哪了!有的时候觉得这是一些遗憾,但是那些项目实作的结果,是让我熟悉了C++,熟悉了类设计,熟悉了继承与多态,这些技能和思路早已深烙在心,何憾之有乎?
 
总而言之,我并非来自正规军,而是一个杂牌子的C++程序员。 本科毕业之后,和一家DVD公司签约之后,意外的发现自己无望的硕士居然考上了……报考的时候为了取巧,还是选择的是机械,之后就读了三年的机械专业的研究生。还好,这个时候我开始使用Visual C++,因此研究生的3年基本上靠VC度过的。其间发表了《轻轻松松C to C++》。
 
VC的应用领域很广,同学做的算法及其界面展示基本上是VC,我和本科毕业的老同学之间的项目合作也是用的VC,其中用的比较多的是socket编程。合作的基本模式是同学去谈项目,我负责开发,他再去实施,之后大家分钱,如此多次。那个时候ASP很火,因此我自学了ASP,一直用Visual InterDev做ASP开发,并设计同学录、个人网站,自得其乐。很多人喜欢把VC和web编程对立起来,但我不这么认为。在一些项目中,我觉得使用HTTP协议更自由一些,因此有些项目都是靠VC实现的客户端与web站点一起搭配完成的。程序员该做什么?我觉得,程序员应该学会给用户一套完整的解决方案,而非固执的坚持是采用C++,还是java。近期的拙作《把脉VC++》中,我一直宣扬着这种观点。
 
谈到java,那已经是2001年之后的事情了。找到的工作在北京,这边的开发语言是java,于是我又开始自学java,当然过程中同事的帮助非常重要。用过C++的人,再学习java很简单。用过ASP的人,再学习JSP也是得心应手,因此我很快就入门了,并开始做了N多J2EE项目。(当然了,弊病也是有的,直到2年后,我才发现我一直在用使用C++的方式用着java。)java的空间很广阔,第三方资源更是丰富,因此我在很多项目中使用java,当然,一些需要高性能计算、客户端人机交互和COM调用的场合,我还是使用着VC。
 
总之,这段开发之路走得很开心,也很酸楚。当年在扬州那所大学的情形常常不能忘记,最清晰的一幕就是我曾经在一间没坐满的机房偷偷上机,被计算机系的老师发现,要驱逐出门,年少的我反问了一句:“后面这么多机器都空着,这不是资源浪费吗?”,这位灵魂工程师回答“对!这就是浪费!这就是最大限度的资源浪费!”,这句话刺伤了我。时过境迁,这位老师是否还在学校任教不得而知,但我希望各位同仁在生活中,待人友善一点,不要太刻薄,不要伤害他人。也就是那以后担任系科协主席的日子里,我竭力为各会员联系系里面的机房,让他们利用周末时间可以多摸几次电脑,多写几行代码。
 
每个人一生中都有几个最好的朋友,我大学阶段的挚友是杨汉玮先生。在我很多的作品(软件、稿件、图书)中,我都提到了他。他是一个比尔盖茨式的人物,之所以这么说,是因为他酷爱电脑,并且中途辍学,一时传为佳话。不同的是结局,比尔发财了,他没有。当时在班上,我是追求上进的优等生,他是常常缺课挂考的混混,但我们常常在一起讨论理想,包括我不懂的无线电,包括他不懂的C语言,以及比尔和艾伦。大二的时候,来自苏北农村的他花了1万元钱买了台486,这台电脑先后陪伴了我的QBASIC、C和C++,当然也包括西木头的《C & C》和大宇的《仙剑》。杨同学是个爱咬文嚼字的人,也是个多情的人。我们那时候很少想到如何去追女生,但是对《仙剑》的爱情演绎能够评论得头头是道。98年毕业的时候,杨同学一次去南京,给我带回来一本老外写的3D游戏设计,其中讲解了一些3D原理以及编程要点,可惜我并没有深入的看下去,当时我看的一本书,是一本貌似盗版的C++外版书,印刷很粗糙,但是内容很深入,并前卫的涉及到C++模板等高级的内容。就是那本书让我知道了编程书还可以例举出一小段一小段得示例代码来写,若干年后,在写《标准C++开发入门与编程实践》之前,我一直想找到那本伟大的书,但是杳无音信,无以临摹,真是太遗憾了!为什么人这一辈子总会制造这些那些的遗憾呢?
 
叹完了前面的路,那么,三十好几的我,以后的路该如何去走呢?
 
 未完待续……