彻底放弃没落的MFC,对新人的忠告! by FreeWick

完全没想到10多年后还有人纠结要不要学MFC,我花点时间给新人们一个总结。

第1种观点 学习完MFC,你会更理解编程的思想,再学别的语言就更快了。

话说小白要去美国学技术,大黑劝他说:“你为什么不先到朝鲜,然后从朝鲜再飞到美国”,小白茫然不解。大黑接着说“你想你先到朝鲜再去美国,不是比从中国直接去美国近吗?”小白恍然大悟,“并且你到了朝鲜,那里有金太阳的照耀,你会更明白技术的思想。后面再学任何技术都很快。”于是小白去了朝鲜,然后他才知道原来朝鲜才是最好的地方,他给大黑打了长途电话,大黑问:“你感觉怎么样?”小白激动的说“我在学习用小刀刻芯片呢,听说美国都是动动按钮,学不到真正的东西。”

有的人要说“你看我就是先学了三年MFC,再学别的语言一样很快”,是,你要是先学三年JAVA或C#,再学别的语言会更快。你学三年MFC不是去跟零相比,是跟学三年其它语言比。在经济学上这叫机会成本,曼昆“你在面临选择的时候,要考虑的是机会成本”。

第2种观点 MFC接近于系统的底层,适合系统级的开发,学习他更能理解操作系统。

MFC能直接调用C,别的语言不能直接调用C吗?那.Net Interop是干什么的?醒醒吧!别说C,连MFC的DLL都有办法调用呢。
你真的觉得学习CDocument, CView, CWnd, CFrameWnd。。。这些绕来绕去的东西会更理解Windows?要更深的理解Windows要学习Win32编程,学习Windows核心编程,不是那个MFC,再说WinRT比Win32要好用的多。


第3种观点 MFC开发的程序运行效率高
MFC主要用来开发客户端程序,这里应该是跟C#对比,C#以前是托管程序,现在C#开发的Windows程序已经能编译成native了,运行效率提高了1.6倍左右吧,MFC是沉舟侧畔千帆过,船舱里的人还以为在乘风破浪。对了,visual studio的界面是用什么开发的呢?

还有一些观点,像什么刀呀剑呀,还有什么“你MFC用不好,也用不好C#”,就不一一列举了。很多时候辩证法就是粗看去很有哲理,实际毫无实际的指导意义。

为什么还有一些人推荐MFC?

话清末要废除科举制度,进京赶考的举子跪在外面绝食抗议,朝堂之上还有大臣坚持科举有多么好。是啊,你想这些老秀才学习四书五经学了半辈子,一下子又不考了,多少年的心血白费了。考物理,化学,代数,几乎给他们判了死刑。对于一个多年学习MFC,又不会别的语言的人,基本上也是深度套牢了。我记得冰河世纪里有一只老刺猬,洪水要来了,他躲在洞里不走“I was born in this hole and I'll die in this hole.”坚持是一种品质,顽固和守旧却是另外一回事了。这对于新手来说是一个很好的教训。


为什么还有很多刚毕业的大学生学习MFC?
因为他们的老师是上面所说的那些人。

MFC总有适合用的地方吧?
有,适合用在上世纪90年代开发Windows客户端程序。

MFC现在一点用都没有了吗?
不是,历史上遗留下来一些MFC的源代码需要维护。可能偶尔会用几个开源项目,就像弹药不够的时候偶尔也拼一下刺刀。

MFC应该跟什么语言比较?
Borland C++,VB6,Delphi,PB等。

什么人还需要关心一下MFC?
IT历史学家需要大写特写MFC曾经短暂的辉煌,考古学家需要考证这块化石的时候。

更多精彩讨论请移步:http://bbs.csdn.net/topics/391817496

理性看待VC/MFC没落

09-30

