當前位置:首頁 > 公眾號精選 > 嵌入式微處理器
[導(dǎo)讀]作者 |?Evrone 譯者 |?無明 來源 | InfoQ Rob Pike 是 Go 語言核心作者之一。本文是針對 Rob 的一次專訪,話題涉及 Rob 四十年的職業(yè)生涯、Go 語言過去十年的發(fā)展及其未來。 ?與現(xiàn)今的很多開發(fā)人員不一樣,你幾十年前就在貝爾實驗室開始了自己的職業(yè)生涯。從


作者 | Evrone

譯者 | 無明

來源 | InfoQ

Rob Pike 是 Go 語言核心作者之一。本文是針對 Rob 的一次專訪,話題涉及 Rob 四十年的職業(yè)生涯、Go 語言過去十年的發(fā)展及其未來。

 與現(xiàn)今的很多開發(fā)人員不一樣,你幾十年前就在貝爾實驗室開始了自己的職業(yè)生涯。從你角度來看,你認為軟件開發(fā)方式最大的變化是什么?

現(xiàn)今的規(guī)模要大得多,不僅僅是計算機和網(wǎng)絡(luò),還有程序本身。所有的 Unix V6(大約發(fā)布于 1975 年)都可以輕而易舉地裝在一個 RK05 磁盤(只有差不多 2MB 的存儲空間)中,還留出了大量的用戶空間。這是一個很好的計算環(huán)境,至少在當時看起來是這樣的。

 基于“抵制改變”和“承諾兼容”這樣的思想,你如何看待 Go 語言和它的生態(tài)系統(tǒng)在未來 10 年的發(fā)展?你設(shè)想的最好的未來是怎樣的?

盡管還不是很確定,但在經(jīng)過十多年的發(fā)展之后,參數(shù)多態(tài)設(shè)計——也就是通常認為的泛型,將在未來一兩年出現(xiàn)。為已有的語言找到一種合適的設(shè)計是個大難題,不過 Ian Lance Taylor(Go 語言另一位核心作者)在這個問題上投入了驚人的精力,現(xiàn)在看來答案已經(jīng)觸手可及了。

這將給庫、生態(tài)系統(tǒng)和社區(qū)帶來怎樣的影響?我們拭目以待。

 隨著“漸進式類型”被引入到“動態(tài)類型”語言中,以及“類型推斷”被引入到“靜態(tài)類型”中,二者之間的界線現(xiàn)在變得越來越模糊了。你對現(xiàn)代編程語言的類型系統(tǒng)有什么看法?

我非常喜歡靜態(tài)類型,因為它的穩(wěn)定性和安全性。

我非常喜歡動態(tài)類型,因為它給我?guī)砹藰啡ぁ?/p>

我不喜歡類型驅(qū)動編程、類型層次、類和繼承。盡管有很多非常成功的項目都是通過這種方式構(gòu)建的,但我覺得這種方法將重要的決策過早地放在了設(shè)計階段。換句話說,我更喜歡組合,而不是繼承。

不過我要對那些喜歡使用繼承的人說:不要在意我所說的,請繼續(xù)使用你認為有效的方式。

 有時候人們應(yīng)用技術(shù)的方式很奇怪,例如通過 Python 或 Ruby 來生成 Go 代碼(我們的確看到過這種做法)。這些年來,你都見過哪些奇怪、有創(chuàng)意或有趣的 Go 語言用法?令你感到最驚訝的是什么?

最大的意外是我們得知 Go 語言被用來編寫惡意軟件。你無法控制誰會使用你的東西或者他們會用它做些什么。

 你開發(fā)了很多文本編輯器。你覺得 Visual Studio Code 怎么樣?有了 LSP 這樣的技術(shù),“文本編輯器”和 IDE 之間的界限現(xiàn)在變得越來越模糊了。你認為軟件開發(fā)人員需要像 GoLand 那樣的全功能 IDE 嗎?或者使用 VS Code 就可以了?

我來自一個早于 IDE 出現(xiàn)的時代。在 Go 語言項目的早期,我們討論過 Go 語言是否需要借助 IDE 才能獲得成功。但當時團隊中沒有人具備開發(fā) IDE 的技能,所以我們沒有嘗試去開發(fā)一個 IDE。不過,我們確實開發(fā)了可用來解析和打印 Go 語言代碼的庫,并很快成為各種編輯器和 IDE 插件的基礎(chǔ),這是一個意外的成功。

最近,我們一直在努力開發(fā)一個叫作 gopls 的 Go LSP 服務(wù)器,任何支持該協(xié)議的編輯器或 IDE 都可以用它來改善 Go 語言編程體驗。

或許是因為我們習(xí)慣使用簡單的編輯器樣式,所以我們確信 Go 語言開發(fā)人員在編程環(huán)境方面也不需要做很多繁重的工作。不過,IDE 確實可以提供一些幫助:我看到的大多數(shù) Go 語言開發(fā)人員都使用了 IDE,或者至少是支持 Go 語言的編輯器,并從中獲得了很多好處。

使用什么樣的編輯器是一個個人偏好問題,取決于你使用的編程語言。

 軟件開發(fā)人員喜歡給事物貼標簽,比如 Dart 是“前端語言”,C 語言是“系統(tǒng)底層語言”,等等。從 Go 語言的特性和用法來看,你會給它貼什么樣的標簽?

Go 語言是一種通用的編程語言。你可以用它開發(fā)你想要的東西,而不用擔心語言會被固定在一個問題領(lǐng)域。

 你個人還喜歡哪些現(xiàn)代編程語言?

開發(fā) Go 語言的經(jīng)歷讓我明白了人們喜歡對編程語言發(fā)表意見。我自己也確實這樣,但我已經(jīng)厭倦了這種消極的結(jié)果,所以現(xiàn)在我盡量避免去評判它們。

在過去的 10 年里,語言設(shè)計領(lǐng)域出現(xiàn)了真正的復(fù)興,而在此之前,很少有新編程語言出現(xiàn)并獲得成功。我很高興看到這些以及它們所帶來的創(chuàng)新。

 在谷歌工作給 Go 語言的開發(fā)帶來了哪些幫助?在 Twitter 上發(fā)布類似“告訴我們你是如何使用我們的語言的”這樣的問題,并得到來自世界各地大公司的回應(yīng),這對你來說有多重要?它只是一個補充還是語言發(fā)展的一個重要組成部分?谷歌給你帶來了哪些幫助?

谷歌對 Go 語言項目的支持是非??犊?,我非常感謝它。當然,Go 語言的出現(xiàn)是因為我們認為谷歌需要它,云計算需要一種支持并發(fā)和易于部署的編程語言。不過,谷歌并沒有太過直接插手這個項目,它支持我們,讓我們做我們認為是對的事情。

對于其他公司和用戶來說,社區(qū)輸入是了解項目進展(語言、編譯器、工具、運行時、庫、環(huán)境)的關(guān)鍵組成部分。

 經(jīng)過 10 年的開發(fā)和觀察,你能說出 Go 語言在設(shè)計上最大的成功和失敗是什么嗎?它的強項和弱項分別是什么?

我想說兩件事,一個是技術(shù)上的,一個是政治上的。

從技術(shù)方面說,Go 語言支持并發(fā)計算。Go 語言只有十年左右的歷史,但在它誕生之初,“線程”和并發(fā)并沒有在編程社區(qū)得到廣泛的重視。事實上,開發(fā) Go 語言的一個主要原因是當時在 C++ 中執(zhí)行并發(fā)計算比較困難。在項目啟動后不久,對并發(fā)性的支持成了一個明顯的優(yōu)勢,彌補了其他方面的不足。人們看到并發(fā)性的優(yōu)勢之后,他們就開始探索語言的其他方面,然后進一步了解到更多的東西。所以,對并發(fā)的支持是一道很重要的關(guān)口。

正如 Cloudflare 的 John Graham-Cumming 所言,“我是為了并發(fā)而來,為了組合而留”。

Go 語言改變了多核計算編程。

從政治方面說,我們兌現(xiàn)了對 Go 1.0 兼容性的承諾。在使用了幾年 Go 語言之后,我們有一長串需要修復(fù)的東西,而且都是重大的變更。我們開發(fā)了一個更新程序,用“go fix”命令來推動社區(qū),然后我們就停了下來。這種穩(wěn)定性——2012 年編寫的 Go 程序到今天仍然可以完美地編譯和運行——是 Go 語言發(fā)展的一股巨大的推動力。其他公司可以非常自信地使用 Go 語言,相信我們不會對他們的程序造成破壞。在 1.0 和兼容性承諾兌現(xiàn)之后,使用率得到顯著的提高。

 你是如何平衡工作和生活的?現(xiàn)在很多人都在談?wù)摗奥殬I(yè)倦怠”,而疫情對解決這一問題毫無幫助。你的 40 年職業(yè)生涯可以給新一代開發(fā)人員帶來哪些啟示?

