C++之父:愛吃辣子雞,C++20會非常出色丨極客檔案

今年 11 月,C++ 之父 Bjarne Stroustrup 因工作出差來到中國。在上海,InfoQ 記者有幸對 Bjarne 博士進行了一次獨家專訪。Bjarne 博士今年 69 歲,依舊保持跑步的好習慣,30 分鐘左右可以跑 5 公里。並且,他自稱不怕辣,愛吃辣子雞。在長達一個半小時的採訪中,我們談到了 C++ 的誕生、開發者技能、編程語言、C++20 以及他的職業和愛好等。

關於 Bjarne Stroustrup 博士

我是 C++ 語言的最初設計者和建構者。我在 C++ 標準委員會工作了 30 年,致力於讓 C++ 在現實編程中成爲有用的語言工具。

我的職業生涯始于貝爾實驗室,在那裏工作多年,從事行業研究工作,也在德州農工大學任職。之後,我加入摩根士丹利,任董事總經理,亦被授予技術院士稱號。

技術院士,即 Technical Fellow,摩根士丹利授予其技術團隊成員的最高榮譽。

貝爾實驗室、C++ 的誕生與 Bjarne 博士

博士畢業後,我有幸在貝爾實驗室的計算機科學研究中心得到一份工作。

貝爾實驗室的計算機科學研究中心位於默裏山,擁有 1000 多名來自不同科學和工程領域的博士,聚集着一批計算機科學界的精英。20 世紀 70 年代到 90 年代,貝爾實驗室的計算機科學研究中心是世界上最偉大的實踐計算機科學和理論的地方。

在那裏,每個人都有壓力,覺得如果想在貝爾實驗室找到歸屬感,就必須有拿得出手的成果。所以,我當時打算構建一套分佈式系統。

但很快,我意識到我當時實現不了。問題在於,編程語言分爲高級語言和低級語言,當時卻沒有哪一種語言能夠兼顧我(在表達高級概念的同時也在底層與硬件溝通)的需求。所以,我決定自己開發一種。

我當時並沒有構建一個處理系統,儘管我需要一個,我卻創造了編寫處理系統的工具。結果,構想中的分佈式系統沒能出現,但 C++ 語言倒是由此誕生。

從大學教授到銀行董事總經理,Bjarne 博士的職業選擇

在德州農工大學工作十幾年後,教授能做的事我基本上都做遍了——帶本科生、帶碩士生、帶博士生、寫學術論文,還有參加委員會之類。經歷這些後,我打算嘗試點新的東西。

作爲學者,我擔心自己離現實世界的技術問題太遠了。這可能導致我在學術研究中搞錯哪些纔是真正亟待解決的現實問題。所以,我決定離開校園。

這時候,摩根士丹利向我發出邀請,我的第一反應是“可你們是一家銀行啊”,但後來他們說服我,他們在我一貫以來的研究方向上有很多有趣的技術問題亟待解決,包括分佈式系統、網絡與代碼改進等等。

另外,那裏也有很多值得結交的優秀同事——簡單純粹的工作環境非常重要,我特別受不了辦公室政治那些破事。

最後,最重要的一點是,他們的辦公地點特別好,摩根士丹利的總部離我孫子孫女家只有 20 分鐘路程。所以,我就去了。

開發者掌握一種編程語言肯定是不夠的

很難說,一個程序員到底該掌握多少門編程語言,但單純一種肯定是不夠的。在系統開發中,沒有哪套方案單靠一種語言編寫而成。例如,目前關於 AI 以及無人駕駛汽車的開發工作至少使用兩種語言——利用 C++ 完成底層開發,更高層的功能傾向於由 Python 實現。

總之,不可能只用一種語言。

我個人不會推薦某一種特定語言。當然,我肯定會推薦 C++,因爲它非常靈活,而且如果你確實需要處理硬件相關的,且更爲複雜的問題,那麼 C++ 具有顯著的優勢。

開發者應具備的重要技能

我覺得,很難說哪種技能是對每一位程序員都必要的。你需要的技能,其實取決於你的實際任務。

我個人關注的大部分技術問題,都要求開發者具備基礎性的計算機科學知識、瞭解數據結構,同時對計算機硬件架構有一定程度的認知。

最後,優秀的開發人員實際上不只是單純的程序員。他們應該擅長溝通,因爲需要聽取用戶意見以瞭解問題所在。此外,他們必須有能力與他人交流方案與想法,否則只能是浪費時間。

C++ 幾十年長盛不衰,其生命力何在?

在近 30 多年以來,C++ 一直都還算是排名比較靠前的一種編程語言。

要統計世界上有多少程序員在使用什麼編程語言是很困難的。我覺得目前比較可靠的數字應該是**(全球)有約 450 萬名左右的 C++ 程序員,同時 C++ 社區以每年 10 萬到 15 萬新增開發者的速度增長。**

C++ 之所以擁有頑強的生命力,主要是因爲它非常實用,同時具有強大的靈活性與通用性。我曾說過,我覺得一種語言不應該只能實現設計者想得到的功能,它必須有能力做得更好。並且,我很早就提出的一項零負擔原則就是,計算機裏的抽象模式必須要比人工做得更好。

因此,C++ 靈活且實用,同時也不乏條理性,你可以把它看作有能力兼顧兩方面,這些特性就跟我當時使用的 C 和 Simula 一樣。

一方面,它面向對象,允許直接訪問計算機,最大程度地提升效率;另一方面,它也能讓你使用可承受的高效方法,(非人工介入地)來掌控系統的複雜度。

我覺得這兩點是 C++ 的真正優勢所在。

初學者應該怎樣學習 C++?