1. VC实际上没有想象中那么流行,有被夸大的成分。国外我不了解,只谈国内。rn 曾经连续若干年,无论是学校图书馆,还是新华书店,还是XX培训班,VC绝对是主力。rn 很多大学在开设C/C++课程时,要么还停留在TurboC时代,要么就是一律VC++,鲜有rn 其它开发环境。图书馆和书店,铺天盖地都是VC++,都是24小时精通,都是速成,都是rn 深入浅出,都是内幕云云。几乎看不到其它开发工具的影子。这给我们一种错误的讯息,rn VC很强大,整个社会都在用VC。当我第一次看到Linux的时候,甚至有些恐惧,竟然还有rn 这么不一样的windows。当我头一回用GCC和Vim的时候,惊慌失措。我想,很多人应该跟rn 我境遇差不多,身边充满VC的影子,多到让人窒息。其实,脚本语言也挺流行的,只不过rn 大环境让我们直到工作后才体会得到。rnrn2. VC真的在没落。rn 桌面软件的开发,曾经是VC独步天下,C#刚出来的时候,被不少人当作笑柄,要装一个巨大rn 无比.net才能使用。直到现在,使用C#开发桌面软件仍然是少数,至少我电脑里只有一个索rn 爱手机的管理软件。这种情况将要得到改写,因为Vista开始,.net已经默认集成到操作系统rn 中了,就跟以前的MFCxx.dll和MSVCRT.dll一样。用过C#的人都知道,C#很方便,无论是对OOrn 思想的支持程度,还是做GUI的RAD,都非常方便。再看VC,MFC渐渐淡去,这么多年也几乎没rn 多少进步,微软对之支持力度也是远远不如.net, WTL是好东西,可是没有官方支持。即使是rn VC.net,也比不上C#,毕竟C#是为了.net而生的。rnrn3. VC在很多方面开发效率不高。rn 并不是说VC在退步,而是他进步缓慢。在很多领域,取代VC的工具渐渐崭露头角,Python的快速rn 开发能力相当惊人,Java也有非常丰富的库支持,本来用VC做的一些小项目,拿他们来做,节省rn 了大量的开发时间。微软的VC类库,倒是很多年没大动静了。特别是涉及到互联网功能的地方,rn VC被很多工具超越。rnrn其实,与其说VC/MFC在没落,倒不如说是微软对产品的定位更加正确和清晰了。rn在Windows驱动开发领域,在性能非常重要的地方,在游戏开发上,VC还是会继续发挥作用的。rn只是,他不再被当作全能选手培养了,他有自己专注的地方。rnrn尽管如此,我估计,VC在国内教育界还是会火热下去,中国国情不同嘛rnDOS, QBasic, TurboC等等 哪一个不是在国外衰退后,还狠狠到中国来流行了几年rnrn现在很多没有历史遗留问题的项目,已经开始用C#,Java,QT,Python,Ruby,Php之类了rn当然,桌面个人软件,VC估计还是要继续一段时间,毕竟Windows7不是那么快就能取代XP的rnrn这些年来,没有那么快被淘汰的,却是被人诟病的所谓大学里的没有用的基础理论rnrn就我个人经历而言,算法和设计始终贯穿我所有的项目,它们是不可替代的东西rn即使有替代,也只可能是A算法代替B算法,或者A设计代替B设计rnrn最近看招聘信息,VC的踪影已经越来越少 论坛

对一个人的忠告

09-12

上网看到一个鄙视倒分的帖子,矛头竟然指向自己,很是惊愕。后来想了想, 算来他毕竟是小辈,终是没有发火。不过倒想给此人一些忠告。rn 一、虽然注册了一个新名称进来,可终究能猜出你是谁来。和毕业多年的朋友聊起来,总以为电视里的那种小人都是作家笔下的极端,没想到在这虚拟空间里倒亲身体会了一次。其实要说什么就明明白白的说,如此换个面具,做小人所为,真替你的同事担心,希望他们中没人挡了你什么。。。这个算是替你 给你同事的忠告吧。rn 二、我翻了你的一些帖子,多数里都有up, 有些得分的帖子可以说分数未必应该给你,虽然你最近又多了个叉,可是算来你来此处也不多于1年半(应该说你没来此时我已经是目前这种状况了),想忠告你的是,不要总拿别人的东西自己用(灌水),看到别人的东西,你本身已经学到了技术,不少帖子里可以看到,有些问题你自己的回答很茫然,在别人正确回答之后,你再次给个与别人类似的回答,或用别人的代码弄个文件给人,你不觉得可耻吗?有没有认真想过你自己的作为?rn 三、虽然在有些帖子里注有“禁止灌水者转贴”,只是对不尊重别人的人的一种告戒,不影响大家学技术。如果你觉得触碰了你,我的态度是,你的错。rn 四、别人看分数未必象你这样不择手段,花心思把技术搞好吧。rn 五、虽然你问的问题难度不大,可是你的作为很早就让人反感,自己狠下心来钻钻吧。你的技术真的不象你在某些帖子里自擂的那样,只能说你可能有个中文帮助罢了。会看帮助的人是好材料,而动辄复制帮助的人,庸物一个!rn 六、flash内部没有严格意义的变量定义,因此转化上较容易,但是一旦加入类,那就不一样,不能想当然。在结构化程序设计里,变量不仅有严格的类型声明,也有自己的生存空间。 对于学flash action者,也可以认为是接触了面向对象编程,但是它不是真正意义上的。不要以为学了点flash的action就自以为是。。。有能力者,去学习一下c#吧,是个好的转折点。 论坛

没有更多推荐了,返回首页