对VC的批判,我要打击大家学VC的积极性了……(转)
对VC的批判,我要打击大家学VC的积极性了……
一家之言,VC高手不妨过来指点指点,没有人骂我,我不高兴
1。我看到有很多人都说VC难学,信然!拿我来说,最终真正派上用场的还是VB和C++Buld
er之类RAD开发工具。 我在想,为什么大家都在说VC难学,却又想学,许多人是不是都象
我刚学VC一样,人云VC如何如何,就去学VC了,但水平与能力有限,只能成为半罐子水,
花钱不少,花时间不少,花精力不少,代价更不少,却没得到什么…… 为什么大家都要“
明知山有虎,偏向虎山行”?特别是许多准备进入软件开发这一行业的,用过自已的大脑
仔细想过为什么要学VC吗? 我的观点要打击大家学VC的积极性了……
2.为什么用VC干活的人工资高?我认为学VC可以对一个程序员的基本功做出最痛苦的锻炼
,所以经过VC苦练的人大都是金刚不坏之身,再学其它的东西就感到游刃有余了。通过VC
成为高手者自然人少,以VC之难能成为高手者自然能力超群, 牛人自然工资高,这有什么
奇怪的?他们付出了更多罢了。
3.不学VC的最主要理由:技术进步!不知诸位正在学VC的想没想过技术进步这个因素?如
果你学VC是为了有个收入高的好工作,那么我认为你还是别学好。现在.net已经推出,编
程平台的转移是必然的,这个周期大约就在两三年之内。 VC6的核心就是两大类库:MFC和
ATL,前者是基于win32 API的一种FrameWork,后者是开发COM组件的类库,两者开发的是
传统的Windows应用程序,学VC不学MFC,不学ATL几乎可以说没学VC!但遗憾的是学VC的人
没有几个不为MFC中那些复杂的类之间的关系,那些奇怪的代码而头痛,ATL也好不到哪去
,如果你事先没系统地学习COM理论,用ATL来发基于COM的组件几乎是不可能的。事实上,
MFC框架就是一种设计模式,只不过微软的开发人员将其设计得非常完善罢了。那本著名的
《设计模式》经典书中就介绍了23种设计模式,其中介绍的MVC模型几乎就是MFC的精髓!用
MFC开发软件,你就必须遵循它的思路,你所做的工作就是在这个框架上修修补补,(当然
,这个框架做Windows界面还是非常完善的,几乎考虑到了程序对界面的所有需求),但我
觉得强迫别人按照一个框架去解决问题这是对人的一种束缚!可悲的是还有那么多人沾沾
自喜于此!我常用C++ Builder,我知道VC的高手对这类RAD心存蔑视,但我也知道我在C++Builder中可以非常方便地从头开始应用一种设计模式,而不用
费心地考虑如何将我这种设计模式嵌入到某个框架之中(当然我也可以设计出很复杂的应用
多种设计模式的程序框架,C++Builder把这个工作留给了程序员自已);同样的工作,对于
一个对VC不熟的人,自建若干个新类,再将其引入到MFC中不是一件简单的事,其主要原因
就是MFC的复杂性。C++Builder中只需新建若干个Unit,然后写你的类,再在窗体上加一个
接钮,包含上新类的头文件,new一个对象就可以用了,对于初学者而言,你说哪种解决问
题的方法更直观,从程序设计的角度,哪一个效率更高?
4.从微软的策略看VC的前途!微软的策略是先用.net提供一个新的环境,然后逐步修改其
OS,最终完全抛弃NT内核,其最终目的是抢占被UNIX和LINUX占据的高端市场份额(这是B
orland李维说的,我觉得有道理)。现在推出的.net框架还支持原来的技术(如COM+),
VC.net中也还有MFC7,但这只是一个过渡时期的产品,就象Windows 3.1被Windows 95取代
一样,最终是要被抛弃的。很明显,软件发展的趋势就是不断提高软件开发的效率,在.n
et中开发程序绝不会有现在VC6中用MFC这样复杂和繁琐,事实上,新的平台已不再有win3
2 API这种平面型的开发接口,已全面立体化(类似于在C++的类库,使用方式也与C++中类
的使用方式类似),而且应用程序又回到了DOS时代的简洁,只需复制整个文件夹,就可以
移动一个应用程序,程序是自说明的,注册表也没有了,意味着基于注册表的COM组件技术
也将被取代。这一切的变化周期估计就在两三年之内。
5.现实的考虑:诸位想想:如果你花一到两年的时间去学VC6,尤其是MFC,就算你到时是
VC的绝顶高手,你却空有屠龙之技而无龙可屠,岂不悲哉!想想如果有一个DOS时代的高手
跨越时空来到现在,他的技术早已被时代所淹没,如果不更新知识,他会发现要找到一个
饭碗都不容易。对于所有想学VC的人,我提出一个忠告:VC的巅峰期已过。 那现在为什么
还有那么多公司想要招VC的程序员?有很大的原因是对过去资源的继承。过去的投资不能
白费,这还用说吗?
6.如果你打算学VC,请端正你的目的!现在学VC的目的不是为了好找工作,好拿高薪,而
是因为它的复杂是锻炼一个优秀程序员的最佳方法,就象奥运长跑选手为了提高身体素质
而到高原上训练一样。对于想进入软件开发大门的人我的建议是直接学习最新的技术,而
且最好是现在学习今后一到两年内会成为主流的技术,而那些有志于成为windows软件高手
的人,VC是必修课,不经百炼哪能成钢?而且VC肯定还会生存很长一段时间,就象现在还有
用Foxpro开发的系统一样.
问题点数:0、回复次数:22Top
1 楼lite007(lite)回复于 2003-09-03 12:43:29 得分 0
7.我学软件喜新厌旧:对于象我这样的平庸之辈,我脚踏N只船:最早以VB入门,从3.0用
到6.0,它给我带来的收获也最多;VC我是半桶水,学了一两年就没一点成就感;C++Buil
der是我的爱将,是我学习C++和各种软件理论最常用的开发工具,用它也做了不少东东;
真的不错,准备娶过门来了;我还对Java心存向往,很想马上去学,不过个人能力有限,还
是放一放罢…… 掌握多种开发工具有一个好处,那就是可以取长补短。比如有一个图象处
理程序用VC开发,而其中的报表部分我则用C++Builder做出来,再以COM组件的方式给VC调
;要操作Office我喜欢用VB,要写多层系统访问数据库我喜欢用C++Builder(现在还加上
Delphi),所有这些都可以在COM的基础上统一起来…… 不过COM也快完蛋了,我也要学新
的东东了,可惜了我买了那么多COM的书……对了,还要加一句,对COM了解即可,别钻进
牛角尖里去了,COM又是一个无底洞,也许日后再发个贴子,就叫"对COM的批判"
8。1)程序框架和设计模式: 程序框架的设计体现出设计模式理论,可以看成是一个未完
成的系统,程序员在这个框架之上加入实际工作的代码而形成真实的系统。而这两者的出
现与广泛应用是软件开发走向成熟的必然。 为什么要提出设计模式理论和应用程序框架?
很简单,就是要提高软件产品的质量和生产率。 现在主流的开发工具中都有程序框架的应
用,最典型的是MFC和VCL。那么,衡量一个框架好坏的标准是什么?我可以列出几条,但
我可以肯定地指出,框架的可复用性是第一位的,而易用性是第二位的,运行效率则是第
三位的。就可复用性而言,MFC和VCL难分高下,而易用性则差别巨大,我就不详细说了。
2)“运行效率”vs“开发效率”; 运行效率和开发效率这两者谁更重要? 除非是开发实
时系统和某些系统核心模块(这种模块在整个项目只占很小比例),大多数软件项目考虑
的是开发效率和一些其它因素,对运行效率则要求不高。 所以,象开发效率、稳定性、易
用性、易维护、可扩展等就成为首要考虑的因素,而运行效率则是在保证达到前面要求的
前提下再去考虑的。 另外,是否VC做出来的东西就一定好和快呢?这取决于系统设计和程
序员对语言和工具的把握程度。 举个例子: 在程序设计过程中,都要对系统功能进行封
装。假设系统中要将ADO RecordSet封装成一个适合特定用途的数据存取类,用VC封装工作
量是C++BUILDER的好几倍(因为C++BUILDER中有一个现成的类TADODataSet封装了ADO Rec
ordSet,基于TADODataSet自然要少很多工作),除了少数VC高手,绝大多数人用VC实现的
封装都无法与用TADODataSet的封装相比拟,为什么?很简单,你对原生的ADO RecordSet
的封装达不到TADODataSet的水平!开发VCL的程序员是一批牛人,这批牛人的水平是绝大
多数程序员所无法达到的,牛人们既熟悉语言和开发工具,也熟悉ADO的底层原理。你用V
C做出的东西,与另一个用C++BUILDER或Delphi做出来的东西相比,可能你的稳定性更差,运行速度更慢! 既然费尽心机地用VC做出来的东西还不如另一个
学了Delphi3个月作出来的东西,我为什么一定要哪壶不开提哪壶? 所以,从现实的角度
,我不赞成大量的程序员为了“自己造轮子”而将大量精力花费在VC上,应尽可能地复用
优秀的软件组件。 开发效率是程序员吃饭和公司生存的关键因素。
3)关于.net平台下的Unmanaged和managed应用: 毫无疑问,Unmanaged程序肯定快,但我
可以肯定的说,managed今后将会大行其道,特别是在企业级信息网络中。 什么叫Unmana
ged应用?直接调用OS的API,直接编译生成机器码的程序。而managed应用,就是运行在一
个软件虚拟机上的程序,Java就是一个典型的例子,.net也是走的这条路!Java为什么这
样火,M$为什么要跟进这个步伐?很简单,这种架构更适合于现代信息网络的要求。VC6只
能开发managed应用,你说说它在现代的网络化软件中会居于一个什么地位? 另外,在企
业级的软件中,最重要的是什么?一个是安全,另一个是集成多种信息源!运行效率的考
虑是放在最后的。Java慢,但为什么还被广泛用来开发企业级应用程序?XML和Web Servi
ce为什么被称为下一代网络技术的核心?最关键的一点是它可以使不同平台的软件相互合
作!
4)现在可以做出一个小结: 对于需要高效率、与硬件打交道、运行于传统Windows平
台下的程序而言,VC是重点选择的开发工具,有志于此的程序员必须花大力气去学VC; 对
于开发企业级软件和电子商务等互联网应用领域的专业程序员,根本不要去学VC,而应将
精力放在标准C++,Java,C#等语言的学习上,同时重点学习.net、J2EE等平台; 对于一
般的软件开发爱好者来说,VC不是必经的一条道路,可以根据实际情况选一种开发工具和
语言学习; 对于还在学校学习的计算机专业学生,C++和Java是必学的,至于VC,需不需
要学还要看你将来想从事的领域。 我之所以发这个贴子,是看到有很多贴子总在夸耀VC的
强大(这是实情),无形之中很多人被误导了,不管什么情况,好象一学软件开发必学C+
+,一学C++必学VC,然后浪费大量的时间和金钱于此,费事不少,收效则低!(我周围就
有很多这样的情况,包括我,都成为VC的半瓶水)先不说成为不了专业程序员的人,就是
以软件开发作为职业的人,从事的领域不一样,也不一定非学VC不可。有这时间,干些别
的岂不更好? 至于VC的前景,我在本贴中提出了自己不乐观的看法。诸位兄弟姐妹想必会
有更多的观点,我希望大家能多多讨论一下,这不是孰优孰劣的问题,而是如何把握技术发展趋势,然后根据发展趋势来选择自己的突破口的问题。如果有多
方面的观点,对大家想必都是一种启发。
Top
2 楼SyDes21(Develop in W&U/L)回复于 2003-09-03 13:39:48 得分 0
老兄,你说得蛮好的.
不过我不会受你的影响, 我要在今后一小段时间成为VC高手呢?
Top
3 楼nichotilikai(lk)回复于 2003-09-03 13:47:37 得分 0
用VC的也不见得都是用MFC和ATL的,就象用C++的不见得都用VC一样。驱动,图形,游戏,仍将用传统的方式,而不是.NET。至少他们过渡到.NET上,要比其他程序员晚很长时间。
Top
4 楼PLLKing(阿鲁迪巴)回复于 2003-09-03 14:42:34 得分 0
说VC++难学的人,都是对C/C++掌握得不扎实的人;如果你掌握得特别扎实,VC++并不难学。当然,对于一般应用而言,比VB、Delphi、C++Builder肯定是要麻烦一些。Top
5 楼PLLKing(阿鲁迪巴)回复于 2003-09-03 14:54:45 得分 0
(以下是个人观点,错误之处请大家批评指正)
我常常看到书店里的书,大多长篇累牍,却让人看得糊里糊涂的,也不知这些过来的高手们,会不会总结经验?!我又常常看到很多初学者,学了很长时间,却说不出VC++程序的基本流程、文件组织都是怎样的?! ……
在不久的将来,我打算写一套书,书名我都想好了,叫《菜鸟写给菜鸟的书 -- VC++篇》、《菜鸟写给菜鸟的书 -- Delphi篇》……
因为,我也是从菜鸟过来的,我最清楚他们总认为难学,到底难学在什么地方……Top
6 楼ylc001(一人得道,鸡犬升天)回复于 2003-09-03 16:27:25 得分 0
走自己的路,让别人说去吧。
为了自己的理想与爱好努力奋斗,鄙视那些骚扰我们进步的无聊分子。
你喜欢RAD,那就去DELPHI吧。Top
7 楼Healer()回复于 2003-09-03 16:45:33 得分 0
MFC是破., 我都是SDK.
Top
8 楼AaronChan(Aaron)回复于 2003-09-03 16:53:03 得分 0
楼主有些我赞成,有些反对!呵呵!我爱VC!Top
9 楼rwdx(忆)回复于 2003-09-03 17:08:37 得分 0
赞成楼主,所以我现在学C#,以前搞DELPHI的Top
10 楼lwglucky(才鸟)回复于 2003-09-03 17:23:56 得分 0
vc是灵活和rad以及健壮的完美结合,也是其他开发工具的基础,比如驱动,游戏,库。。很多标准和开发包都是c++写的。。至少首先是现有c++的开发包,才有vb/delhi的开发包,对于某些专用和特殊平常人很少用到的驱动/库,很多时候都是只有c++ 包。。。
学的vc向"上"走很容易的,比如有很多完美的界面/开发包/驱动程序库等等都是可以直接在其基础上再开发的,比如说xt库。通用驱动程序框架库,访问数据库有很完善的ado封装的库,图形有很多别人已经开发好的库,包括游戏的开发,,并不是很多初学者和学的一半就退出的人想的啥子都从零开发起走。。。但是,从“下”向“上”走就不是那么回事了。。。Top
11 楼ahao(天·狼·星星)回复于 2003-09-03 17:40:56 得分 0
MFC的设计已经很陈旧了,建议学C++的人也一定要学一学Java,
但是,不经历一些困难,也是没办法学到真正有用的东西的。高手不会因为不断有新的东西而被淘汰,相反,他们才能最快地跟上,因为他们有丰富的经验和对IT业更深的认识。
Top
12 楼xiaohyy(醉大饿极)回复于 2003-09-03 18:05:25 得分 0
那现在为什么
还有那么多公司想要招VC的程序员?有很大的原因是对过去资源的继承。过去的投资不能
白费,这还用说吗?
============
这就说明vc还有一段相当长的生命力。。Top
13 楼newkey007(无限天空 www.xDrv.com)回复于 2003-09-03 19:14:02 得分 0
先分析一下你用的软件再写文章
msn6.0 office xp .net 底层 操作系统
是用什么构建的
com
难道是 .net 吗?
就是.net 底层也是用 com 完成的
ms 会把这些2。3年内都升级吗
用户会有什么反映
再看看中等城市,使用的是什么操作系统,看看国外用的最多的是什么系统
很多还是98
要发挥 .net 的效率,现在各国的带宽和稳定性什么时候可以跟上?
可能短事件取缔吗
Top
14 楼zx_sanjin(www.chmbook.com - CHM电子书网)回复于 2003-09-03 20:45:23 得分 0
.net和VC是两种思维,如果作者目光只盯在MFC和ATL上就大错特错了。
只要C++还在,VC就一定不会消亡!!
不讨论.net和VC谁在技术上有优势,但就VC的生存期而言:
1. MFC包装WINDOWS API,只要WINDOWS API没变,VC就不会变
2. VC这么好的工具,创造了多少个软件神话,这些系统的代码会在几年内消亡,放弃维护,冲携代码吗?
3. 做底层的东西,如驱动,引擎.. 没有比VC更好的了
还有好多,就先说这么些,gf催我了,呵呵~~~~
Top
15 楼LookSail(老得牙都掉了还在学)回复于 2003-09-03 20:53:24 得分 0
有一定道理Top
16 楼faithcj(水妖)回复于 2003-09-03 21:33:48 得分 0
up一下,有时间再看Top
17 楼stcrane1228(狼族兄弟(LONE_WOLF))回复于 2003-09-04 09:24:17 得分 0
值得考虑……Top
18 楼li_zero(相遇太早,反而淡了缘分)回复于 2003-09-04 10:30:29 得分 0
不同的需要有不同的解决方案,快速开发应用级程序可能不需要VC,但也有很多windows上的东西只能用C/C++、VC才能完成的,就好像UNIX和C存在了这么多年,也不见得能多快消亡,JAVA、C#……等还没有什么能替代C/C++的。Top
19 楼zhujiang_1977(朱江)回复于 2003-09-05 11:44:55 得分 0
VC的消亡,只有两种可能:1,对它的需求已经消失;2,有更好的替代品出现。
而目前,我却看不到任何一种迹象的出现。可以说,只要Windows还在,VC不会消亡。Top
20 楼PAUL_BAI(小豆)回复于 2003-09-05 11:57:31 得分 0
GZ
SCTop
21 楼he_zhidan(何志丹:www.dzlishi.net,www.vcshare.net)回复于 2003-09-05 14:27:29 得分 0
vc少入门书
我相信写书的人是高手
但缺少实践操作Top
22 楼DarkShow(我是一个神话)回复于 2003-09-05 14:40:32 得分 0
难怪哟~~~~~~~~看看中国得程序员门都在干啥……………………Top
23 楼SyDes21(Develop in W&U/L)回复于 2003-12-09 10:08:23 得分 0
对于开发工具的选择主要出于个人爱好以及你参加开发工作的需要.像我因为第一次就业的时候公司要求用MFC作短信的开发,接下来在Windows下的应用我会都用MFC或ATL,用熟了,不管作DB应用还是网络应用,开发效率不是问题。刚开始对MFC与ATL太热衷,以至于作Socket开发时就用MFC的CSocket,现在正积极地用WinSock API作Socket的开发,用起来灵活;不过COM方面的开发我还是用ATL。
我一开始就用VC,用了一段时间后,觉得想作一名好的程序员对系统的底层了解一点是必须的,目前我就在学习《Windows核心编程》和TCP/IP理论;有空的话看一看MFC的实现的源代码以及ATL的源代码。另外,我有时又重新拿起C++教程翻一翻。
剩下来的时间我就学习UML及UML的辅助工具ROSE了。刚开始的时候很注重UML与ROSE的本身,等熟悉之后觉得面向对分析与技术最重要的还是面向对象软件工程的思想。对面向对象的思想我目前还没有多少感觉。另外我也关注过RUP与设计模式,关注了之后没有得到多少收获。开发项目的经验对一种思想的领悟最重要了。如果用面向对象的方法作了N个项目开发之后,我想我会对面向对象技术有一种新的领悟的。
说的有点多了。MFC&ATL还是要用的,UNIX的下开发(C/C++)也是要的,至于JAVA这一辈子都不会接触了,因为精力有限嘛。
Top




