我是1987年考入大学的,尽管我学的是“机械”专业,但是从第一学期开始我就“迷”上了程序设计,那时学的是Basic语言。也正是这种浓厚的兴趣使我走上了VC之路。
我记得,在大二那年还参加过Fortran语言选拔赛,但很遗憾,我输的很惨,这给了我很大的打击,继而开始怀疑自己在这方面的能力。
1991年我被分配到一所高校,专门从事基础教学工作。在业余时间里,我开始寻求一种方向,巧的是第二年教研室就购置一台286PC机,从此人变得“疯狂”起来,先后自学了Turbo Pascal、Turbo C语言、FoxBase等。那时纯粹是一种兴趣,不过我学语言有一个习惯,那就是必须用它来做些东西,从用TC做的简单2D绘图软件到用FoxBase做的数据库管理等等。这以后,常用程序去解决一些实际问题,例如《点阵打印机的图形灰度打印》、《图形光标控制技术》、《鼠标中断技术》、《提高图形汉字显示速度》甚至《图形动态定位中的“模糊”技术》等等。
98年1月,我开始用Visual C++(4.X)做硕士课题,这时才发觉自学语言的真正的不易和艰辛。当时,Visual C++图书资源在国内很少见。也正是这种环境导致一些粗制滥造的所谓“指南”与“教程”的出现,我是深受其害,这些书只教如何简单的操作,对于一些稍深入且极为有用的定制却从未提及。不过,有两本书在98年的时候给了比较大的帮助,一本是《Visual C++5.0教程》(宇航出版社,1998年3月),它只有90页却让我明白了VC++能做些什么,另一本是《Visual C++ 4.x入门与提高》(清华大学出版社,1997年9月),它让我明白除了MFC外还有另一种编程方法(Win32 API方式),并从此深刻体会到MFC的精妙之处:通过“应用程序向导”创建的应用程序框架使们不必添加太多的代码就能实现最常用的程序功能,通过“类向导”可以实现消息映射、添加类……。
很快,到了98年底,我的课题也已经完成了。不过在做课题过程中,我还多了一个心眼:凡是自己认为有独到的地方,就整理出来,“顺便”向期刊杂志社投一投。99年3月,《计算机应用》杂志发表了我的一篇文章《VC++控件的汉字及颜色的编程控制》。也正是这篇文章,使我有缘认识了当时青岛出版社的负责人樊老先生,他帮我出了三本关于Visual C++的书籍。不是因为我的水平高,是因为作者难找,不过现在就大不一样了。
快到99年底,我才看见潘爱民的译著《Visual C++ 技术内幕》(第四版),当时这本书给我的震动很大,使我意识到自己的不足。并从此更加深深感到,Visual C++绝不可以速成的,必须在实践中去磨练,并且要选定一个方向。这个体会我曾在一本书的前言中描述过,“学习编程语言的传统方法是……选择好一本关于该语言的标准书加以仔细阅读,边学边用边提高。然而,这种学习方法对VC++语言未必适用……一种全新的方法值得一试,……正如著名小说家金庸先生曾经对这种方法描述的那样:当需要某个主题内容时,你必须大量收集此方面的有关资料并快速有效地加以深入研究;他举了一个例子,在金庸小说中有许多关于药材及医学方面的细致描写,这些内容都是在极短时间内对大量医学资料深入研究的结果,虽然他的临床经验不如医生,但他的理论知识却能略胜一筹。……”。
2000年初的时候,同校的一个教授帮了我,给了我着手研究Visual C++的培训内容(教材)的机会,并在电子工业出版社出版一本《Visual C++实用教程》(2000年8月)。通过“编写”,使我理解了为什么还有许多人在深入研究Win32 API的编程。因为C++的魅力是无人能抗拒的,并且现在的我也越来越喜爱它。这使得我一不小心就转到了Visual C++ .NET中的托管C++方向上。但是C++的内容远比普通的语言要深奥的多,尤其是托管C++。
当我对C++有了比较多的了解之后,才发现原来一直未能理解的MFC程序内部机制一下子懂了许多。
2001年,我又去进修,成了一名在职博士生,但是方向依然不是“计算机”。因为我一直认为“计算机”仅仅是一种工具,在经济时代,由于“利益”的驱动,这个“工具”将会越来越先进。更好地驾驭它,并为自己的研究所用,应该是每一个“非计算机专业”程序爱好者所要达到的目标之一。
2002年3月,天极网给了我一次机会,出了一本《Visual C++ .NET编程实战》。并且在天极网的大力支持下,我成了一名MVP,我很荣幸地得到这个荣誉,它使我有更多的机会了解并掌握Visual C++ .NET的最新技术。我非常感谢天极网!
回顾自己走过的路,我所带给Visual C++初学者的“学习启示”可以有下列几条:
(1) 要对程序设计有浓厚的兴趣,这是学习Visual C++的基础条件。兴趣的高低决定你对它掌握的程度。
(2) 不必遵循先学C++,再学Visual C++的次序。因为它们之间的侧重点有很大的不同,C++着重于C++编程思想的培养,而Visual C++着重于Windows应用。但是,有了C++基础肯定会对学习Visual C++有帮助。
(3) 先找一本比较薄的Visual C++书看看,知道Visual C++能做什么,以及实现的基本过程。
(4) 学习Visual C++一定要在项目中去做,或者说你用Visual C++要做什么。一开始可以选用你看到的应用程序。例如,计算器、记事本、简单图形绘制软件开发等等,甚至比较高级的主题,如OpenGL、DirectX等也都可以,总之你必须用它做事!
(5) 常备一些资料可以帮你走一些捷径以及得到一种规范。例如:
《Visual C++ 技术内幕》(第四版或第五版或第六版)
《Windows程序设计》(第五版)
《C++程序设计》(这种教材到处都是,各有利弊,只要你认为可以就行)
《STL教程和参考手册》(标准模板库的使用将成为一种规范)
《数据结构与算法》(有了这个基础,代码的价值就高了)
《软件工程》(让自己知道软件开发的过程和相关策略)
(6) 常去帮助他人或发表文章,以获取更多的学习机会。
(7) 关注他人的最先成果,以激发自己拚搏的精神。
(8) 通过认证考试,让你获得更成功的回报。例如微软MCSE和MCSD认证考试等。
(9) 当你觉得对MFC比较熟悉了,C++也还可以了,你就经常打开“\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\src\mfc”(Visual C++ 6.0在\Program Files\Microsoft Visual Studio\VC98\MFC\SRC”)中的源代码看看。当然肯定有很多看不懂,没关系,看多了你就不会觉得MFC神秘了。并且,你不久还会发现,www.codeguru.com中的界面(包括控件)定制代码其实与MFC源代码相差没有多少。
好了,就这么多啦!