再论MFC与QT

donald3102 2015-10-18 10:50:15
加精
打开CSDN,突然发现最近在黑MFC。其实讨论的重点就在于一点“新手要不要学习MFC”。所以希望双方的辩手在辩论时千万不要偏离了重点。现在我作为中立方来评论一下。
其实,目前在windows下的开发,选择并不多,无非就是MFC和QT,其他的第三方还有一些库,但使用的范围不大,所以就排行榜前2名进行讨论。在今年的微软开发大会上,我很有幸提问了一个问题“我发现今天大会上展示的例子多是用C#编写的,微软是否在有意淡化C++的地位。对于C++来说,多年来几乎没有发展,例如在GUI方面,C++实现十分麻烦。在微软内部,对于这两种语言的发展是如何定位的?”。来自微软的技术人员,听完我的问题后,不约而同的摇头,其实,微软并没有淡化C++的地位,相反,微软在C++上面一直不懈的在努力。但我们可以清晰的发现,微软在同时走两条路,一是夯实基础,就是C++基础方面。C/C++属于中级语言,相对于VB,C#之类的高级语言麻烦,相对于汇编语言之类又简单。所以C/C++是面向高性能用户的,CryEngine,Unreal,Frost等世界顶级的游戏引擎底层用的是什么,虽然我看不到他们的源代码,但我肯定是C++的,为什么?高性能的需要,只有C/C++接近硬件似得操作使得可以最大限度的对硬件资源和算法进行优化。当然,代价就麻烦,学习起来十分困难。当然,大家又有人喷了,我又不是开发游戏引擎的。是的,你不用,不代表这些方面没有市场,有人要用。你可以用简单的,微软不是给你准备好了C#了吗?一会再说。微软近几年在C++上面的努力是有目共睹的,我简单的列举几个方面,VC6作为经典的一代,但有很多弊端,如语法检查不严,最头疼莫过于for(int i; i < 10; i++ )的定义,VC6是不支持的,但从VC7(2003)开始就立刻纠正了这个问题,对C/C++的支持越来越好,随着Borland的没落,微软成了最大的,实力最强的C/C++的编译器。2005当时是对C++标准支持最高的。由于MFC对界面支持不好,从2008SP1开始,微软收购了BCG界面库集成到MFC中,但那酸爽,实在是……,显示效果一团糟。所以从2010开始,微软估计从底层调整了界面部分,而且,最让我欣慰的是,VC6的经典Classwizard又回来了。至于2012、2015等新版本,不好意思,我没有过,无法评价。而且VC是个很庞大的东西,我也只是用到了仅有的一点点功能,很多功能都用不上,所以我的评价也不够客观。但仅从我用的这点功能就可以看出微软一直在进步。而且还可以看出,微软在C++的努力确实不多,为什么呢,因为毕竟面向的是少数的用户,所以从战略上讲,微软确实不能投入过大的经历。引擎类的公司有几个用MFC的?人家用自己的库。正式因为微软对MFC的定位,所以微软大力在发展C#,C#在跨平台,快速开发上确实有优势。
再说QT,QT是一个跨平台的库,QT相对MFC来说最大的优势就在于GUI的开发,我们也一直在想,对于微软这样的公司来说,使用拖拉控件的方式很容易的,而MFC在GUI方面一直没有努力。因为微软认识到,即使在这方面做好了,意义也不会很大,不是吗?不如把有限的资源,放到C#上。QT号称的跨平台其实意义不大,最大的好处在于GUI的快速开发。而且QT也有各种丰富的集成库,可以实现各种功能。QT我用的不多,所以不做过多的评价。
至于新手学什么,要看你做什么,如果是在校学生,时间比较充足,学什么都可以,MFC也不是打基础用的,基础是C/C++算法,算法数据结构之类的才是基础,MFC只是一个工具而已,就MFC而言,我也只是用对话框而已,什么单文档,多文档从来没用过,学MFC也不是全部系统的都学。如果是已经工作,或是面向工作,QT也是不错的选择,主要要根据所从事的项目来进行选择。
所以最后而言,我的结论就是,争论的意义不大。因为,QT和MFC就是两个工具,好比WPS和WORD是两个编辑器一样,无所谓哪个好哪个坏,选哪个都是一样的。你可以问一下使用QT和MFC的人,没有谁把整个全学会的,比如QT,都只是使用了一点小功能而已。然后从一个小功能切入,逐渐了解整个架构。大家都说QT的优势在于界面功能强大,仅此而已,其实,MFC中界面是麻烦了一些,但也不是不可接受。做过项目的都知道,程序中最重要的是架构,其次是算法,最后是界面实现。架构和算法都是独立于编程语言之外的,虽然我没学过QT,但我维护过QT的项目,可以很轻松的维护,以为具体的思想是一样的。所以,最后,无论MFC还是QT都不要互黑了,各有优劣,真正到项目里面,无论QT还是MFC都用不上,用的是基本的算法思想。
...全文
7852 55 打赏 收藏 转发到动态 举报
写回复
用AI写文章
55 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_JADE 2017-10-31
  • 打赏
  • 举报
回复
不知道,感觉MFC慢慢也少人用了。。。C++也难找工作
丁劲犇 2017-10-30
  • 打赏
  • 举报
回复
如果是消费类的,直接学Web吧
丁劲犇 2017-10-30
  • 打赏
  • 举报
回复
如果做行业应用,比如工具软件,类似,用于处理电子显微镜捕获视频的专业工具,建议直接Qt。
claider 2017-06-10
  • 打赏
  • 举报
