大師解讀:為何三十五歲的C++仍在開發領域占據統治地位
Bjarne Stroustrup于1979年設計出C++語言,而這一面向系統編程工作的通用型語言已經成為全球各地開發人員的***方案之一。盡管面臨著來自Java、JavaScript、Python、Go以及蘋果剛剛公布的Swift語言的頻頻沖擊,C++仍然保持著穩固而崇高的地位。
作為摩根士丹利投資公司技術專家兼哥倫比亞大學與德克薩斯農機大學教授,Stroustrup在采訪中與我們探討了C++在當今技術環境下所扮演的角色以及軟件開發領域出現的新生事物——包括谷歌的Go與蘋果的Swift語言。
記者:您如何看待C++在當今技術環境下的角色定位?您又如何看待像Python與JavaScript這樣的腳本語言與Java甚至是谷歌Go這樣的語言?面對數量繁多而又各類各異的競爭對手,C++如何成功在當今多元化生態體系中生存、延續并求得發展?
Stroustrup:&p;p;這是個好問題。很多人都預計C++語言會在誕生起的二十年后迅速走向消亡,但實際情況是、其仍然保持著旺盛的發展態勢?;旧希瑳]有其它哪種語言能像C++這樣以卓越的速度表現處理復雜任務。如果大家關注某些嵌入式領域、如果大家接觸過圖像處理任務、如果大家使用過某些電信應用程序、如果大家涉及到某些金融類應用程序,就會發現C++仍然占據著統治地位。當然,如果僅僅將注意力集中在應用程序或者類似領域,各位可能感受不到C++的存在——這些也并不是C++的主要施展平臺。相反,谷歌、Amazon、搜索引擎等真正對于性能提出較高要求的領域才是C++的活動空間。
記者:谷歌的Go語言正逐漸引發業界的高度關注。您對于谷歌Go是如何看待的?
Stroustrup:&p;p;就目前來看,Go似乎屬于那些能夠在某些特定任務中發揮***效果的語言之一。不過一旦太過專注某些特定任務,那么編程語言就會在性能表現方面有所犧牲并喪失一部分通用能力。不過當然了,真正的結果還要由時間和市場來驗證。
記者:一部分此類新型腳本語言致力于降低開發人員的使用門檻。您覺得C++是否需要在此之外關注更多其它訴求?
Stroustrup:&p;p;哦,當然了。C++的設計目的主要面向更為核心的應用程序,而且總是需要與腳本語言或者其它語言配合使用。最初開發這款語言時,我的出發點是將C++打造成能夠切實帶來卓越性能表現的編程方案。此后,我又利用Unix shell作為自己的腳本語言。這是當時我個人的處理方式,也是當下大部分情況下的主流使用方法。C++專門為高性能表現、高可靠性、小體積、低能源消耗等優勢而生。我并沒有過多關注愛好者或者快速應用開發方面的需求,這也不是C++的關注重點。
記者:蘋果已經于六月二號發布了其Swift語言。您認為在蘋果的大力支持之下,Swift是否會成為一款能夠吸引開發人員傾情投入的重要編程語言?
Stroustrup:&p;p;我想是的。開發人員已經在Objective-C身上傾注了大量心力,而如今的Swift語言又會再一次在開發業界內掀起新的高潮。
記者:我最近看到不少關于您***主題演講的宣傳內容。宣傳中提到,“C++面臨著兩大挑戰:幫助程序員們解決與性能表現、規模以及可靠性密切相關的迫切任務。它還必須幫助程序員以更高生產效率編寫出易于理解的可維護代碼。”對于這些問題,您是如何看待的?
Stroustrup:&p;p;我希望通過這一次主題演講解釋以下兩大事實。***,如何深入有效地提取并利用硬件資源;第二,利用C++ 11與C++ 14中的新機制簡化新代碼的編寫難度。
今年將有基于這一標準的全新次級版本與大家見面,也就是我們之前所提到的C++ 14。目前Clang與GCC已經開始著手進行該版本的發布工作。以我個人的描述,C++ 14真正完善了我們在C++ 11中所作出的嘗試。當我們要發布像C++ 11這樣的大型產品時,總會有一些特性或者功能無法被及時納入其中——理由很簡單,發布日期是不能妥協的。除此之外,也有不少問題需要在我們將全部組件整合起來并加以嘗試后才能被確切發現。而C++ 14的作用正是將那些沒能在C++ 11中實現,但卻已經具備成熟構想的部分交付給用戶。
相較于我們在C++ 11中提供的lambda表達式,新版本中的lambda具備了通用特性,而且這些匿名函數能夠利用語義移動實現捕捉等功能。這些都是純技術類的內容——函數、返回、類型推導等都與lambda表達式一樣實現了改進。其中“constexpr”復合函數——指那些能夠在編譯時執行的函數——現在能夠被輕松包含在For循環當中。我們還提供多種類型的模板,并對內存初始化機制作出了改進。另外,用戶定義常量也成為現實。
記者:您如何看待編程工作中的安全問題?開發人員需要通過怎樣的方式盡可能保障其程序成果的安全性?C++在安全性方面又是否超過其它語言呢?
Stroustrup:&p;p;我對于硬件輔助安全方案非常推崇。從編程語言的角度來講,如果大家希望編寫出一款出色的程序,首先需要在代碼中編寫類型安全。當然,大家可以通過C++完成這項工作。不要沒完沒了地擺弄那些低級別功能,也不要完全依賴于那些自己無法確切追蹤其進展過程的通用型解釋器?;旧?,安全是一個系統性問題。
記者:您對于C++或者當下軟件開發領域的其它事物還有什么需要補充的意見嗎?
Stroustrup:&p;p;我們應該致力于在軟件開發領域中打造出一整套更為專業的生態體系。在我們的社會生活中,很多關鍵性組成部分可以說不容有失、而其能否正常運作往往取決于軟件的實際表現。我們還需要將自己的系統作為整體加以考量,語言以及相關工作鏈則是其中的組成部分。我們更需要重視開發人員教學工作中的執行方式,確保對軟件可靠性作出充分的強調。
英文鏈接:http://www.infoworld.com/t/application-development/stroustrup-why-the-35-year-old-c-still-dominates-real-dev-248457