Google關(guān)于Go 2的討論

責(zé)任編輯:editor006

作者:Abel Avram

2017-07-20 15:11:37

摘自:INFOQ

Go 1承諾兼容性,讓開發(fā)人員放心,只要Go 1規(guī)范還存在,他們的程序?qū)⒖梢岳^續(xù)編譯并正確運(yùn)行。Cox提到了生產(chǎn)期的擴(kuò)展性(云環(huán)境中運(yùn)行并發(fā)應(yīng)用)和開發(fā)期的擴(kuò)展性(大量的開發(fā)人員在一個(gè)較大的代碼庫(kù)上并行協(xié)作)。

在本周召開的GopherCon 2017上,Google Go的技術(shù)負(fù)責(zé)人Russ Cox做了關(guān)于Go的未來的主旨演講,請(qǐng)社區(qū)就該語言的下一個(gè)主要版本應(yīng)該包含哪些內(nèi)容提出建議。

Google在十年前開始發(fā)展Go語言,在5年前提供了第一個(gè)穩(wěn)定版本1.0。目前的穩(wěn)定版本是1.8.3,Google正在向社區(qū)開放,聽取下一個(gè)主要版本2.0應(yīng)該包括哪些內(nèi)容。

最近的一項(xiàng)研究評(píng)估,Go語言的開發(fā)者數(shù)量約為50萬。如果就編程語言向所有這些開發(fā)人員詢問他們想要什么,那么很可能得到一個(gè)很長(zhǎng)的期望功能列表。但Google非常關(guān)心維護(hù)與現(xiàn)有Go代碼庫(kù)的兼容性,該代碼庫(kù)大致近似于1B LoC。雖然這表明該語言的成功,但是按照Cox的說法,它也是“Go 2的主要制約因素”。

Go 1承諾兼容性,讓開發(fā)人員放心,只要Go 1規(guī)范還存在,他們的程序?qū)⒖梢岳^續(xù)編譯并正確運(yùn)行?,F(xiàn)在,要設(shè)計(jì)的Go 2規(guī)范,存在破壞與1.x兼容的可能性。Cox認(rèn)為需要謹(jǐn)慎選擇新特性。

Go 2必須帶動(dòng)所有開發(fā)者[包括使用Go 1.x的開發(fā)者]。只有回報(bào)足夠豐富,我們才能要求他們放棄舊有習(xí)慣,來學(xué)習(xí)Go 2的新特性。

Go 2還必須兼顧所有現(xiàn)有的Go 1源代碼。 我們不能分裂Go生態(tài)系統(tǒng)。在混合型的項(xiàng)目中,用Go 2 寫的包中導(dǎo)入了用Go 1寫的包,或者相反的情況,這種情況必須要在多年的過渡期中正常運(yùn)行。我們必須弄清楚如何做到這一點(diǎn),自動(dòng)化工具像go fix一定會(huì)發(fā)揮作用。

為了避免引起混亂,Google將新功能的數(shù)量限制為“兩到三個(gè)”,一定不超過五個(gè)“,”每一個(gè)變化都需要仔細(xì)的思考,規(guī)劃和工具化“。 這些功能不包括“允許使用更加口語化的標(biāo)識(shí)符或添加二進(jìn)制整型字面量”等輕微改變,因?yàn)?ldquo;這些改變很容易實(shí)現(xiàn)”。 Cox談到了重大變化,例如“對(duì)錯(cuò)誤處理的額外支持,或引入不可變或只讀值類型,添加某種形式的泛型或其他尚未被建議的重要主題。”

從Google的角度來看,Go 2的主要目標(biāo)是“解決Go在可擴(kuò)展性方面的重要不足”。Cox提到了生產(chǎn)期的擴(kuò)展性(云環(huán)境中運(yùn)行并發(fā)應(yīng)用)和開發(fā)期的擴(kuò)展性(大量的開發(fā)人員在一個(gè)較大的代碼庫(kù)上并行協(xié)作)。

大部分主題是介紹和解釋用于修改Go的五個(gè)步驟:

有關(guān)此過程的更多詳細(xì)信息,我們建議您閱讀博客文章Toward Go 2。有興趣為Go 2推薦新功能的用戶請(qǐng)參考GitHub上的關(guān)于該語言的Wiki。

查看英文原文:Google Discusses Go 2

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)