Go 語(yǔ)言之父:四十年軟件開發(fā)巨變與 Go 的過(guò)去和未來(lái)
作者 | Evrone
譯者 | 無(wú)明
來(lái)源 | InfoQ
Rob Pike 是 Go 語(yǔ)言核心作者之一。本文是針對(duì) Rob 的一次專訪,話題涉及 Rob 四十年的職業(yè)生涯、Go 語(yǔ)言過(guò)去十年的發(fā)展及其未來(lái)。
現(xiàn)今的規(guī)模要大得多,不僅僅是計(jì)算機(jī)和網(wǎng)絡(luò),還有程序本身。所有的 Unix V6(大約發(fā)布于 1975 年)都可以輕而易舉地裝在一個(gè) RK05 磁盤(只有差不多 2MB 的存儲(chǔ)空間)中,還留出了大量的用戶空間。這是一個(gè)很好的計(jì)算環(huán)境,至少在當(dāng)時(shí)看起來(lái)是這樣的。
盡管還不是很確定,但在經(jīng)過(guò)十多年的發(fā)展之后,參數(shù)多態(tài)設(shè)計(jì)——也就是通常認(rèn)為的泛型,將在未來(lái)一兩年出現(xiàn)。為已有的語(yǔ)言找到一種合適的設(shè)計(jì)是個(gè)大難題,不過(guò) Ian Lance Taylor(Go 語(yǔ)言另一位核心作者)在這個(gè)問(wèn)題上投入了驚人的精力,現(xiàn)在看來(lái)答案已經(jīng)觸手可及了。
這將給庫(kù)、生態(tài)系統(tǒng)和社區(qū)帶來(lái)怎樣的影響?我們拭目以待。
我非常喜歡靜態(tài)類型,因?yàn)樗姆€(wěn)定性和安全性。
我非常喜歡動(dòng)態(tài)類型,因?yàn)樗o我?guī)?lái)了樂(lè)趣。
我不喜歡類型驅(qū)動(dòng)編程、類型層次、類和繼承。盡管有很多非常成功的項(xiàng)目都是通過(guò)這種方式構(gòu)建的,但我覺(jué)得這種方法將重要的決策過(guò)早地放在了設(shè)計(jì)階段。換句話說(shuō),我更喜歡組合,而不是繼承。
不過(guò)我要對(duì)那些喜歡使用繼承的人說(shuō):不要在意我所說(shuō)的,請(qǐng)繼續(xù)使用你認(rèn)為有效的方式。
最大的意外是我們得知 Go 語(yǔ)言被用來(lái)編寫惡意軟件。你無(wú)法控制誰(shuí)會(huì)使用你的東西或者他們會(huì)用它做些什么。
我來(lái)自一個(gè)早于 IDE 出現(xiàn)的時(shí)代。在 Go 語(yǔ)言項(xiàng)目的早期,我們討論過(guò) Go 語(yǔ)言是否需要借助 IDE 才能獲得成功。但當(dāng)時(shí)團(tuán)隊(duì)中沒(méi)有人具備開發(fā) IDE 的技能,所以我們沒(méi)有嘗試去開發(fā)一個(gè) IDE。不過(guò),我們確實(shí)開發(fā)了可用來(lái)解析和打印 Go 語(yǔ)言代碼的庫(kù),并很快成為各種編輯器和 IDE 插件的基礎(chǔ),這是一個(gè)意外的成功。
最近,我們一直在努力開發(fā)一個(gè)叫作 gopls 的 Go LSP 服務(wù)器,任何支持該協(xié)議的編輯器或 IDE 都可以用它來(lái)改善 Go 語(yǔ)言編程體驗(yàn)。
或許是因?yàn)槲覀兞?xí)慣使用簡(jiǎn)單的編輯器樣式,所以我們確信 Go 語(yǔ)言開發(fā)人員在編程環(huán)境方面也不需要做很多繁重的工作。不過(guò),IDE 確實(shí)可以提供一些幫助:我看到的大多數(shù) Go 語(yǔ)言開發(fā)人員都使用了 IDE,或者至少是支持 Go 語(yǔ)言的編輯器,并從中獲得了很多好處。
使用什么樣的編輯器是一個(gè)個(gè)人偏好問(wèn)題,取決于你使用的編程語(yǔ)言。
Go 語(yǔ)言是一種通用的編程語(yǔ)言。你可以用它開發(fā)你想要的東西,而不用擔(dān)心語(yǔ)言會(huì)被固定在一個(gè)問(wèn)題領(lǐng)域。
開發(fā) Go 語(yǔ)言的經(jīng)歷讓我明白了人們喜歡對(duì)編程語(yǔ)言發(fā)表意見。我自己也確實(shí)這樣,但我已經(jīng)厭倦了這種消極的結(jié)果,所以現(xiàn)在我盡量避免去評(píng)判它們。
在過(guò)去的 10 年里,語(yǔ)言設(shè)計(jì)領(lǐng)域出現(xiàn)了真正的復(fù)興,而在此之前,很少有新編程語(yǔ)言出現(xiàn)并獲得成功。我很高興看到這些以及它們所帶來(lái)的創(chuàng)新。
谷歌對(duì) Go 語(yǔ)言項(xiàng)目的支持是非??犊?,我非常感謝它。當(dāng)然,Go 語(yǔ)言的出現(xiàn)是因?yàn)槲覀冋J(rèn)為谷歌需要它,云計(jì)算需要一種支持并發(fā)和易于部署的編程語(yǔ)言。不過(guò),谷歌并沒(méi)有太過(guò)直接插手這個(gè)項(xiàng)目,它支持我們,讓我們做我們認(rèn)為是對(duì)的事情。
對(duì)于其他公司和用戶來(lái)說(shuō),社區(qū)輸入是了解項(xiàng)目進(jìn)展(語(yǔ)言、編譯器、工具、運(yùn)行時(shí)、庫(kù)、環(huán)境)的關(guān)鍵組成部分。
我想說(shuō)兩件事,一個(gè)是技術(shù)上的,一個(gè)是政治上的。
從技術(shù)方面說(shuō),Go 語(yǔ)言支持并發(fā)計(jì)算。Go 語(yǔ)言只有十年左右的歷史,但在它誕生之初,“線程”和并發(fā)并沒(méi)有在編程社區(qū)得到廣泛的重視。事實(shí)上,開發(fā) Go 語(yǔ)言的一個(gè)主要原因是當(dāng)時(shí)在 C++ 中執(zhí)行并發(fā)計(jì)算比較困難。在項(xiàng)目啟動(dòng)后不久,對(duì)并發(fā)性的支持成了一個(gè)明顯的優(yōu)勢(shì),彌補(bǔ)了其他方面的不足。人們看到并發(fā)性的優(yōu)勢(shì)之后,他們就開始探索語(yǔ)言的其他方面,然后進(jìn)一步了解到更多的東西。所以,對(duì)并發(fā)的支持是一道很重要的關(guān)口。
正如 Cloudflare 的 John Graham-Cumming 所言,“我是為了并發(fā)而來(lái),為了組合而留”。
Go 語(yǔ)言改變了多核計(jì)算編程。
從政治方面說(shuō),我們兌現(xiàn)了對(duì) Go 1.0 兼容性的承諾。在使用了幾年 Go 語(yǔ)言之后,我們有一長(zhǎng)串需要修復(fù)的東西,而且都是重大的變更。我們開發(fā)了一個(gè)更新程序,用“go fix”命令來(lái)推動(dòng)社區(qū),然后我們就停了下來(lái)。這種穩(wěn)定性——2012 年編寫的 Go 程序到今天仍然可以完美地編譯和運(yùn)行——是 Go 語(yǔ)言發(fā)展的一股巨大的推動(dòng)力。其他公司可以非常自信地使用 Go 語(yǔ)言,相信我們不會(huì)對(duì)他們的程序造成破壞。在 1.0 和兼容性承諾兌現(xiàn)之后,使用率得到顯著的提高。
避免倦怠的最好方法是在一個(gè)可以為你提供支持的環(huán)境中做你真正喜歡做的事情。在我的整個(gè)職業(yè)生涯中,我非常幸運(yùn),但并不是每個(gè)人都像我一樣幸運(yùn)。如果你感到工作壓力很大,你應(yīng)該放松一下,或者改變一下方向,尤其是當(dāng)下這種情況。
幾年前,Danny Berkholz 說(shuō) Go 語(yǔ)言是“云基礎(chǔ)設(shè)施的新興語(yǔ)言”,這并非偶然。Go 語(yǔ)言是谷歌員工設(shè)計(jì)的,目的是讓谷歌相關(guān)程序的開發(fā)變得更容易,尤其是部署在聯(lián)網(wǎng)服務(wù)器上的程序,也就是我們今天所說(shuō)的“云”。
因此,看到一些使用 Go 語(yǔ)言開發(fā)的云計(jì)算組件(Docker、Kubernetes 等),我們感到欣慰,但并不會(huì)很驚訝。Go 語(yǔ)言確實(shí)已經(jīng)成為云基礎(chǔ)設(shè)施事實(shí)上的編程語(yǔ)言。
Rust 是一種有趣的編程語(yǔ)言,我饒有興趣地關(guān)注著它的發(fā)展。除此之外,我沒(méi)有其他意見,就像我上面說(shuō)的那樣。
我們?cè)诟鞣N會(huì)議和社交媒體上遇到的人是 Go 語(yǔ)言發(fā)展的關(guān)鍵組成部分。很多貢獻(xiàn)者以積極的方式影響著語(yǔ)言的發(fā)展,包括最初移植到 Windows 和非 x86 架構(gòu)、工具和庫(kù)的開發(fā)、對(duì)技術(shù)建議的深入討論,等等。
當(dāng) Go 開發(fā)團(tuán)隊(duì)參與到社區(qū),參與討論、提出問(wèn)題、尋求幫助和指導(dǎo),就走向了另一個(gè)方向。
有一件事我認(rèn)為很重要,那就是讓社區(qū)的聲音保持統(tǒng)一,讓社區(qū)成為一個(gè)團(tuán)隊(duì),而不只是個(gè)體。一致的信息更容易理解。
需要說(shuō)明的是,我是一個(gè)聯(lián)合作者。Ken Thompson 和 Robert Griesemer 和我一起啟動(dòng)了這個(gè)項(xiàng)目,還有其他很多人也為項(xiàng)目做了巨大貢獻(xiàn),所以請(qǐng)不要把我當(dāng)成“作者”。
Go 語(yǔ)言確實(shí)提高了我的公眾形象,讓我被一個(gè)新的充滿活力的社區(qū)所認(rèn)識(shí)。但除此之外,并沒(méi)有太大的影響。在漫長(zhǎng)的職業(yè)生涯中,我有過(guò)很多成功的經(jīng)歷(也有無(wú)數(shù)次的失敗)。
很簡(jiǎn)單,忽略那些討厭你的人。只需要傾聽那些理解你的目標(biāo)的聲音,他們才是你需要關(guān)心的人。不是每個(gè)人都認(rèn)同你所做的,不過(guò)這沒(méi)關(guān)系,那些參與推進(jìn)你正在嘗試做的事情的人是一個(gè)極好的想法、能量和靈感的來(lái)源。
我們將永遠(yuǎn)感謝這個(gè)充滿激情的社區(qū)。
參考閱讀:
https://evrone.com/rob-pike-interview
-END-
推薦閱讀
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!