IT历史学家需要大写特写MFC曾经短暂的辉煌

封真忍 2015-09-14 09:11:04
完全没想到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曾经短暂的辉煌,考古学家需要考证这块化石的时候。

...全文
2703 52 打赏 收藏 转发到动态 举报
写回复
用AI写文章
52 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2018-11-19
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
吃饭用筷子啥时候变成“历史学家需要大写特写的曾经短暂的辉煌”啊?!


100000000年之后?
sevancheng 2018-11-19
  • 打赏
  • 举报
回复
楼主厉害,你会MFC么?
  • 打赏
  • 举报
回复
工作几年后,你自己积累的类库多了,就很方便了。有些领域,界面不重要,就算界面重要,直接用界面库,甚至html。
html 做界面,除了UI设计师 和 设计html的人用时多,没其它缺点。优点:好看,灵活(界面和实现相分离)
丁劲犇 2018-11-18
  • 打赏
  • 举报
回复
这是打赌吵架贴。某君老婆问,怎么才能引起论坛吵架?某君发帖,PHP是最好的语言。
许文君 2017-01-18
  • 打赏
  • 举报
回复
千年孤坟为什么总被挖?数百头母马为何半夜惨叫?连环QJ母猪案,究竟何人所为?数百只小母狗意外身亡的背后隐藏着什么?是性的爆发还是饥渴的无奈?是人格的扭曲还是道德的沦丧?让我们跟随镜头走进变态的内心世界。 敬请关注今晚八点年度巨献《挖坟人的不归路》
宰相孙悟空 2017-01-16
  • 打赏
  • 举报
回复
mfc是类库而已,只不过是个轮子仓库,你不爽完全可以自己封装win32,windows下你要说不用Win32才能显得你更有逼格。
副组长 2017-01-07
  • 打赏
  • 举报
回复
引用 39 楼 draculamx 的回复:
[quote=引用 38 楼 void_main_void 的回复:] 不过,MFC的你要说他烂。这点不可否认,数据显示的多的话2W条左右 容易崩。
显示什么数据2W条容易崩??能详细点么??[/quote]崩那是你用了容易崩的东西,不用就可以了。MFC 那些 Array 都不能用,很容易就崩溃。 还有CRgn等一类东西不上W就崩,不用就结了呗。 哥现在的项目有很多就是MFC,几百个G数据同时滚,那要是随便崩还得了?
SGUav 2017-01-04
  • 打赏
  • 举报
回复
界面是问题么?自从有了xtreme和bcg之后,问题无非是要不要花个$400+买个正版,以及准备付多少钱给美工
SGUav 2017-01-04
  • 打赏
  • 举报
回复
我只想说,我热爱MFC,过去,现在,可能还有将来一段很长的一段时间

而且,我还热爱VC6,没错,就是那个成为古董的VC6,当然,必要的时候用2012什么的重新编译一遍就完了

原因无它,快,界面简洁,使用方便,没错方便无比。

虽然现在有很大一部份时间花在MDK C++ / gcc 上,但我还是喜欢在MFC下的畅快淋漓和波澜壮阔

几万个数据?那是小case,下面这是130多万个数据,当然如果需要,还可以再加上很多很多。

这还只是个附属功能而已







赵4老师 2016-12-08
  • 打赏
  • 举报
回复
我这个显示2WW条数据都不会崩! http://download.csdn.net/detail/zhao4zhong1/7610833
赵4老师 2016-12-08
  • 打赏
  • 举报
回复
面向对象只是一种编程思想。 再抽象的编程语言,最后不都变成汇编代码了吗?我们完全可以说汇编语言是面向对象、脚本化、动态化、泛函化、并行化、分布化的语言。
vcminusminus 2016-12-07
  • 打赏
  • 举报
回复
引用 32 楼 gz_qmc 的回复:
楼主这种二逼 半瓶水也出来开香堂 真的够逗比的 首先,MFC不是一种语言,而是一种框架 其次,还在纠结框架问题的SB都还意识不到编程的本质 再次,编程本质就是数据结构和算法,纯数学问题 编程工具本身是结果吗?错,编出来的软件才是结果 决定结果的质量好坏在人,不在于工具, 所以现在C#开发的Windows程序已经能编译成native了,运行效率提高了1.6倍左右吧就是放屁 同样的硬件结构,代码运行效率只和指令精简程度有关系,玩汇编的都知道 你丫编译出来的指令要完成功能相同的事情还能离开芯片本身的指令集?还能编出火星指令来? 而指令集运行的效果就仅仅和指令选用的方式和组合有关系,最后还是归结到编译器本身的数据结构和算法。 所以啥鸡巴C#,JAVA,VC,VB,.Net等等等等就一堆忽悠人的名词,傻逼才拿这些名词来装算 工具的能力,就是他能做什么,不能做什么? 工具的先进,就是用他时候的方便程度而已 当一个东西在你手头,你要的结果都能实现,功能就不缺 当一个东西在你手头,你要的实现都很方便,功能就先进 当然,楼主是反驳MFC的 我是反驳楼主的 如果你们觉得反驳楼主就等于捧MFC 那么你们的这种逻辑思维基本可以告别编程了 还是那句话,编程=数据结构+算法 还再纠结语言和框架的,都是半瓶水
已经超出了语言的境界了!
赵4老师 2016-12-05
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
draculamx 2016-12-04
  • 打赏
  • 举报