在我看來,對初學者而言最重要的一點,就是不要急於一下學會所有內容。

這是不可能的。沒有哪種現代語言可以快速學透,然後就開始使用。大家需要思考自己實際上需要什麼知識,從基礎部分起步,先嚐試簡單的東西。

以 C++ 爲例,我們應該先學習其中現代的部分,其他比較陳舊的部分可以之後再嘗試。

但往往人們在實際中採用了恰恰相反的方法。

C++ 的優勢和不足之處

沒有哪種語言是完美的。

C++ 是一種非常靈活的語言,具備撰寫高性能代碼的能力。因此,如果大家需要直接跟硬件打交道並期望追求最高效率及低延遲,或在各類嵌入式系統中實現最具可預測的性能,那麼 C++ 無疑是理想選擇。

更進一步來講,C++ 也是一種穩定的語言。我們擁有 ISO 標準,而且向下兼容,意味着二十年前的代碼現在仍然可以運行。因此,人們也可以期待自己現在編寫的代碼在二十年後依然可以正常運行。這一點對於很多大型組織來講非常重要。

我們也普遍認爲 C++ 絕對不能轉變爲專有語言。C++ 不應歸任何一家企業所有,因爲一旦出現這樣的情況,他們就只會根據自身以及合作伙伴的需求對語言做出調整,這對其他的 C++ 語言使用者來說肯定不是什麼好消息。

C++ 是一種靈活的語言,它既能處理底層事務,也能處理高層事務。它是一種成熟的語言,基本上已經覆蓋了大家能夠想到的一切行業及應用領域——包括金融、農業、航空航天、半導體、設備驅動等等。

當然,它並非完美。隨着語言成熟度、兼容性以及穩定性而來的,是語言的複雜性——我們無法摒棄某些陳舊的部分。

另外,C++ 作爲一門歷史久遠且具複雜性的語言,在 IDE、編譯系統以及軟件包管理等方面存在弱項。

還有另一個弱點:大型財團支持下的語言能夠發佈大量不完全標準庫,但 C++ 社區沒有資金支持,所以做不到。不過這也是 C++ 語言壯大過程中的有趣之處——我們從來就沒有過任何資本投入,但 C++ 社區規模始終在不斷擴大。

C++20 的主要亮點

我現在很有信心,C++20 會非常出色。我經常提到,C++11 用起來就像是一種全新的語言。C++20 的提升幅度要比 C++11 更大,它會帶來全新的感覺。

我可以提一下我認爲對整個 C++ 社羣而言會有極大幫助的特性,我覺得有兩個。

第一個特性是概念(Concepts),它是對範式編程中接口的精確規範,旨在提升範式編程的易行性與靈活性。因此,我們將看到更多的範式編程,代碼呈現形式也將會有所變化。大家會獲得更好的錯誤提示信息,並且可以更少地使用模板元編程。當然,編譯速度也會更快。

另一重要新特性是模塊(Modules)。如果使用它整理代碼,我們可以將代碼編譯速度大爲提高(比如說快 5 倍以上),這一點非常重要。如此一來,大家就能夠更迅速地完成編譯而不需要在編譯的間隙去喝咖啡打發時間了。同時,你也將消除更多的程序缺陷,因爲你的代碼將顯得更加規整。

我覺得再過幾年,Concepts 與 Modules 會重要到讓大家都覺得不可或缺。

編程之外的生活愛好

我閱讀範圍比較廣泛,除了技術方面的內容,也涉及文學、歷史以及自然科學。這幾天我利用早餐時間在讀一本關於中國歷史朝代的書,因爲我現在正在中國旅行,所以趁此機會多瞭解一點。我也愛聽音樂,既喜歡古典也喜歡搖滾,有時候編程的時候也會聽。

其實,記載 C++ 的歷史大概可以算是我的一項業餘愛好。雖然這不在我的常規工作範圍之內,但回顧並記錄 C++ 的歷史可以幫助我反思系統設計。我們需要反思自己做過哪些事、爲什麼做了這些事,哪些真的有用,接下來需要做些什麼等等。

業餘時間,我也曾爲第二屆與第三屆編程語言發展史大會寫過文章,並且剛剛爲第四屆大會寫好一篇初稿——編程語言發展史大會是美國計算機學會 ACM 每隔 15 年舉辦一次的大會,受邀爲其寫超過一篇文章其實算了不起的,目前還沒人寫過三篇,也沒有哪種語言能夠三次在大會上被探討。所以我即將刷新紀錄了。

工作與生活的平衡

生活中,無論是工作還是別的什麼,都應該講究平衡。

‍‍

我很清楚,C++ 這類項目需要很長的週期,這更像是場長跑,而非短程衝刺。你需要把握節奏,所以要做點其它事。因此我會讀書,聽音樂,出去旅行——我總愛出去旅行。但在旅途中,我會試着多看看、多認識些人,嚐嚐本地美食之類。最近,我有時會帶孫輩們一起旅行。

這些事情都是很重要的。

後記

此次,Bjarne 博士來中國上海出差,行程滿滿,不僅參加第四屆摩根士丹利 IT 職場女性論壇以及 C++ 軟件技術大會並發表了主旨演講,還到上海交大、浙大和華師大三所大學以及一所中學進行了校園演講。Bjarne 博士今年 69 歲,但他身體很好,長期保持着跑步的習慣。採訪時,他的精神不錯,很有活力。在上海摩根士丹利工作期間,他會跑步,並號召大家一起跑。跑 5 公里,他僅用時 29 分 39 秒。他平易近人,採訪時回答問題非常認真。他不僅對軟件開發和編程有着深厚的理解,而且對人生也有很深的思考。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章