03.08 现在MFC还流行吗?

网游魅力达人


不流行,但是也没有灭绝!


这个远古时代的产品,如今就连他的亲爹微软也不再看好,MFC=没饭吃!

  • 如果你还是在校学生,建议你了解MFC的思想即可,不必去深究;C++的界面库,去学学QT,不是更香吗?国产化当头,相信QT的市场会更加广阔!

  • 如果你已经工作,并且很不幸,目前的开发以某一祖传代码为基础,且是MFC累积的,那么我只能建议你业余时间学习掌握下QT,随时准备跑路吧!


为什么力推QT呢?答案很简单,对于C++而言,如果你主攻客户端方向,如果你不懂QT,恐怕说不过去了吧。而且它语法简洁(相比MFC),跨平台支持,而且推出的QSS可以让我们像Web开发中CSS那样,愉快的进行界面UI的布局了。

下面就是一张采用QT提供的QSS


为什么说MFC还没有灭绝呢?其实现在很多特定行业还是有一定需求的。不怕各位看官笑话,我司的产品目前就是搭载在MFC这套代码框架上,虽然部分界面采用了QT重构,但是整体仍以MFC为主,当然,我没有参与产品的开发任务。


在这里举一个简单的例子,我们以某勾为例,输入MFC关键字,全国范围内职位还是有的,虽然不多,当然一家的数据不够准确,仅供参考。据我所知,很多的非互联网行业MFC还是有用到的,就像XP目前还有一定的市场领域一样!


一个程序员的奋斗史


看了一下,这个问题,几乎100%的回复者说MFC过时了,这么大概率的回答让我很吃惊。

先说结论,MFC不流行,但是没有过时。

众所周知,C++难学易用,是一门经典高效的编程语言。MFC作为Windows编程框架,曾经有一大批拥趸者。但是微软并没有在MFC上做更多的创新,比如,没有像第三方公司的控件一样,在界面上发布新的工具。微软把精力投入到C#上去了,甚至搞出了Visual C++ .NET这种帮助MFC程序员向C#过渡的工具。

微软搞.NET的初衷,是为了与JAVA竞争,是为了在跨平台应用上制衡JAVA。后来互联网快速发展,桌面应用反倒是成了边缘化小众的需求,大量码农跻身于互联网公司,C++和C#被冷落了,用户占比在日益减少。

现在的桌面开发,除了C++就是C#,其它还不够主流(我可能孤陋寡闻了,国外没用过VS的程序员也有一大把)。C++发展了C11/C14/C17,这部分便利被大多数码农忽略了。第三方控件也极大地填补了MFC界面上的不足。但是C++和MFC对新手要求高,没有C#上手快,这是毋庸置疑的。在当今追求效率的年代,年轻人无疑会选择C#(更多的年轻人会扑向互联网,因为那个行业薪水更高)。

但是,C#的随意性会严重破坏程序员的良好素养,一个不自律的程序员会写出一大堆混蛋代码,让后续的程序员,或者让一个C++程序员哭爹喊娘,直接崩溃。

我手头上就有一个项目,几位“前辈们”写的6000多行的.cs文件有两三个,变量漫山遍野,数据处理层次不分,界面迟缓,而且不懂行业应用,充其量算作实验室的半成品,几乎没有实际价值。

C#的便利是可以更快捷、更加无节操地引用第三方控件,这样做的后果是,爱偷懒的程序员会过分依赖各种控件,强行把不合适的控件应用于复杂的工业领域。这在C++/MFC程序员看来,是不可想象的。

说多了,我的意思是,互联网行业的程序员不适合讨论这个问题。桌面应用,MFC或者C++程序员并不是过时的,差别在于,一个C#程序员三两个月就能上手,但C++程序员需要三五年时间沉淀自己。

无论做什么,都要有良好的规划,严格自律,不能拼凑代码。急功近利,只能制造一堆垃圾。


一枚老头


