C++最大的敵人是它的過去
在過去的幾年裡,我們談到了關於“C++的復興”。我們不得不承認微軟是這項運動中主要參與者,我記得在Craig Symonds和Mohsen Agsen在視訊中提到了這件事。
在2011年,微軟寫了許多文章來宣佈C++的迴歸,並且眾多微軟專家如Herb Sutter在很多會議上解釋了為什麼C++會重新崛起,主要原因是現代C++的推廣使用。而同一時間。C++11標準的認可使我們重新把C++作為一門新的語言來討論。
然而,截至到2011年,C++已經有超過30年的歷史了。因此,讓開發人員相信關於新的C++已經簡化了過去許多令人失望的用法,而是使用了一種改進了C++程式碼的全新方法不是一件容易的事情。
讓我們以記憶體管理為例,這也許是C++中最受爭議的地方。多年來,物件的分配是通過new這個關鍵字來完成,開發者必須牢牢記住在程式碼中某些地方呼叫delete。“現代的C++”解決了這個問題並推進了共享指標的使用。
但是,關於現代C++的推廣光靠活躍的C++社群和知名專家是不夠的。有一句諺語是:“習慣成自然。”當你努力向某些人推介某個語言或者工具,他有可能覺得你有道理但是卻不會照著你想的做。
這就是在C++上發生的事情,我們中的許多人仍然堅持使用new和delete,而這種影響還要持續很多年,而且許多非C++的開發者也會一直通過呼叫複雜的記憶體分配方式來使用這門語言。
C++的過去影響了很多東西甚至從專案的建立之初,許許多多的開發者仍然認為這門語言非常複雜。
C++的過去是如何在影響著它?
為了發現這點,我們來做一個測試,我們在網路上使用baidu搜尋“C++物件分配”,查詢第一個連結便是“C++中是怎樣分配堆物件的?唯一的方法就是用new…”。這很令人吃驚,而搜尋頁前面談論共享指標、智慧指標的文章幾乎沒有。
另一個有趣的測試是到到任何大學的圖書館去找一本關於C++的書,去閱讀關於物件分配的那一章節,你基本上不會找到關於“共享指標、智慧指標”的介紹。
而C++開發者想要了解它們,一般查詢的資源是來自於“C類”而不是現代C++。
如何預防C++的過去所帶來的影響?
這裡並沒有特別有效的解決方案。我們可以希望C++編譯器通過發出一些關於最新更新的啟用和棄用警告,就象過去的字串操作一樣(strcpy、strcat…),但這個解決方案也不是根本的解決之道。現代C++新技術的推動需要學習和實踐。
另外一個解決方案是將“C++”更名為“現代C++”,這個解決方案很簡單也很有趣。在網路上搜尋“現代C++”,那麼在我們談論的現代C++的物件分配問題上,第一個連結就談論了“智慧指標”。
因此,在未來的C++推廣之路上,我們可以提醒新的C++開發者,在網路上查詢關於C++的資料時,“現代C++”和“C++”會是兩個非常不同的搜尋結果,前者代表C++的最新用法,而後者只代表過去。
相關文章
- Steam,你的敵人是亞馬遜亞馬遜
- “DDoS攻擊”,線上遊戲的最大敵人之一遊戲
- 張逸:程式碼最大的敵人就是體格
- 霍金的警告:人工智慧是人類的終極敵人人工智慧
- Mashable:Twitter是新聞媒體的敵人還是情人
- 敵人——建立敵人Rioter
- SOA和敏捷:是朋友?還是敵人?敏捷
- 微軟∶Linux 是 Windows 的頭號敵人 (轉)微軟LinuxWindows
- Spark 和 Hadoop 是朋友不是敵人SparkHadoop
- 副作用是程式設計頭號敵人!如何剝離它?- spin程式設計
- IT專案中的ROI:專案經理的朋友還是敵人(轉)
- 外掛,永無止息的敵人
- 瞭解你的敵人 網路釣魚攻擊的實現過程
- 資訊圖:電子郵件,朋友還是敵人
- 全球最大的成人網站用資料告訴你,過去10年人們口味發生的變化網站
- 育碧是如何做AI的? 《全境封鎖》敵人AI設計思路分析AI
- 朋友還是敵人:五個問題概述了人工智慧的未來人工智慧
- 過來人告訴你,去工作前最好還是學學GitGit
- 谷歌拿下搜尋廣告收入的最大份額,緊隨其後的居然是它?!谷歌
- 你都用過SpringCloud的哪些元件,它們的原理是什麼?SpringGCCloud元件
- 是肝膽相照的戰友,也是陰險狡詐的敵人,淺談單機遊戲中的NPC遊戲
- 聊天機器人終將改變世界 人類最大的優勢是什麼?機器人
- 學習C++程式語言的最大難度是什麼(轉)C++
- 敏捷和DevOps:是敵是友?敏捷dev
- 敏捷與 DevOps:是敵是友?敏捷dev
- 國家的敵人:網路經濟無泡沫 (轉)
- Tumblr掃黃正式開始!AI鑑黃也許是老司機們的頭號敵人AI
- 過去分詞的辨析分詞
- 目前最大的經驗是
- 大資料是怎麼知道你去過新發地的?大資料
- 要想用活Redis,Lua指令碼是繞不過去的坎Redis指令碼
- 有多少開發人員是年過四十的?
- 微軟的過去和Google的宿命微軟Go
- eMarketer:對商業品牌而言,釋出過多的資訊是最大的社交風險
- OAuth 2.0以及它的工作過程工作過程OAuth
- 在過去兩個月時間裡,糖豆人是如何用運營騷操作保持了自己的存在感的?
- HDFS 01 - HDFS是什麼?它的適用場景有哪些?它的架構是什麼?架構
- 谷歌,被塵封的過去!谷歌