在過去的幾年里粟害,我們談到了關(guān)于“C++的復(fù)興”柿祈。我們不得不承認(rèn)微軟是這項(xiàng)運(yùn)動中主要參與者屯远,我記得在Craig Symonds和Mohsen Agsen在視頻中提到了這件事。
微軟寫了許多文章來宣布C++的回歸颤绕,并且眾多微軟專家如Herb Sutter在很多會議上解釋了為什么C++會重新崛起幸海,主要原因是現(xiàn)代C++的推廣使用。而同一時(shí)間奥务。C++11標(biāo)準(zhǔn)的認(rèn)可使我們重新把C++作為一門新的語言來討論物独。
因此,讓開發(fā)人員相信關(guān)于新的C++已經(jīng)簡化了過去許多令人失望的用法氯葬,而是使用了一種改進(jìn)了C++代碼的全新方法不是一件容易的事情挡篓。
讓我們以內(nèi)存管理為例,這也許是C++中最受爭議的地方溢谤。多年來瞻凤,對象的分配是通過new這個關(guān)鍵字來完成憨攒,開發(fā)者必須牢牢記住在代碼中某些地方調(diào)用delete世杀》Р危“現(xiàn)代的C++”解決了這個問題并推進(jìn)了共享指針的使用。
但是瞻坝,關(guān)于現(xiàn)代C++的推廣光靠活躍的C++社區(qū)和知名專家是不夠的蛛壳。有一句諺語是:“習(xí)慣成自然∷叮”當(dāng)你努力向某些人推介某個語言或者工具衙荐,他有可能覺得你有道理但是卻不會照著你想的做。
這就是在C++上發(fā)生的事情浮创,我們中的許多人仍然堅(jiān)持使用new和delete忧吟,而這種影響還要持續(xù)很多年,而且許多非C++的開發(fā)者也會一直通過調(diào)用復(fù)雜的內(nèi)存分配方式來使用這門語言斩披。
C++的過去影響了很多東西甚至從項(xiàng)目的創(chuàng)建之初溜族,許許多多的開發(fā)者仍然認(rèn)為這門語言非常復(fù)雜。
C++的過去是如何在影響著它垦沉?
為了發(fā)現(xiàn)這點(diǎn)煌抒,我們來做一個測試,我們在網(wǎng)上搜索“C++對象分配”厕倍,查找第一個鏈接便是“C++中是怎樣分配堆對象的?唯一的方法就是用new…”寡壮。這很令人吃驚,而搜索頁前面談?wù)摴蚕碇羔樁锿洹⒅悄苤羔樀奈恼聨缀鯖]有况既。
另一個有趣的測試是到到任何大學(xué)的圖書館去找一本關(guān)于C++的書,去閱讀關(guān)于對象分配的那一章節(jié)组民,你基本上不會找到關(guān)于“共享指針棒仍、智能指針”的介紹。
而C++開發(fā)者想要了解它們邪乍,一般查找的資源是來自于“C類”而不是現(xiàn)代C++降狠。
如何預(yù)防C++的過去所帶來的影響?
這里并沒有特別有效的解決方案庇楞。我們可以希望C++編譯器通過發(fā)出一些關(guān)于最新更新的啟用和棄用警告榜配,就象過去的字符串操作一樣(strcpy、strcat…)吕晌,但這個解決方案也不是根本的解決之道〉叭欤現(xiàn)代C++新技術(shù)的推動需要學(xué)習(xí)和實(shí)踐。
另外一個解決方案是將“C++”更名為“現(xiàn)代C++”睛驳,這個解決方案很簡單也很有趣烙心。在網(wǎng)絡(luò)上搜索“現(xiàn)代C++”膜廊,那么在我們談?wù)摰默F(xiàn)代C++的對象分配問題上,第一個鏈接就談?wù)摿恕爸悄苤羔槨薄?/p>
因此淫茵,在未來的C++推廣之路上爪瓜,我們可以提醒新的C++開發(fā)者,在網(wǎng)絡(luò)上查找關(guān)于C++的資料時(shí)匙瘪,“現(xiàn)代C++”和“C++”會是兩個非常不同的搜索結(jié)果铆铆,前者代表C++的最新用法,而后者只代表過去丹喻。
推薦C語言C++學(xué)習(xí)交流群:466572167
本文翻譯自The first enemy of C++ is its past.