大型的工业级软件只要是有界面的全部是MFC。如UGNX,CATIA,CREO(PROE),CAD,PS,CORELDRAW......如果用wpf,winform。。。后果不堪设想。不说net没有大型桌面应用的经验,更不说在这样的大型软件它的性能如何的低下。C语言老吧,当你祖祖了,但它是计算机的基础。MFC就是WINDOWS界面的基础。

我要打开一个600M的文本文件且是一行行的长短不一,对,用户就要那么大,老机子上一次差不多吃掉一半内存了,超大型的数控加工代码,用户的电脑老的新的都有,你不能要求用户都用64位最新的Win10操作系统,你没有权利要求他们那么做,你做的只能去适应他们,否则他就不用你的产品。我用C#和C++都试过打开超大文本,要立即显示且能立即能浏览各行,你不能去分段读取,两者速度没法相比,你在老的winXP的工控机上加载个超过3秒用户就烦了。

工控软件首先讲究的是性能,界面华丽只是锦上添花,如果影响性能,你就舍弃华丽的界面吧。这跟生活消费类软件根本不一样。


夏日风41


1.答案。

绝对不流行。

2.原因。

大家都知道市面上编程软件五花八门,强弱不一,又是跨平台,又是高效率的。二十几年前的产品自然竞争不过,所以微软大力推出与推广c sharp,力压群雄!至于mfc也只是维护再搞些收购,如下图它收购的扩展库界面。

3.建议。

我06年接触mfc,使用它编写运动卡,各种采集卡啥的,流不流行不重要,你工作赚钱需要它才重要。各硬件厂家,软体库厂家都很好的支持mfc,近些年也开始提供c sharp开发资料。所以选择就在两者。

4.总结。

c sharp是真的好。

工业控制多考虑向下兼容,你得考虑老旧的设备,项目,会c sharp的很难学mfc,反过来很极为简单。所以先学mfc再过度c sharp 更明智些。



工控编程


以下内容给小白观看,不做技术之争。

用过MFC之后的工程师再去用其他的技术,框架,如Qt,WPF 之类的,都会觉得非常友好。当然后面这俩现在也没多大的动静了。

11年的时候,智能手机不像现在尚未普及,开发给普通用户使用的软件,大部分都集中在PC电脑端,而用户系统绝大多数是Windows,所以如果要开发一个普通用户在电脑上用的应用程序,比如一个杀毒软件,一个邮件工具,就要做成一个exe格式的可执行文件,用户双击即可打开。

那时候开发人员首选的就是微软的visualStudio系列开发套件,不得不说这个是傻瓜式,超赞的开发工具,可以选择创建纯窗口应用,也就是那种打开后一个黑洞洞的命令行看着跟黑客帝国一样哗啦啦跑运行信息的,也可以创建带用户界面的应用,此时大多数人首选就是MFC框架,这毕竟是微软官方提供的库,当然也有高手喜欢用跨平台的Qt,那这个不在我们的讨论范围。

回到MFC,它提供了非常标准的控件,举个例子,比如说我们要做一个简单的某某管理系统,你要编辑用户姓名用编辑框。要选择性别可以用单选框等等,这个思路跟安卓iOS开发是一样的,提供标准控件拿来开箱即用。

在Windows应用开发中,用户可以自定义消息进行传递和处理,系统自身也会有大量的系统消息。比如,用户鼠标左键点击事件,窗口缩放事件,键盘按钮按下和起来事件,那么这些事件可以被捕获进而处理。

MFC是非常优秀的框架,但是相对于JAVA和Python等语言,上手的难度要高,学习曲线相对陡峭。记得当初为了做一个漂亮的界面出来,当时自定义了很多控件,重绘了控件的外形和事件。比如要做一个透明按钮,一个带光晕的按钮。需要接管系统gdi绘图,处理各类传导到控件里的消息,为了做出mfc的漂亮界面,还要去深入了解下一些相对底层一些的东西。

当初为了做界面,我们还深入研究了大神们自己开源的duilib,以及迅雷放出来的一个界面库。

