現在MFC還流行嗎?

網遊魅力達人


看了一下,這個問題,幾乎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=沒飯吃!

  • 如果你還是在校學生,建議你瞭解MFC的思想即可,不必去深究;C++的界面庫,去學學QT,不是更香嗎?國產化當頭,相信QT的市場會更加廣闊!

  • 如果你已經工作,並且很不幸,目前的開發以某一祖傳代碼為基礎,且是MFC累積的,那麼我只能建議你業餘時間學習掌握下QT,隨時準備跑路吧!


為什麼力推QT呢?答案很簡單,對於C++而言,如果你主攻客戶端方向,如果你不懂QT,恐怕說不過去了吧。而且它語法簡潔(相比MFC),跨平臺支持,而且推出的QSS可以讓我們像Web開發中CSS那樣,愉快的進行界面UI的佈局了。

下面就是一張採用QT提供的QSS


為什麼說MFC還沒有滅絕呢?其實現在很多特定行業還是有一定需求的。不怕各位看官笑話,我司的產品目前就是搭載在MFC這套代碼框架上,雖然部分界面採用了QT重構,但是整體仍以MFC為主,當然,我沒有參與產品的開發任務。


在這裡舉一個簡單的例子,我們以某勾為例,輸入MFC關鍵字,全國範圍內職位還是有的,雖然不多,當然一家的數據不夠準確,僅供參考。據我所知,很多的非互聯網行業MFC還是有用到的,就像XP目前還有一定的市場領域一樣!


一個程序員的奮鬥史


大型的工業級軟件只要是有界面的全部是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=Mcdonald + KFC。我常吃,不會過時


孤獨的美食家正本


和windows底層打交道,mfc就是一把鑰匙,就像你可以把車外形做的最漂亮,但是發動機什麼的還是原來那些東西。但是你非要用mfc做界面,那就是自討苦吃,非要用手術刀切西瓜


分享到:


相關文章: