现在MFC还流行吗?
现在MFC还流行吗?
-----
网友解答:
-----
看了一下,这个问题,几乎100%的回复者说MFC过时了,这么大概率的回答让我很吃惊。
先说结论,MFC不流行,但是没有过时。
众所周知,C++难学易用,是一门经典高效的编程语言。MFC作为Windows编程框架,曾经有一大批拥趸者。但是微软并没有在MFC上做更多的创新,比如,没有像第三方公司的控件一样,在界面上发布新的工具。微软把精力投入到C#上去了,甚至搞出了Visual C++ .NET这种帮助MFC程序员向C#过渡的工具。
微软搞.NET的初衷,是为了与JAVA竞争,是为了在跨平台应用上制衡JAVA。后来互联网快速发展,桌面应用反倒是成了边缘化小众的需求,大量码农跻身于互联网公司,C++和C#被冷落了,用户占比在日益减少。
现在的桌面开发,除了C++就是C#,其它还不够主流(我可能孤陋寡闻了,国外没用过VS的程序员也有一大把)。C++发展了C11C14C17,这部分便利被大多数码农忽略了。第三方控件也极大地填补了MFC界面上的不足。但是C++和MFC对新手要求高,没有C#上手快,这是毋庸置疑的。在当今追求效率的年代,年轻人无疑会选择C#(更多的年轻人会扑向互联网,因为那个行业薪水更高)。
但是,C#的随意性会严重破坏程序员的良好素养,一个不自律的程序员会写出一大堆混蛋代码,让后续的程序员,或者让一个C++程序员哭爹喊娘,直接崩溃。
我手头上就有一个项目,几位“前辈们”写的6000多行的.cs文件有两三个,变量漫山遍野,数据处理层次不分,界面迟缓,而且不懂行业应用,充其量算作实验室的半成品,几乎没有实际价值。
C#的便利是可以更快捷、更加无节操地引用第三方控件,这样做的后果是,爱偷懒的程序员会过分依赖各种控件,强行把不合适的控件应用于复杂的工业领域。这在C++MFC程序员看来,是不可想象的。
说多了,我的意思是,互联网行业的程序员不适合讨论这个问题。桌面应用,MFC或者C++程序员并不是过时的,差别在于,一个C#程序员三两个月就能上手,但C++程序员需要三五年时间沉淀自己。
无论做什么,都要有良好的规划,严格自律,不能拼凑代码。急功近利,只能制造一堆垃圾。
-----
网友解答:
-----
编程老兵告诉你:MFC已经不流行了,但没有绝迹。新手绝对不推荐学习和使用,不跨平台,学习曲线陡,周期长,上手慢,微软已不再支持,现在微软大力推荐的是c#,正在做跨平台的事,现在一部分代码可在windows和Linux下均可运行。
有一部分做工控的,说c#开发的程序运行效率低,这个不能一概而论,很多测试并不支持此观点,因为.net语言支持的新特性,比如更加高效地支持多内核并行编程,MFC是不支持的,当然你也可以说直接用c++调用API函数,但那已不是MFC的功劳了。再者工控机如果真的需要高效控制,其实嵌入式操作系统更合适,譬如Linux,此时MFC更排不上用场,需要高效控制的程序,甚至不需要界面,MFC框架笨重,不如直接调底层API来得快,编写驱动程序需要稳定高效,但MFC搞不了驱动程序。labview新版本的二次开发,甚至只支持.net语言的开发,vc++被无视了。
之所以MFC没淘汰,一是有一部分老项目需要维护,另外有一部分特殊软件确实需要MFC编写,譬如编写CAD或者图像处理软件,MFC在图像图形处理方面的优势还是比.net程序更合适,但没人做过这方面的性能测试和对比,毕竟那些老的软件,没人愿意再用.net重写一遍。
总之,别抱残守缺,另外,你到一定层次,语言已不再是重要的东西,只是工具而已,你要解决的是业务问题,你还在纠结语言说明你的业务水平并不高,例如只是搞读写数据库,或者写些Modbus这种串口或网络通信的低端程序而已。譬如,你可以研究癌症病人的症状,将它们归结出各种“指纹”,然后通过人工神经网络或人工智能的学习,有效地推测出哪些患者可能患了癌症,这样你的目光就不会局限于语言这个低层次上面了,你会想着用语言快速实现你的业务需求,此时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目前还有一定的市场领域一样!
-----
网友解答:
-----
1.答案。
绝对不流行。
2.原因。
大家都知道市面上编程软件五花八门,强弱不一,又是跨平台,又是高效率的。二十几年前的产品自然竞争不过,所以微软大力推出与推广c sharp,力压群雄!至于mfc也只是维护再搞些收购,如下图它收购的扩展库界面。
3.建议。
我06年接触mfc,使用它编写运动卡,各种采集卡啥的,流不流行不重要,你工作赚钱需要它才重要。各硬件厂家,软体库厂家都很好的支持mfc,近些年也开始提供c sharp开发资料。所以选择就在两者。
4.总结。
c sharp是真的好。
工业控制多考虑向下兼容,你得考虑老旧的设备,项目,会c sharp的很难学mfc,反过来很极为简单。所以先学mfc再过度c sharp 更明智些。
-----
网友解答:
-----
大型的工业级软件只要是有界面的全部是MFC。如UGNX,CATIA,CREO(PROE),CAD,PS,CORELDRAW......如果用wpf,winform。。。后果不堪设想。不说net没有大型桌面应用的经验,更不说在这样的大型软件它的性能如何的低下。C语言老吧,当你祖祖了,但它是计算机的基础。MFC就是WINDOWS界面的基础。
我要打开一个600M的文本文件且是一行行的长短不一,对,用户就要那么大,老机子上一次差不多吃掉一半内存了,超大型的数控加工代码,用户的电脑老的新的都有,你不能要求用户都用64位最新的Win10操作系统,你没有权利要求他们那么做,你做的只能去适应他们,否则他就不用你的产品。我用C#和C++都试过打开超大文本,要立即显示且能立即能浏览各行,你不能去分段读取,两者速度没法相比,你在老的winXP的工控机上加载个超过3秒用户就烦了。
工控软件首先讲究的是性能,界面华丽只是锦上添花,如果影响性能,你就舍弃华丽的界面吧。这跟生活消费类软件根本不一样。
-----
网友解答:
-----
当你这会还盯着mfc,说明你的技术视野太窄了,好好思考下吧!
-----
网友解答:
-----
以下内容给小白观看,不做技术之争。
用过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很方便,效率也高,主要分部在有实力的大企业,积累多年,有自己成熟的技术产品体系,搞互联网项目应用开发的大多是用java,后台各种服务部署五花八门,又跨平台,不过绝大多数属于快餐式应用,对java的技术使用也比较有限,像阿里巴巴、百度等少数企业就属于高端技术应用了,总之,学好MFC不会差,学精通不会没人要![祈祷][祈祷]
-----
网友解答:
-----
当然不流行了,微软20年前的东西,还记得当时大学还用mfc做过一个聊天工具,现在基本上没有公司用这个来开发新产品吧,可能有一些公司需要用mfc工程师去维护曾经用mfc开发的产品。现在学这个没有前途了,就算你学的很优秀,外面用这个的也很少,公司也不会给你开很高的工资,赶紧换一个框架来学习
-----
网友解答:
-----
那要看你喜不喜欢。
-----
网友解答:
-----
读书的时候曾深入研究过MFC,真正入门却是从定制控件开始,然后自绘组件,然后根据xml动态绘制页面布局,然后根据css动态生生成控件,然后是lua调用控件库(玩魔兽世界时,为了帮助掌握团队动态时学会的,自己是团长)。
二年的时间过去,最终发现自己本质上实现了一个lua语言版本的浏览器。
还为了挣外快,写了一个快速页面编辑器,当然这是后话,之所以花费这么大的力气来写这些废话,其实是想告诉你。
MFC确实不流行了,但MFC也是最好的承接微软下一代产品思想的工具,简直是全世界最好的工程师手把手的指导如何编写界面库,至少一直到2022年的今天,以前读书时实现的那一套如今依旧没有过时,macOS,win11里面的那些,从底层上来看,原理依旧没有变化。
那么现在,是否要学习mfc,你心里应该有答案了吧?
最后补充一下,mfc的失落最重要的原因是效率太低了。
------------------
推荐阅读:
下一篇: 金陵十二钗正册都有谁?