那么这样一来,也就是说开发人员需要花费大量的时间和精力去研究非业务层的东西。这个对于企业来说,是生产力和效率的低下。同样一个给所有订阅的用户发通知邮件的功能,你用Python和JAVA来做直接用现成的邮件库只要几分钟,你用c++试试你要多久?这是开发效率决定的。

另外一点也很恐怖,c++的一个特性决定了菜鸟是很难驾驭它的,就是内存管理,谁申请谁释放。如果你使用了第三方的界面库,刚好这个库的作者在某些地方申请了内存,一点一点内存泄露没释放,时间长了内存占用越来越多,系统就崩溃了!所以以前很多电脑桌面应用程序用着用着就卡死了,不动了,然后就把电脑都拖死机了。而JAVA,内置强大的垃圾清理体系,很多JAVA程序员搞了几年都不知道还有内存分配一说,你说,是不是轻松了好多?这是产品的安全性和稳定性决定的。不是这门语言不好,而是真正能用好它的人太少。

再加上移动互联网的浪潮过来,Pc端的应用已经没有太多的增长了,上一个现象级的非游戏类PC应用你说的上来吗?

再加上现在网络的提速,web交互技术的发展,很多本来cs架构的系统都升级到bs架构,不需要做桌面应用程序,当然无需安装,无需上门维护,不会闪退崩溃,也不需要考虑系统的兼容性,开发成本低,开发效率高。

种种因素结合,MFC逐渐式微不是没有道理的,但不能说是因为这个语言框架或技能不好,而是时代在前行和发展。

计算机语言也是一样,有一些会被遗忘在历史长河,有一些如erlang这种被遗忘多年了却又因为大数据兴起而又被重新引发兴趣的。

语言都是工具,工具的目的都是为了快速解决问题,流行是因为当前的环境和时机需要它。如果感觉不流行了,也要赶紧找到当前的大趋势,否则,空有屠龙之术,没有施展之地。


老居


MFC的时代已经过去了,就像白胡子说的,这个时代已经没有我的位置了。

MFC多年不更新不说,她赖以存在的Win32也一并老旧。MFC UI编程一个是界面老旧,数据库接口原始难用,COM,Activex被微软封禁,作为继任的.NET都快淘汰了,MFC的处境可想而知。

这些年,微软有背叛Windows,投降Linux的趋势,所以MFC的机会只存在于那种外包的老旧系统维护工作中。

不管是嵌入式还是服务器,都是Linux的天下,移动端是Android或IOS,Linux下的编程还能吃上十年,而作为桌面应用的开发框架MFC,现在谁还在意呢?

当然,如果要学习设计模式,MFC还是一个宝藏可以挖掘的,如果时间足够可以钻研钻研,她的MVC的实现还是挺强大的。


IOT编程


搞基础桌面平台之类产品的用MFC很方便,效率也高,主要分部在有实力的大企业,积累多年,有自己成熟的技术产品体系,搞互联网项目应用开发的大多是用java,后台各种服务部署五花八门,又跨平台,不过绝大多数属于快餐式应用,对java的技术使用也比较有限,像阿里巴巴、百度等少数企业就属于高端技术应用了,总之,学好MFC不会差,学精通不会没人要![祈祷][祈祷]


追求卓越返璞归真


当然不流行了,微软20年前的东西,还记得当时大学还用mfc做过一个聊天工具,现在基本上没有公司用这个来开发新产品吧,可能有一些公司需要用mfc工程师去维护曾经用mfc开发的产品。现在学这个没有前途了,就算你学的很优秀,外面用这个的也很少,公司也不会给你开很高的工资,赶紧换一个框架来学习


小罗在厦门


现在上位机Mfc据说,已经不怎么用了。

主要用的是QT,Labview等工具。

但是,还有很多软件是用的MFC.


人生处处惹尘埃


和windows底层打交道,mfc就是一把钥匙,就像你可以把车外形做的最漂亮,但是发动机什么的还是原来那些东西。但是你非要用mfc做界面,那就是自讨苦吃,非要用手术刀切西瓜


分享到:


相關文章: