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