我們需不需要跟進C++11/14?

如題,我們需不要跟進C++11/14?

C++11確實提供了許多新的特性,比如auto類型,比如lambda表達式,比如智能指針等等,這些確實很方便,有些更加安全。但是現在除了gcc/clang全部實現了C++11特性外,其它編譯器的跟進速度比較慢,Windows平台的霸主VS2013也僅僅是覆蓋了大部分而不是全部。這時我們應不應該努力用新的方式進行編程?

我再補充一下:雖然gcc/clang/VS的最新版均已經支持大部分C++11特性,但是在平時的編譯環境下,大家並不是都用的最新版,這就產生了很大的兼容性問題,而且C++11絕對不是小修小補,感覺向換了另一種語言似的。


新的項目需要用新標準,這是趨勢。

舊的項目,逐步遷移,C++11的右值引用和std::move也會對項目的性能有一定的幫助,如果你的項目使用了標準庫,那麼即使你不修改任何的項目代碼也能獲得性能提升。

編譯器問題不用擔心,常用的特性各大編譯器都基本上支持了,反而是團隊成員是否願意學習新特性才是值得擔心的,因為有些人就是不願意學習新東西。


VC/gcc/clang的覆蓋率已經非常高了,你還要其他什麼編譯器??


謝邀。需要。

關於題目中表達出來的對「其它編譯器的跟進速度比較慢」的擔心:小時候買跟老爸去買 VCD 機,那時候 DVD 剛興起不久,我印象最深的就是營業員在一個勁地勸說「買 DVD 幹什麼呀,你看現在 DVD 又貴、看來看去就那麼兩三個片子,買回去 DVD 功能都基本上沒機會用,還是買個 VCD 便宜實惠呀」。


不知道題主說的"跟進"指的是學習11還是使用11,如果是使用的話,vs2013中我經常用到的11的特性基本都有了,我覺得還是挺方便的(12年我因為可變參數類模板的事痛苦了一整年).clang,GCC就更不用說了,沒什麼問題.ICC有時候會出一些莫名其妙的錯誤(真的很莫名其妙!一句error信息沒有直接就說編譯失敗),據說在ICC 2015版會解決. 然後如果你直接用xcode上的clang,如果目標平台選10.9以下會找不到一些11的庫,開源版clang和庫就沒問題.vs2013的話..想編譯到xp上別忘了選xp模式.."聽說"這樣有時候會出問題,我自己用沒出過問題 (說來說去還是GCC好啊)

你應該考量一下11是否能幫助你或你們公司更好地編程,選擇編譯器的話我覺得不是很大的問題.

然後,如果你指的是"學習"的話,那不用想了,馬上學,因為早晚要學.晚學不如早學,馬上14都要出來了,17都排上日程了.......


剛轉c++伺服器開發,看到他們在用vs2008時,我已經無語了。


用BS的話來說。

What features does C++11 offer over and above C++98? A machine model suitable for modern computers with lots of concurrency. Language and standard-library facilities for doing systems-level concurrent programming(e.g., using multicores).Regular expression handling, resource management pointers, random numbers, improved containers(hash tables...), and more. General and uniform initialization, a simpler for-statement, move semantics, basic Unicode support, lambdas, general constant expressions, control over class defaults, variadic templates, user-defined literals, and more. Please remember that those libraries and language features exist to support programming techniques for developing quality software. They are meant to be used combination - as bricks in a building set - rather than to be used individually in relative isolation to solve a specific problem. A computer is a universal machine, and C++ serves it in that capacity. In partucular, C++s designaims to be sufficiently flexible and general to cope with future problems undreamed of by its designers.


如果是工作上,那麼,至少至少,要說服你的團隊在新的獨立的小組件或者項目上用新標準開發。更好的方式是團隊里討論產生一個升級路線圖,優先新項目;在對已有項目進行大型維護升級時順便遷移到新標準,因為反正要進行大的測試;並且在有人力資源時,對已有的相對容易升級的組件進行升級。


11的某些特性提供了更高級別的封裝,會提升開發效率。但是副作用是門檻下降,一些既得利益者會失去他們的優勢地位。

這樣也好,省的一些人說c++難寫難用,也省得一些人老有種莫名的優越感。


要不要跟進從來都不是編譯器支持問題,而是生產環境伺服器集群的運行庫能否升級的問題,而且一般他們都盡量避免升級除非有安全漏洞。


不用白不用,誰用誰知道。

這確實是一個更先進的生產工具,而不是又一個輪子。


用新的編譯器編譯通過舊程序,就能提高程序性能,因為標準庫已經優化過了。


真正的C++程序員毫無疑問應該學習。


如果你的團隊成員智商高,跟進。

如果你的團隊成員水平一般,懶,上進心不強,三者佔一個,不要跟進。

如果你要做庫供別人調用,考慮下怎麼讓C代碼調用你的C++11吧。


並不是所有人都需要跟進的,比如覺得c++11/14甚至boost,stl沒什麼卵用的人


悖論。只有你跟進後,你才能知道需要不需要跟進,但已經跟進了。


推薦閱讀:

double 和 long double 有哪些區別?
C++ 11會帶來什麼影響?

TAG:編程 | C編程語言 | C | CC | C11 |