回复
引用 3 楼 akirya 的回复:
[quote=引用 1 楼 sunnyloves 的回复:] 支持理性的讨论,MS近1年开放开源的势头很足,要是把MFC全部开源就好了,
MFC本来就带全部源码的[/quote]就是。MFC代码一直可以看啊。以前老用Source Insight看。
measuresoft 2016-10-25
  • 打赏
  • 举报
回复
重要的是能完成工作。 精一门,其它的都很容易上手的。
weikeli19 2016-06-03
  • 打赏
  • 举报
回复
一朵小小花 2016-06-02
  • 打赏
  • 举报
回复
fhw217 2016-05-13
  • 打赏
  • 举报
回复
赵4老师 2016-05-13
  • 打赏
  • 举报
回复
赵4老师 2016-05-13
  • 打赏
  • 举报
回复
fhw217 2016-05-12
  • 打赏
  • 举报
回复
lilingshui 2016-05-09
  • 打赏
  • 举报
回复
引用 34 楼 sdwalnut 的回复:
C++在某些方面的应用具有其它语言所不具备的优势。但是它有学习周期长,不擅长web开发等缺点,而且这些年,硬件性能的不断提高,在很多对资源、性能要求不是非常苛刻的地方,都用其它语言的开发包替代了。C++的应用范围越来越窄。 很多公司不招聘C++开发人员,或者只让其做一些插件、动态库,结果,真正要用C++解决一些难题时,要么无人可用,要么那些平时只做C++插件开发的人办不了。
说的是啊,现在热门的大多是前端,各种语言也层出不穷,C++人员的需求量也相对较少了。
核桃2000 2016-05-09
  • 打赏
  • 举报
回复
C++在某些方面的应用具有其它语言所不具备的优势。但是它有学习周期长,不擅长web开发等缺点,而且这些年,硬件性能的不断提高,在很多对资源、性能要求不是非常苛刻的地方,都用其它语言的开发包替代了。C++的应用范围越来越窄。 很多公司不招聘C++开发人员,或者只让其做一些插件、动态库,结果,真正要用C++解决一些难题时,要么无人可用,要么那些平时只做C++插件开发的人办不了。
用户 昵称 2016-05-09
  • 打赏
  • 举报
回复
引用 41 楼 zhao4zhong1 的回复:
[quote=引用 40 楼 jennyvenus 的回复:] [quote=引用 39 楼 zhao4zhong1 的回复:] 我能吐槽触摸屏不如键盘鼠标可靠吗?
不用吐槽,就是不可靠,所以只用在花钱的领域,不用在赚钱的领域。 [/quote] 我能吐槽手机电池不给力吗? 我能吐槽手机比台式机更容易摔坏吗? 我就要走在老路上,我就要回到老地方,啊哦,——《花房姑娘》[/quote] 俺已经致力于干这些事了,在俺的忽悠下,俺的同事都开始一起忽悠没有键盘的游戏不能玩,没有鼠标的游戏不能玩,以前有自--杀倾向的人,现在都尝试杀--人了。
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
引用 40 楼 jennyvenus 的回复:
[quote=引用 39 楼 zhao4zhong1 的回复:] 我能吐槽触摸屏不如键盘鼠标可靠吗?
不用吐槽,就是不可靠,所以只用在花钱的领域,不用在赚钱的领域。 [/quote] 我能吐槽手机电池不给力吗? 我能吐槽手机比台式机更容易摔坏吗? 我就要走在老路上,我就要回到老地方,啊哦,——《花房姑娘》
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
我能吐槽手机害了很多低头族吗? 我能吐槽手机让员工随时随地加班更容易导致过劳死吗?
用户 昵称 2016-05-09
  • 打赏
  • 举报
回复
引用 39 楼 zhao4zhong1 的回复:
我能吐槽触摸屏不如键盘鼠标可靠吗?
不用吐槽,就是不可靠,所以只用在花钱的领域,不用在赚钱的领域。
赵4老师 2016-05-09
  • 打赏
  • 举报
回复
我能吐槽触摸屏不如键盘鼠标可靠吗?
gz_qmc 2016-05-09
  • 打赏
  • 举报
回复
引用 37 楼 jennyvenus 的回复:
c++需求量没少,只是互联网那边的编程增加了,对于大部分人来说,学c/c++进度慢,起步工资低,当然学的人就少了。 qt没用过,跨平台不是理由,商用软件都是提供不同的版本,甚至娱乐软件也是提供不同的版本。 都说mfc做界面太费劲,一个不太大的程序中,界面就已经不是主要部分,而且界面美丑因人而异,要说win 95时代的程序放在今天多么漂亮,当然是太固执了,但是说苹果的界面多美观,恐怕不喜欢的人也大有人在。
这只兔子说的对,语气比较中性,好听 不像我,碰到某些人就火大
用户 昵称 2016-05-09
  • 打赏
  • 举报
回复
c++需求量没少,只是互联网那边的编程增加了,对于大部分人来说,学c/c++进度慢,起步工资低,当然学的人就少了。 qt没用过,跨平台不是理由,商用软件都是提供不同的版本,甚至娱乐软件也是提供不同的版本。 都说mfc做界面太费劲,一个不太大的程序中,界面就已经不是主要部分,而且界面美丑因人而异,要说win 95时代的程序放在今天多么漂亮,当然是太固执了,但是说苹果的界面多美观,恐怕不喜欢的人也大有人在。
加载更多回复(34)

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