今天看到CSDN上這麼一篇《 完全放棄沒落的MFC,對新人的忠告!》, 做爲一個一直在Windows上搞客戶端開發的C++程序員,幾年前也有過相似的隱憂(參見 落伍的感受), 如今卻有一些不一樣的想法。html
首先,我的職業發展是否成功, 技術只是其中一小塊,尤爲是在大公司, 更多的是依靠所謂的軟實力。做爲一個對技術有追求的工匠,咱們下面重點說技術相關的。
如今回頭看計算機行業的發展,咱們看到不一樣的發展階段:
1. PC時代,這個時代離咱們並不遙遠, 也有是2000年先後, 該時代最鮮明的特徵是Windows操做系統,Office軟件,Exchange郵件服務器等,還有Windows平臺上的各類通信娛樂工具以及行業軟件等。這個時代大部分都是和Windows操做系統相關, 這個時代的開發工具也是百花齊放:VC, VB, Delphi, PB, 以及後來的C#, 本質上都是Windows API。
2。PC互聯網時代, 這個時代和PC時代很大程度是重合的,由於互聯網客戶端瀏覽器的載體仍是PC, 這個時代最顯著的特徵是Google, Baidu, Facebook,淘寶等的興起, 網絡搜索,網絡社交, 網上購物成爲時髦。這個時代說白一點就是怎麼作好一個網站,開發工具包括後端和前端:ASP,JSP, Java, PHP,html, JS等, 本質上是http協議及html.
3. 移動互聯網時代, 手機原本只是打電話和發短信用的, 蘋果iPhone改變了這一切,開啓了智能手機的新時代。如今咱們一般說的移動開發主要是指iPhone和Android開發,以及少許的WinPhone和BlackBerry開發。移動互聯相對於PC互聯,有幾點不一樣:首先移動時代可以讓人充分利用空閒時間片,社交(微薄、微信)和遊戲娛樂都很方便;另外移動手機有位置定位功能, 致使了O2O創業潮的興起和成功(好比uber)。移動App的開發語言各異(Objective-C, Java, C++, C#)等都有, 本質上是一個客戶端軟件。
4。將來, 有人說是互聯網+,有人說是萬物互聯(智能手環,智能路由,智能家電)...
從上面咱們能夠看到, 每一個時代都有本身的特點,一個時代的興起並不會徹底取代另外一個時代:PC仍是咱們的主要辦公工具, 手機是咱們隨身的通信和娛樂工具,誰都無法徹底取代誰。
互聯網時代的技術體系無非是分爲服務端和客戶端:
(1)服務端來講, 如網站後臺,主要是如何高效從海量數據中的返回用戶須要的數據, 也就是所謂的大數據技術(如Hadoop,spark);若是是IM後臺, 經常使用開源的XMPP服務器(Openfire, Ejabberd).
(2)客戶端,客戶端主要分爲Web客戶端和Native客戶端。
Web客戶端就是所謂的前端開發, html5前幾年被吵得很熱,這幾年有些降溫,由於Web UI的用戶體驗和Native仍是有挺大差別, 尤爲是在移動手機上。作產品必定要提供最好的用戶體驗才能在市場中獲勝, 因此除非Web的其餘優點大大超越了用戶體驗的需求, 它纔會被考慮使用。這也是淘寶前端用Web實現, 而QQ前端用Native C++搞的緣由。
下面咱們重點說Native客戶端開發, 之前寫過一篇《
客戶端架構設計的簡單總結》,那時主要是搞Windows, 如今搞跨平臺以後,發現各個平臺的客戶端基本上都是大同小異。咱們會發現客戶端的大部分技術都是跨平臺的, 並且不少技術都是開源的。好比數據存儲用SQLite, XMPP通信用Gloox, Web交互用LibCurl, 數據打包用Protocol Buffer, socket通信用boost asio。 咱們會發現除了UI代碼,客戶端80%的代碼都是能夠用跨平臺C++代碼搞定(Windows, Mac, ios, android, Linux, BlackBerry)。 咱們這裏要作的就是把框架搭好,協議定好,層次分好,模塊切割好,把UI和邏輯分離好。據我所知微軟的Office除了UI部分,PC和移動版也是用這總方式實現的跨平臺。
回到本文剛開始的問題, 初學者要不要學MFC? 我的以爲先要看本身定位的開發平臺, 若是是搞Windows, 那也應該先從Windows API學起,根據工做須要決定要不要學MFC 。總之,不管學什麼,先深刻一個平臺, 從C++編譯器到CRT運行庫, 再到操做系統, 從用戶態API到內核和驅動,越深越好,而後再跳出這個平臺,接觸其平臺,會發現各個平臺基本都是大同小異。
http://www.cnblogs.com/weiym/p/4818088.html