今天看到CSDN上這么一篇《 徹底放棄沒落的MFC,對新人的忠告!》, 作為一個一直在Windows上搞客戶端開發(fā)的C++程序員,幾年前也有過類似的隱憂(參見 落伍的感覺), 現(xiàn)在卻有一些不同的想法。
首先,個人職業(yè)發(fā)展是否成功, 技術(shù)只是其中一小塊,尤其是在大公司, 更多的是依靠所謂的軟實力。作為一個對技術(shù)有追求的工匠,我們下面重點說技術(shù)相關(guān)的。
現(xiàn)在回頭看計算機行業(yè)的發(fā)展,我們看到不同的發(fā)展階段:
1. PC時代,這個時代離我們并不遙遠, 也有是2000年前后, 該時代最鮮明的特征是Windows操作系統(tǒng),Office軟件,Exchange郵件服務(wù)器等,還有Windows平臺上的各種通訊娛樂工具以及行業(yè)軟件等。這個時代大部分都是和Windows操作系統(tǒng)相關(guān), 這個時代的開發(fā)工具也是百花齊放:VC, VB, Delphi, PB, 以及后來的C#, 本質(zhì)上都是Windows API。
2。PC互聯(lián)網(wǎng)時代, 這個時代和PC時代很大程度是重合的,因為互聯(lián)網(wǎng)客戶端瀏覽器的載體還是PC, 這個時代最顯著的特征是Google, Baidu, Facebook,淘寶等的興起, 網(wǎng)絡(luò)搜索,網(wǎng)絡(luò)社交, 網(wǎng)上購物成為時髦。這個時代說白一點就是怎么做好一個網(wǎng)站,開發(fā)工具包括后端和前端:ASP,JSP, Java, PHP,html, JS等, 本質(zhì)上是http協(xié)議及html.
3. 移動互聯(lián)網(wǎng)時代, 手機本來只是打電話和發(fā)短信用的, 蘋果iPhone改變了這一切,開啟了智能手機的新時代。現(xiàn)在我們通常說的移動開發(fā)主要是指iPhone和Android開發(fā),以及少量的WinPhone和BlackBerry開發(fā)。移動互聯(lián)相對于PC互聯(lián),有幾點不同:首先移動時代能夠讓人充分利用空閑時間片,社交(微薄、微信)和游戲娛樂都很方便;另外移動手機有位置定位功能, 導(dǎo)致了O2O創(chuàng)業(yè)潮的興起和成功(比如uber)。移動App的開發(fā)語言各異(Objective-C, Java, C++, C#)等都有, 本質(zhì)上是一個客戶端軟件。
4。未來, 有人說是互聯(lián)網(wǎng)+,有人說是萬物互聯(lián)(智能手環(huán),智能路由,智能家電)...
從上面我們可以看到, 每個時代都有自己的特色,一個時代的興起并不會完全取代另一個時代:PC還是我們的主要辦公工具, 手機是我們隨身的通訊和娛樂工具,誰都沒法完全取代誰。
互聯(lián)網(wǎng)時代的技術(shù)體系無非是分為服務(wù)端和客戶端:
(1)服務(wù)端來說, 如網(wǎng)站后臺,主要是如何高效從海量數(shù)據(jù)中的返回用戶需要的數(shù)據(jù), 也就是所謂的大數(shù)據(jù)技術(shù)(如Hadoop,spark);如果是IM后臺, 常用開源的XMPP服務(wù)器(Openfire, Ejabberd); 另外游戲服務(wù)器,視頻服務(wù)器很多技術(shù)其實都差不多, 主要都是提供Session連接和邏輯處理。
(2)客戶端,客戶端主要分為Web客戶端和Native客戶端。
Web客戶端就是所謂的前端開發(fā), html5前幾年被吵得很熱,這幾年有些降溫,因為Web UI的用戶體驗和Native還是有挺大差異, 尤其是在移動手機上。做產(chǎn)品一定要提供最好的用戶體驗才能在市場中獲勝, 所以除非Web的其他優(yōu)勢大大超越了用戶體驗的需求, 它才會被考慮使用。這也是淘寶前端用Web實現(xiàn), 而QQ前端用Native C++搞的原因,想想淘寶如果用C++搞個客戶端會怎么樣,頁面三天兩頭變怎么吃的消。
下面我們重點說Native客戶端開發(fā), 以前寫過一篇《客戶端架構(gòu)設(shè)計的簡單總結(jié)》,那時主要是搞Windows, 現(xiàn)在搞跨平臺之后,發(fā)現(xiàn)各個平臺的客戶端基本上都是大同小異。我們會發(fā)現(xiàn)客戶端的大部分技術(shù)都是跨平臺的, 而且很多技術(shù)都是開源的。比如數(shù)據(jù)存儲用SQLite, XMPP通訊用Gloox, Web交互用LibCurl, 數(shù)據(jù)打包用Protocol Buffer, socket通訊用boost asio,另外大部分都是邏輯代碼和專業(yè)技術(shù)(如H.264)。 我們會發(fā)現(xiàn)除了UI代碼,客戶端80%的代碼都是可以用跨平臺C++代碼搞定(Windows, Mac, ios, android, Linux, BlackBerry)。 我們這里要做的就是把框架搭好,協(xié)議定好,層次分好,模塊切割好,把UI和邏輯分離好。據(jù)我所知微軟的Office除了UI部分,PC和移動版也是用這總方式實現(xiàn)的跨平臺。
回到本文剛開始的問題, 初學(xué)者要不要學(xué)MFC? 個人覺得先要看自己定位的開發(fā)平臺, 如果是搞Windows, 那也應(yīng)該先從Windows API學(xué)起,根據(jù)工作需要決定要不要學(xué)MFC 。總之,無論學(xué)什么,先深入一個平臺, 從C++編譯器到CRT運行庫, 再到操作系統(tǒng), 從用戶態(tài)API到內(nèi)核和驅(qū)動,越深越好,然后再跳出這個平臺,接觸其平臺,會發(fā)現(xiàn)各個平臺基本都是大同小異。
posted on 2015-09-18 00:49
Richard Wei 閱讀(4034)
評論(10) 編輯 收藏 引用 所屬分類:
行業(yè)動態(tài)