避免倦怠的最好方法是在一個可以為你提供支持的環(huán)境中做你真正喜歡做的事情。在我的整個職業(yè)生涯中,我非常幸運,但并不是每個人都像我一樣幸運。如果你感到工作壓力很大,你應(yīng)該放松一下,或者改變一下方向,尤其是當下這種情況。

 事后看來,很多技術(shù)的流行要歸功于所謂的“殺手級應(yīng)用”。你能說出一個 Go 語言的“殺手級應(yīng)用”嗎?你對“殺手級應(yīng)用”持什么樣的看法?

幾年前,Danny Berkholz 說 Go 語言是“云基礎(chǔ)設(shè)施的新興語言”,這并非偶然。Go 語言是谷歌員工設(shè)計的,目的是讓谷歌相關(guān)程序的開發(fā)變得更容易,尤其是部署在聯(lián)網(wǎng)服務(wù)器上的程序,也就是我們今天所說的“云”。

因此,看到一些使用 Go 語言開發(fā)的云計算組件(Docker、Kubernetes 等),我們感到欣慰,但并不會很驚訝。Go 語言確實已經(jīng)成為云基礎(chǔ)設(shè)施事實上的編程語言。

 你認為目前 Go 語言在哪些領(lǐng)域存在競爭?你對 Rust 的“無垃圾回收”和編譯時保證有什么看法?

Rust 是一種有趣的編程語言,我饒有興趣地關(guān)注著它的發(fā)展。除此之外,我沒有其他意見,就像我上面說的那樣。

 Go 語言在 GitHub 上的星數(shù)剛剛達到 7 萬!你認為 GitHub、Reddit、Twitter、離線和在線會議、網(wǎng)絡(luò)研討會等不同的活動對 Go 語言有怎樣的影響?它們對編程語言取得成功是否很重要?還是說它們僅僅是對語言的一種反映?

我們在各種會議和社交媒體上遇到的人是 Go 語言發(fā)展的關(guān)鍵組成部分。很多貢獻者以積極的方式影響著語言的發(fā)展,包括最初移植到 Windows 和非 x86 架構(gòu)、工具和庫的開發(fā)、對技術(shù)建議的深入討論,等等。

當 Go 開發(fā)團隊參與到社區(qū),參與討論、提出問題、尋求幫助和指導(dǎo),就走向了另一個方向。

有一件事我認為很重要,那就是讓社區(qū)的聲音保持統(tǒng)一,讓社區(qū)成為一個團隊,而不只是個體。一致的信息更容易理解。

 作為一種流行編程語言的作者,這給你的生活帶來了哪些改變?

需要說明的是,我是一個聯(lián)合作者。Ken Thompson 和 Robert Griesemer 和我一起啟動了這個項目,還有其他很多人也為項目做了巨大貢獻,所以請不要把我當成“作者”。

Go 語言確實提高了我的公眾形象,讓我被一個新的充滿活力的社區(qū)所認識。但除此之外,并沒有太大的影響。在漫長的職業(yè)生涯中,我有過很多成功的經(jīng)歷(也有無數(shù)次的失?。?。

 假如你有機會回到過去,給年輕時的自己一個建議,也就是在你開始設(shè)計 Go 語言規(guī)范的時候,你會給自己和同事什么樣的建議呢?

很簡單,忽略那些討厭你的人。只需要傾聽那些理解你的目標的聲音,他們才是你需要關(guān)心的人。不是每個人都認同你所做的,不過這沒關(guān)系,那些參與推進你正在嘗試做的事情的人是一個極好的想法、能量和靈感的來源。

我們將永遠感謝這個充滿激情的社區(qū)。

參考閱讀:

https://evrone.com/rob-pike-interview


-END-




推薦閱讀



【01】深度: 震驚世間的驚人代碼(附完整代碼)
【02】編譯器如何將高級語言轉(zhuǎn)化成匯編語言的?
【03】C語言在嵌入式系統(tǒng)編程時的注意事項
【04】由C語言編寫的C編譯器是怎樣來的?
【05】還沒搞懂C語言指針?最詳細的干貨講解
【06】C語言結(jié)構(gòu)體(struct)最全的講解
【07】為什么在C語言中,goto這么不受待見?


免責聲明:整理文章為傳播相關(guān)技術(shù),版權(quán)歸原作者所有,如有侵權(quán),請聯(lián)系刪除

免責聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

嵌入式ARM

掃描二維碼,關(guān)注更多精彩內(nèi)容

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