我的天堂,我的地狱!
如果你爱一个人,那末你让他学习Visual C++,因为它是天堂!
如果你恨一个人,那末你让他学习Visual C++,因为它是地狱!
----------------------------------------------------------------------------------------------
作为C++忠实的追随者,你为什么选择Visual C++,而不是C++ Builder?
首先,从它们的应用程序框架(Application Frame)进行比较。Visual C++采用的框架是MFC。现在MFC早已不是通常意义上的一个类库了(Delphi和C++Builder使用的VCL的概念也不仅仅是一个控件库)。选择了MFC也就选择了一种程序结构,一种编程风格(我不知道有多少人在工作中真正领悟了他的doc/view/frame架构?)。但由于原型出现得比较早,MFC相比于VCL落后了一个时代(例如对于运行时识别的支持)。尽管微软对MFC的更新没有停止,但就像Borland的OWL框架的淡出历史一样(我至今清晰的记着1997年那个寒冷的春节,我第一次用OWL写出自己的第一个GUI时,心头的那份狂喜!),MFC的淡出也是早晚的事。否则,微软也不会开发ATL、WTL了,更不会有什么.NET了。
我以为,由于所有的windows应用程序都采用消息驱动机制,亦即windows程序是通过操作系统发送的消息来处理用户的输入的(The window receives the user input in the form of "messages" to the window. A window also uses messages to communicate with other windows. Getting a good feel for messages is an important part of learning how to write programs for Windows),最能体现一个应用程序框架的先进性的是它的委托模型。-----最自然的封装方式是采用虚成员函数。如果要响应某个消息就重载相应的虚函数。但是MFC采用的却是“古老”的宏定义方法,用宏定义方法的好处是省去了虚函数VTable的系统开销。不过带来的缺点就是映射不太直观,和VCL的委托模型相比,MFC的映射方法就显得太落后了。“而C++Builder对C++语言进行了扩展,以便引入组件、事件处理、属性等新特性。由于功夫做在编译器级,生成的源代码就显得十分简洁。但是由于扩展的非标准特性,使用VCL的C++Builder的源代码无法被其它编译器编译”。另一方面VCL所支持的组件、属性等都是MFC所缺乏的特性。虽然VC也能支持组件,但要通过AppWizard先生成一个“包裹”类(wrapper),不如VCL来得简洁。有很多人使用C++Builder就是冲着控件板上那一大堆组件来的,VC虽然能使用的组件也很多(也许不比C++Builder少),但由于不方便而对RAD程序员没有吸引力。
当然了,虽说MFC已显落后,但不是说它不值得学。事实上,不学MFC就等于没学VC。它的伟大之初就在于对SDK的封装的浅显!利用MFC框架开发程序仍然是目前开发桌面应用的主流模式,而且还会保持相当长的时间(想一想目前的海量的MFC资源就明白了)。即使你不使用MFC框架,花点时间学习一下MFC的封装机制对你熟悉C++的OOP机制和Windows底层功能也是很有好处的。因为,“现在成为一门语言或开发工具的高手,除了你具备基本的编程基础(如数据结构,操作系统等)之外,很大程度上取决于你对它(语言和类库)的熟悉程度,以及你灵活应用已有的可复用代码进行组合创新的能力!----这些都需要时间”。
以上是根据以前的某些帖子整理的!并不全是本人的心声------我还没有这么厉害!
---------------------------------------
*****我为什么学习VC?********
我自始至终都认为软件开发行业不应沦落为一种人人都可随意摆弄的玩具!我讨厌VB/DELPHI之流的语言,他们是对软件工程师的一种侮辱------它们导致了很大一部分的所谓的程序员的堕落!一味地脱拽鼠标和修改控间的属性的伎俩,连幼儿园的Baby都会做,更不用提搞建筑的民工了!靠!原来他们都是伟大的程序员呀!我敢肯定地说,很多人当初选择VB之流的语言,本身就抱着一种投机的变态心理,因为他对自己的实力和信心感到不足,当然了,他一定还听说过“C++好难呀,很难学会呀!”之类的的流言!你也不要和我提java这个鸟语言,它的Swing组建实现的太令人失望,但最让我无法忍受的是java那卑鄙、下流的开发工具和帮助,当初学java时,我全部使用UltraEdit写的代码!
我学习VC的开始主要是受到了闻怡祥写的一本小册子的指引!闻老大确实功力惊人!学习VC的过程中,随着对Windows系统和MFC类库的了解,我越来越感到一种美,那就是对于各种数据结构的合理的安排。(使得我都不想怎么学习数据结构了,也许这并不是一种好兆头!)“VB封装得太厉害,编程时过于依赖控件,缺少了对程序细节的思考和整体的把握,那些性能应该做成函数,那些性能应该独立出来,思路总是局限于控件,程序的功能一多需要整体策划时,VB就不如VC了”。
选择了VC,就选择的寂寞!用Visual C++编程就像一次旅行,除了要经受得住沿途的诱惑,还要耐得住寂寞!
改版后呆在VC版一点归属感也没有,致命的是没有一种团结向上的力量!论坛的斑竹所起的作用太小(也许搞vc的人比较忙!)。虽然人气依旧很旺,但是很遗憾缺少真正的领军人物,大家都在那里自己单打独斗,没有人与人之间的恩情存在!像我不知道现在在csdn的VC/MFC论坛上有多少朋友是真正的程序员,给我的感觉是70%的人都是学生!现在大部分学生和我当初一样似乎对于程序设计的本身没有多大的兴趣,反而对开发环境这种表面的东西情有独钟,大加讨论。你只要随便浏览一下帖子就会发现很多人在问“这个控件怎么用?这个消息怎么拦截,这个界面怎么做?”之类的东西,很令人寒心,难道学vc就是为了这些东西?怎么就不多看一眼MSDN呢?还有现在的COM/ACTIVEX论坛很冷清,难道我们都在学习MFC?这正常吗?
题外话:
虽然我的工作与计算机没有关系,但我这半年来,经常在csdn上熬夜到凌晨2:00,虽然很累,还是乐此不疲,因为我从心底喜欢写代码。------就是不知道该春节回家的时候如何去面对自己的母亲,因为自己的身体越来越瘦,-----自从毕业起,母亲就希望我能长胖一点,况且,我也实在不想让母亲认为我的工作很苦!从而牵肠挂肚!
一段有情有意、有笑有泪的日子就这么流过去了,就像流水一般,怎么抓也抓不住,心中难免有一种落寞!感谢CSDN论坛上的各种问题,感谢CSDN上所有的朋友,也许人生本来就是和别人不断相遇、相识的过程!
Someone who you passed on the street would be the lover of your life
psusong
2002.12.31