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