回复
引用 38 楼 void_main_void 的回复:
不过,MFC的你要说他烂。这点不可否认,数据显示的多的话2W条左右 容易崩。
显示什么数据2W条容易崩??能详细点么??
void_main_void 2016-12-04
  • 打赏
  • 举报
回复
这种帖子又被挖出来了啊。我再来补一刀。 用过MFC,QT,DirectUI之类的,用过android studio,Eclipse。 这些玩意用啥完全就是看项目对UI的要求和难度而已。。项目对UI要求简单弄个MFC拖几个控件有啥不行。怎么快捷方便怎么来。 再说,自己搞不明白控件消息和事件响应真不要怪是MFC的问题。 当然,现在MFC确实除了老项目维护应该没什么人用了。不过MFC框架是开源的,配合侯杰老师的 深入浅出MFC 来学习阅读开源框架的源码是很好的开始。 不过,MFC的你要说他烂。这点不可否认,数据显示的多的话2W条左右 容易崩。 至于入门,如果你是学C/C++的话呢,然后看的《Windows核心编程》我还真建议是玩玩MFC。必进到VS2017微软还是继续支持了MFC框架,下载了VS就能直接建立对话框直接拖控件来搞。不过还是建议看看《Windows程序设计第五版》的第一部分,搞明白什么时候消息循环和消息事件。搞明白就足够了。 然后玩MFC绝对⑥ 如果不是以C/C++入门的话当然没必要在先学用MFC。
副组长 2016-12-03
  • 打赏
  • 举报
回复
引用 29 楼 zhao4zhong1 的回复:
[quote=引用 26 楼 gordon3000 的回复:] 不过想想MFC还是挺强大,被黑10多年了,MFC还是MFC。 Windows本身也是这样,就这么持续被黑还是照样Windows。有几个敢说不用Windows的。 我到想起来大学教育都学汇编,那东西谁也不用来写代码了,还是得学。
我用,你能把我咋?!
#include <stdio.h>
float data[500];
int i;
void main() {
    for (i=0;i<500;i++) {data[i]=1.0f;printf("%g\n",data[i]);}
    __asm {
        push ecx
        push edi
        mov ecx,500
        mov eax,0xBF800000 //-1.0f
        lea edi,data
        rep stosd
        pop edi
        pop ecx
    }
    for (i=0;i<500;i++) printf("%g\n",data[i]);
}
[/quote]你牛 哥也是拿来主义,啥好用就用啥。管它MF东MF西。
gz_qmc 2016-11-30
  • 打赏
  • 举报
回复
我能不能判断,依据楼主标题的推导 楼主就是吃不着MFC的葡萄那种人 看,老子不用MFC,不照样混出来了 那么,楼主可能曾经神话过MFC 而且,楼主没对MFC有啥感觉 结果,自己被自己创造的神话涮了一把 然后,自己恨自己曾经创造的神话 最后,为了击败那个耻辱,必须继续创造新的神话 那么,楼主明天会不会恨新造的神话呢? 其实,自欺欺人的人恨啥都是表象,本质是恨自己,恨自己愚弄了自己
gz_qmc 2016-11-30
  • 打赏
  • 举报
回复
另外说一个逻辑上的问题 基本上没有任何人特别强调MFC怎么怎么好 反倒是一大批人特别强调MFC怎么怎么的不好 从楼主的标题看,他怎么就有那种感觉存在呢?大家思考一下
用户 昵称 2016-11-30
  • 打赏
  • 举报
回复
如果你不能掌握一门能让你使用20年的语言,编程的人生是失败的。20过后呢,我是干不动了。
赵4老师 2016-11-30
  • 打赏
  • 举报
回复
引用 31 楼 maoxuechun 的回复:
正在学习MFC
在MSDN98中搜“Alphabetical List of MFC Samples” MSDN98_1.ISO http://pan.baidu.com/s/1dDF41ix, MSDN98_2.ISO http://pan.baidu.com/s/1bnGo0Vl
加载更多回复(32)

1,649

社区成员

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

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