為期3天的微軟Build 2013大會結束了,作為微軟一年一度的開發者大會,微軟也做足了功夫:很多產品(包括Windows 8.1和Visual Studio 2013 Preview)發布,channel9全程直播,可以到http://channel9.msdn.com/Events/Build/2013這邊查看會議的所有內容。
雖然整個Build大會不像Google的I/O和Apple的WWDC那么熱鬧(Google和Apple的粉絲比較多),但我倒是一直非常期待,其中最大的期待在於Herb Sutter曾近承諾在2013年上半年提供一個更好支持C++11的VS版本。Herb Sutter(Visual C++首席架構師、C++標准委員會主席,可以說是當今C++領域影響最大的人物之一了)在Build大會第三天有個演講,題目叫做“The Future of C++”,具體介紹了Visual Studio 2013 Preview對C++11的支持。在這個演講之前,我已經把Visual Studio 2013 Preview安裝起來,並嘗試了一些在Visual Studio 2012中沒有被支持的C++11特性,差不多得出了一個支持列表。
OK,還是看看Herb Sutter給出的官方roadamp吧:
這是我從Herb Sutter的演講PPT中截的圖,注意題目:根據Sutter的介紹,Visual Studio並沒有把目標直接定為C++11,而是定位為C++14 wave,所謂C++14 wave,是與C++14(C++11之后的一個minor release,作為C++11的補充,已經於今年早些時候成型,其draft已經獲得C++標准委員會通過)相關的一套標准,包括一些新的庫。
VC++ 2013 Preview相比於VC++ 2012多出的C++11特性的在第一列,包括委托構造函數、統一初始化列表和可變模板參數等等,當然還有一些C++14的特性(cbegin和make_unique等等)。
VC++ 2013 Preview還沒有支持,但是今年稍微時候的VC++ 2013 RTM版本,會加入非靜態數據成員初始化、=default、=delete和using別名的支持,也就是說VC++2013 RTM基本上支持C++11的常用特性,但是並不包括constexpr(Sutter說暫時不支持constexpr的原因在於VC++沒有AST樹,現在正在添加AST,我感覺很奇怪,之前VC++是怎么完成編譯過程的?)和noexcept。
剩下來的C++11特性部分在一個叫做Post-RTM OOB CTP開發版本中完成,還有的特性正在計划中,看來Herb Sutter的想法的確是直接瞄准C++14的,根據VS現在的發布頻率,所有的這些特性我感覺在2015左右差不多都有了。
說說自己的看法吧,在對C++11的支持上,Visual C++相比於GCC和Clang來說,當然是落后一大截了,兩個開源編譯器都已經是feature complete了。但是VC++作為商業產品,當然有自己的考慮。微軟對C++有自己的擴充( C++/CLI, C++/CX, C++ AMP),況且C++對於微軟來說地位不像C#那么高,整個VC++的團隊是比較小的(大家可以到http://channel9.msdn.com/Events/Build/2013/2-306這里看下面的評論),在這種情況下,我個人感覺能做到這樣已經是很不容易了。我個人非常佩服Herb Sutter,一個人身兼這么多重要職位,各方面的事情都處理得很好,另外自己還經常寫技術博客,很好奇他是怎么利用時間的!
在看整個視頻的過程中,有個很深的感受:會場上好像沒有太多對技術很感興趣的開發者,氣氛不夠濃烈,不像一些專門的C++會議有那么好的氣氛,比如Going Native,C++ and Beyond和Meeting C++等等。對了,Herb Sutter在PPT最后說了,今年的Going Native將於9月4-6號進行,非常期待這次純C++會議!

