C++之父訪談錄:我也沒想到C ++會這么成功!
C ++的起源可以追溯到1979年,當時Bjarne Stroustrup著手開發(fā)這種語言時,它還被稱為“ C with Classes”。這門編程語言設(shè)計的初衷,是對C編程語言進行改進,增加了一些基于面向?qū)ο缶幊痰墓δ堋?/p>
1、C ++會成功我也很驚訝
Stroustrup談到:“ C ++的成功令人驚訝。我認為,C ++成功的原因在于其最初的設(shè)計目標——有效地使用硬件,再加上強大的抽象機制,以及根據(jù)實際使用情況的反饋進行謹慎的調(diào)整。”
現(xiàn)在,這門語言是最受開發(fā)人員歡迎的語言之一,為全球的系統(tǒng)和服務(wù)提供支持。
“我想用通信系統(tǒng)創(chuàng)造一個多計算機系統(tǒng),這個通信系統(tǒng)可以共享內(nèi)存,或者網(wǎng)絡(luò),” Stroustrup解釋說。
“我把重點放在軟件上。我需要編寫底層的,接近硬件的代碼,比如內(nèi)存管理器,進程調(diào)度程序和設(shè)備驅(qū)動程序,來分離軟件組件,以便它們可以在溝通方式定義明確的獨立電腦上運行。”
然而,當時沒有任何一門語言能勝任這項工作,因此Stroustrup決定自己創(chuàng)造。他這樣描述這種理想中的語言:“ C with Classes應(yīng)該具備C語言接近硬件的能力,并且有與Simula類似的抽象和代碼組織能力。”
從很早的時候開始,Stroustrup就意識到自己對這門語言沒有什么獨裁統(tǒng)治的控制權(quán)。早期的C ++工作只有他和Bell Labs的幾個同事在搞,直到語言標準化開始后,這個數(shù)字才激增到幾十人。
如今,C ++標準委員會大約有400名成員,并發(fā)展了更廣泛的用戶群體,他們是這門語言的追隨者,同時也嘗試影響它的發(fā)展方向。
那么,大家對C++如此熱情,如何保持這種編程語言的連貫性呢?“這是一個機遇,也是一個巨大的問題,”Stroustrup坦承。
“最難的是找到重點所造并保持連貫性。一旦知道了自己想要的東西,最終就會找到一種很好的技術(shù)方法來做到這一點。”
2、記住Vasa
1998年是C ++正式標準化的一年,也奠定了它的地位。至此,C ++已成為世界上最常用的編程語言之一,并保持至今。
但Stroustrup認為,直到十三年后C ++ 11的到來,才為這門語言的未來發(fā)展奠定了基礎(chǔ)。他說:“ C ++ 11使C ++感覺像是一種新語言。”
“對并發(fā)的類型安全的支持是必不可少的。C++ 11提供了一系列相互支持的功能,例如用于編譯時計算、lambda、自動類型推導(dǎo)和可變參數(shù)模板的[恒定表達式]函數(shù)。”
盡管C ++ 11引入了一些使語言更簡單、更快和更具表現(xiàn)力的新特性和功能,但卻沒有改變這門語言很難學(xué)的事實。Stroustrup也承認這一點。
“ C ++確實很復(fù)雜,很好地掌握它需要付出很多努力,”Stroustrup說。“不幸的是,人們不只是想要簡單,他們還想要一些不可能的東西:一種更簡單的語言,具有更多的功能,但不會破壞現(xiàn)有的代碼。”
Stroustrup對這種“困境”的回應(yīng),是C ++添加了一些功能,這些功能“使簡單的事情變得更簡單”,例如,不僅支持常見用例,同時又保持兼容性和穩(wěn)定性。
對于像C ++這樣的“巨獸”或任何其他主要編程語言來說,做到這件事都是說起來容易,做起來難。Stroustrup解釋說,最大的挑戰(zhàn)之一是,就決定采用或忽略哪些新功能達成共識,這本身就需要大量的討論、時間和耐心。
即使那樣,也并不是所有好的功能都可以被采用。他解釋說:“我們必須抉擇,增加那些真正對人們有幫助的功能,而且很不能過多,要是所有有用的功能都添加,語言就會因不堪其重而沉船。”
就像Vasa一樣。這是一艘17世紀的瑞典大型戰(zhàn)列艦,由于設(shè)計欠佳,在首航時這艘巨輪就沉沒在斯德哥爾摩港口。
“在最高管理者——國王的堅持下,沒有采納技術(shù)人員更專業(yè)的判斷,它滿載美麗的雕像和的沉重的槍支。因為超重,一陣風把它掀翻了。
“我反復(fù)談?wù)摗懙胶芏嘤嘘P(guān)Vasa的內(nèi)容,來提醒和警告那些熱衷于通過添加功能來改進C ++的人,請記住Vasa!所以目前為止,C ++還沒有崩潰。”
在Stroustrup看來,這些年C ++的生存之道是什么?“從小處做起,闡明基本原則,明確長期目標,并根據(jù)實際使用情況的反饋來改進。”
確實,C ++誕生已經(jīng)超過35年了。今天的C ++比早期的C ++更加強大和富有表現(xiàn)力。但是,直到今天,原始設(shè)計的痕跡仍然保留到現(xiàn)在。
Stroustrup說:“如今,仍有一些40年前的簡單的程序至今還在運行。”
“對于使用了數(shù)十年的系統(tǒng)來說,穩(wěn)定性是一種重要的語言功能。事實上,許多早期的想法只有在C ++ 20中才可用。從一開始我就知道沒辦法創(chuàng)造一門理想的語言,所以我必須以漸進發(fā)展為目標。老實說,我不相信存在一種完美的語言的想法。怎樣就是完美了?對于誰來說?
他補充道:“改進是應(yīng)對世界變化帶來的挑戰(zhàn)和吸納新思想的必要條件。”
3、實踐中的C ++
截至2020年9月,在全球范圍內(nèi),C ++是僅次于C、Java和Python的第四大流行編程語言。根據(jù)最新的TIOBE索引,它也是增長最快的編程語言。C ++是一種通用的編程語言,由于其強大的功能和靈活性而受到開發(fā)人員的青睞,這使其成為操作系統(tǒng)、Web瀏覽器、搜索引擎(包括Google)、游戲、商業(yè)應(yīng)用程序等的理想選擇。
Stroustrup總結(jié)道:“如果你有一個問題,需要高效使用硬件,并且要應(yīng)對高復(fù)雜性,那么C ++顯然是個好選擇。如果你并沒有這兩個需求,那使用低級但高效的語言,或者采用高階但并不高效的語言就能做到。”
然而,雖然C ++這么受歡迎,但Stroustrup指出,很難準確指出C ++確切的用途和用處。
他說:“對這兩個問題的答案,估計是'無處不在'。”
“在任何大型系統(tǒng)中,通常會在較低級別和對性能至關(guān)重要的部分中看到C ++的身影。而這些系統(tǒng)部分,一般終端用戶,甚至系統(tǒng)的其他部分的開發(fā)人員都看不到。因此,有時我把C ++當作是一切的看不見的基礎(chǔ)。”
他還強調(diào)了開發(fā)人員調(diào)查在評估編程語言的普及度方面其實并不那么可靠:“我們很難計算程序員的數(shù)量。Web調(diào)查通常只是計算一些“噪音”;也就是說,統(tǒng)計的是大家都在談?wù)摰?,而不是實際用過的。”
4、C ++的未來
現(xiàn)在,Stroustrup是摩根士丹利的一名技術(shù)研究員。在這家金融巨頭中,與C ++標準的國際標準化組織(ISO)和《 C ++核心準則》的合作是他工作的一部分,但他仍重度參與C ++的開發(fā)。
最值得注意的是,Stroustrup還組織了一部分編程語言方向指導(dǎo)小組,這個小組會提出并討論有關(guān)編程語言未來發(fā)展的建議。他還是改進小組的一員,參與有關(guān)新語言功能的討論。
但是,在C ++的日常運行方面,Stroustrup更愿意扮演幕后角色。他承認:“我會參與管理工作,但盡量少做。我不是一個很好的管理者。”
在新冠爆發(fā)之前,Stroustrup會花很多時間四處傳授知識,并通過他的書、文章和訪談向全世界介紹C ++。但由于新冠,這樣的生活暫告一段落。
“為了更好地工作,我非常需要通過交流來了解大家遇到的問題,并嘗試用我的方法幫助他們,” Stroustrup說。
“因為新冠疫情,我得不到我急需的反饋。線上交流畢竟和現(xiàn)實不同,在討論設(shè)計和想法的時候,Zoom會議不如面對面的效果好 。”
COVID-19爆發(fā)也阻礙了C ++語言的下兩個迭代版本——C ++ 20和C ++ 23的發(fā)展,但Stroustrup確認,“幾乎所有”的 C ++ 20都將在2020年發(fā)布。
“除此之外,還有關(guān)于Unicode、數(shù)字、游戲開發(fā)和低延遲、工具、AI等方面的工作需要做。”他補充道。
“時機成熟后,我們將推出一項功能(語言和庫),并且每三年發(fā)布一次修訂的標準。C++ 14、C ++ 17和C ++ 20會按時交付。值得注意的是,C ++的標準制定工作與主要系統(tǒng)的進展基本是同步的。
“讓C ++保持連貫性,并作為一個穩(wěn)定的開發(fā)平臺,這一點非常重要。”






