主题:[转帖]论CC++程序员的门户之见
这几天VCHELP上与各位VC同道一起讨论两篇文章《什么人要学VC++》和《C++BUILDER与VC的比较》。我也发表了自己看法,很高兴有那么多学习C/C++网友的批评和建议。也感谢WENYY斑竹的厚爱让我做VCHELP的专栏作者,让我发表一些文章。
今天我想就两篇文章的热烈讨论来发表我的一些看法。
在这几天的讨论中,我发现VCHELP作为迄今为止看到能够维持这么长时间的VC专业站点之一的最大的原因是那么多VC爱好者的支持和WENNY的不懈努力。(我刚开始学习VC时候的长上的那些站点,张圣华的VC++站点,VC++世界,玉海园VCHELP,VGALAXY。很多都没有坚持下去现在只剩下VCHELP和VGALAXY是一直保持了下来。)但是我发觉这里很多程序员的门户之见往往太深。有的是不经意的流露,有的是说的比较的露骨。这好象是C/C++程序员的通病。而DELPHI,VB的程序员要少的多,而且许多其他站点挑起这样的争论的也多是VC++的程序员。因此这片文章的主旨就是想说明门户只见的危害。
其实我和大多数的VC程序员一样。一开始门户之见就很重,以为会写VC就天下第一。看不起VB,DELPHI的程序员看不起JAVA程序员。有的时候在网上的聊天室和JAVA程序员打嘴架可以打倒晚上两三点。
可是我逐渐觉得门户之见实在要不得的。因为有了门户之见往往就会成为孔异己。会写四种茴字,围着DOC/VIEW这样的"八股文"之间来回打转看不见外面的天下有多大。可是到实际开发的时候却又不得不面对预算和时间的限制,写出来的程序既不高效又超过TASK的BASELINE。后来我的看法也逐渐改变到现在基本上没有什么门户之见了。现在,不管是管理项目还是平时写小程序我的准则都是"On time Within Budget"。效用第一是最主要的,那一个最快就用那一个从来就不是死抱着一个工具不放。
其实这些转变都还有赖于我到MS的几次访问。有一次去MS找几个正在开发BIZTALK的朋友,和他们聊BITALK,我问他们BIZTALK这样的服务你们是用VC把。他们告诉我BITALK60%的代码是VB,只有大概5%的代码是VC,还有一些是ASP。这让我很震动难道连MS自己都不重视VC么?难道将来都是RAD傻瓜开发的天下。从这时起我不时反思自己一前为什么有那些门户之见。后来发觉大多数C/C++程序员包括我在内特别是那些对VC++精熟的人,之所以排斥那些RAD开发工具VB,DELPHI ,JAVA是因为希望自己为VC++付出的劳动不是无用功。C/C++特别是VC的学习曲线是C/C++程序员的门户之见的根源。就像WENNY说过,要把MFC ATL COM都搞通搞懂没有两三年的汗水和心血是不行的。可是当我们这些VC程序员看到那些只用一两个月就学会VB,DELPHI的程序员在5分钟内就能完成我们半天的工作简直就是小孩子搭积木的活,一个JAVA解决方案能够卖到几百万,而自己用VC辛辛苦苦写的基于ATL DCOM的SOLUTION才买10万还不到。内心是一种什么样的感觉。是失落,是嫉妒,到最后就是蛮横无理的狡辩。的确是这样,我学了两三年的东西,你只要一个月就能完成,我的东西才买10万你要买100万,好似自己的心血都是白费的。其实我觉得这是科技发展的需求所在,老的旧的东西就要淘汰。19世纪工业革命,大机器生产让无数的手工业者流浪街头。结果他们就闯进工厂砸掉机器烧毁厂房。但是今天我们只知道那是一个大机器的时代却基本上没有人知道那些流浪者。为什么?这就是适者生存的道理。消除门户之见,多看看,多学学,那你就能灵活应变永远走在IT时代的浪尖。
附 C/C++:从士兵到将军---如何走上项目管理员之路:
很多人问我为什么要学C/C++,学了有什么用?
我始终认为:学习一门语言或者开发工具,语法结构功能调用是次要的。最主要的是学习他的思想。譬如学习VC,就是要学习WINDOWS的内在机理如何,什么是消息循环,如何进行消息影射,什么是窗口注册,什么是Callback,什么是线成。学习Java是要知道什么是面向对象,什么是继承,什么是封装,什么是多态。学习COM就要知道VTALBE,类厂,接口,idl。学习DELPHI,VB就要知道如何快速开发,如何模块重用,如何统一界面和数据。关键是一个思想,有了这些思想。那么我们就可以触类旁通。譬如有了C/C++的知识,VB我仅仅用了半天就基本上掌握了要领。这就让我知道学习VC原来也不是在浪费时间。有了VC++的基础,其他什么都能应变自如,DELPHI我用一个礼拜学完的,JAVA是边做边学,就连还没有发布的C#看看它的技术白皮书也就猜个八九不离十。
C->C++->VC->COM->UML->Java->Delphi当然这是我个人的学习途径和方法,也许大家也有自己的奇思妙想。但是话要说回来,如果要在 程序员->系统分析师->构架工程师->项目主管 这条路上顺利地走下去。要当好一个合格的项目主管,那么在耐性,和对工程的结构关系的全局把握是一种基本工。因此C/C++是不可缺少的。虽然我个人认为C/C++在不远的将来应用会越来越少。但是作为一个在面向过程和面向对象方面都比较完善的语言来说是不可不学的。同时我认为C/C++灵活的内存管理,复杂的对象结构是磨练一个程序员耐心和调试能力以及对程序结构对象关系全局的把握的最好方法。当你为了一个内存泄漏,而调试半天都不通的时候。这个时候就需要你的耐心,和"旁门左道"的调试工夫,更需要有对程序全局的把握。所以当你过了C/C++这一关你就等于过了"少林十八铜人阵"。真正真正是有少林寺的工夫了。
今天我想就两篇文章的热烈讨论来发表我的一些看法。
在这几天的讨论中,我发现VCHELP作为迄今为止看到能够维持这么长时间的VC专业站点之一的最大的原因是那么多VC爱好者的支持和WENNY的不懈努力。(我刚开始学习VC时候的长上的那些站点,张圣华的VC++站点,VC++世界,玉海园VCHELP,VGALAXY。很多都没有坚持下去现在只剩下VCHELP和VGALAXY是一直保持了下来。)但是我发觉这里很多程序员的门户之见往往太深。有的是不经意的流露,有的是说的比较的露骨。这好象是C/C++程序员的通病。而DELPHI,VB的程序员要少的多,而且许多其他站点挑起这样的争论的也多是VC++的程序员。因此这片文章的主旨就是想说明门户只见的危害。
其实我和大多数的VC程序员一样。一开始门户之见就很重,以为会写VC就天下第一。看不起VB,DELPHI的程序员看不起JAVA程序员。有的时候在网上的聊天室和JAVA程序员打嘴架可以打倒晚上两三点。
可是我逐渐觉得门户之见实在要不得的。因为有了门户之见往往就会成为孔异己。会写四种茴字,围着DOC/VIEW这样的"八股文"之间来回打转看不见外面的天下有多大。可是到实际开发的时候却又不得不面对预算和时间的限制,写出来的程序既不高效又超过TASK的BASELINE。后来我的看法也逐渐改变到现在基本上没有什么门户之见了。现在,不管是管理项目还是平时写小程序我的准则都是"On time Within Budget"。效用第一是最主要的,那一个最快就用那一个从来就不是死抱着一个工具不放。
其实这些转变都还有赖于我到MS的几次访问。有一次去MS找几个正在开发BIZTALK的朋友,和他们聊BITALK,我问他们BIZTALK这样的服务你们是用VC把。他们告诉我BITALK60%的代码是VB,只有大概5%的代码是VC,还有一些是ASP。这让我很震动难道连MS自己都不重视VC么?难道将来都是RAD傻瓜开发的天下。从这时起我不时反思自己一前为什么有那些门户之见。后来发觉大多数C/C++程序员包括我在内特别是那些对VC++精熟的人,之所以排斥那些RAD开发工具VB,DELPHI ,JAVA是因为希望自己为VC++付出的劳动不是无用功。C/C++特别是VC的学习曲线是C/C++程序员的门户之见的根源。就像WENNY说过,要把MFC ATL COM都搞通搞懂没有两三年的汗水和心血是不行的。可是当我们这些VC程序员看到那些只用一两个月就学会VB,DELPHI的程序员在5分钟内就能完成我们半天的工作简直就是小孩子搭积木的活,一个JAVA解决方案能够卖到几百万,而自己用VC辛辛苦苦写的基于ATL DCOM的SOLUTION才买10万还不到。内心是一种什么样的感觉。是失落,是嫉妒,到最后就是蛮横无理的狡辩。的确是这样,我学了两三年的东西,你只要一个月就能完成,我的东西才买10万你要买100万,好似自己的心血都是白费的。其实我觉得这是科技发展的需求所在,老的旧的东西就要淘汰。19世纪工业革命,大机器生产让无数的手工业者流浪街头。结果他们就闯进工厂砸掉机器烧毁厂房。但是今天我们只知道那是一个大机器的时代却基本上没有人知道那些流浪者。为什么?这就是适者生存的道理。消除门户之见,多看看,多学学,那你就能灵活应变永远走在IT时代的浪尖。
附 C/C++:从士兵到将军---如何走上项目管理员之路:
很多人问我为什么要学C/C++,学了有什么用?
我始终认为:学习一门语言或者开发工具,语法结构功能调用是次要的。最主要的是学习他的思想。譬如学习VC,就是要学习WINDOWS的内在机理如何,什么是消息循环,如何进行消息影射,什么是窗口注册,什么是Callback,什么是线成。学习Java是要知道什么是面向对象,什么是继承,什么是封装,什么是多态。学习COM就要知道VTALBE,类厂,接口,idl。学习DELPHI,VB就要知道如何快速开发,如何模块重用,如何统一界面和数据。关键是一个思想,有了这些思想。那么我们就可以触类旁通。譬如有了C/C++的知识,VB我仅仅用了半天就基本上掌握了要领。这就让我知道学习VC原来也不是在浪费时间。有了VC++的基础,其他什么都能应变自如,DELPHI我用一个礼拜学完的,JAVA是边做边学,就连还没有发布的C#看看它的技术白皮书也就猜个八九不离十。
C->C++->VC->COM->UML->Java->Delphi当然这是我个人的学习途径和方法,也许大家也有自己的奇思妙想。但是话要说回来,如果要在 程序员->系统分析师->构架工程师->项目主管 这条路上顺利地走下去。要当好一个合格的项目主管,那么在耐性,和对工程的结构关系的全局把握是一种基本工。因此C/C++是不可缺少的。虽然我个人认为C/C++在不远的将来应用会越来越少。但是作为一个在面向过程和面向对象方面都比较完善的语言来说是不可不学的。同时我认为C/C++灵活的内存管理,复杂的对象结构是磨练一个程序员耐心和调试能力以及对程序结构对象关系全局的把握的最好方法。当你为了一个内存泄漏,而调试半天都不通的时候。这个时候就需要你的耐心,和"旁门左道"的调试工夫,更需要有对程序全局的把握。所以当你过了C/C++这一关你就等于过了"少林十八铜人阵"。真正真正是有少林寺的工夫了。