偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

谷歌軟件工程師:我為什么喜歡用Go語言?

新聞 前端
Go語言最近幾年逐漸獲得越來越多的開發(fā)者的喜歡。在Go社區(qū)前不久剛剛慶祝Go誕生10周年生日之際,谷歌云軟件工程師Benjamin Congdon發(fā)表個人博客,表達(dá)了自己對Go倍加青睞的一些原因。

 Go語言最近幾年逐漸獲得越來越多的開發(fā)者的喜歡。在Go社區(qū)前不久剛剛慶祝Go誕生10周年生日之際,谷歌云軟件工程師Benjamin Congdon發(fā)表個人博客,表達(dá)了自己對Go倍加青睞的一些原因。他表示,“簡潔”是他喜歡使用Go語言最重要的原因。

 

以下是博客內(nèi)容:

[[282629]]

我使用Go已經(jīng)好幾年了,我最欣賞Go的一點就是它的簡潔性。我在幾個月前開始在工作中使用Go寫代碼,發(fā)現(xiàn)它真的很容易實現(xiàn)迭代,比Python和Java更為復(fù)雜的迭代。

當(dāng)Go社區(qū)慶祝10歲生日時,我一直在想,是什么使Go變得如此與眾不同。我認(rèn)為Go的許多真正力量來自其設(shè)計師的理念:高度強(qiáng)調(diào)前向兼容性,該語言沒有損害可讀性的特性,并且隨手可得。它提供了用戶真正需要的一切(基本測試庫,可靠的聯(lián)網(wǎng)、同步原語以及模板等)。

 

前向兼容性有多高、版本依賴性就有多低

 

我認(rèn)為,和其它語言相比,Go具有最完善的版本控制和依賴關(guān)系。我沒有因為Go的版本更新遇到任何損失。這一點很重要。在差不多的時間段內(nèi),由于Rust的API更改,臭名昭著的Python 2到3過渡,我的項目一度陷入了中斷。坦率地說,我覺得npm升級后的任何舊JS項目能不能延續(xù)都不好說。

借助Go,我注意到Go的庫趨于穩(wěn)定。在Python和JavaScript中,如果有3年未更新的庫,則表明該庫已死。而在Go生態(tài)系統(tǒng)中,這個庫可能仍然可以使用。在其他社區(qū)中被視為停滯或忽視的事物,在Go這里反而是復(fù)興的標(biāo)志。

在Go中,我需要的依賴項更少,而依賴項本身的依賴項也更少。Go沒有將更多的邏輯導(dǎo)出到外部依賴項習(xí)慣。Go社區(qū)中也更容易接受代碼重復(fù)。有時這一點可能令人沮喪。有時你可能只想要一個執(zhí)行某種類型的環(huán)境或分析的庫。很多時候,你需要自己動手編寫,或者從StackOverflow答案中去尋找。不過總的來說,我認(rèn)為這一點還是利大于弊。更少的依賴項意味著項目閑置幾個月之后被迫中斷的可能性更低。

不過,現(xiàn)在下結(jié)論可能對其他編程語言有點不公平。Rust尚未達(dá)到Go所具有的穩(wěn)定性,這可能是因為Rust還不是一種成熟的語言,但也正朝著逐步成熟方向發(fā)展。Python 3本身是向前兼容的,我希望Python核心開發(fā)人員能從中學(xué)到一些教訓(xùn)。在這方面,我對Javascript已經(jīng)不抱什么希望了。

Go的依附系統(tǒng)也不是沒有問題。盡管GoModules很棒,但社區(qū)仍未達(dá)到100%的采用率。在使用GoModules之前,將所有內(nèi)容保存在$ GOPATH下的要求是如此煩人,以至于我推遲了多年才開始使用Go?,F(xiàn)在情況已經(jīng)好轉(zhuǎn),開始顯示出逐步改善的跡象。

就向前兼容性而言,Go保證自Go 1發(fā)布以來編寫的所有Go代碼都可以工作到Go 2,直到將來某個不確定的時刻。這是一個強(qiáng)力的承諾,至少到目前為止,我對這種語言的使用體驗還是非常積極的。

一些功能雖然現(xiàn)在不需要,以后可能很想要

[[282630]]

在使用Go一段時間后,我開始想要一些Go語言根本不支持的額外功能。嗯,我對C ++模板的排斥程度不亞于任何一個人,但是擁有基本的集合類泛型這個要求也不過分,對吧? 

具備“開箱即用”的僅有的兩個通用化數(shù)據(jù)結(jié)構(gòu)是數(shù)組(slice)和字典(map)。那是否要編寫自己的數(shù)據(jù)結(jié)構(gòu)呢?要么必須針對特定類型進(jìn)行設(shè)置,要么需要盯著一個全是界面的字段{}。這兩種方法都各有所長,但有時候,我希望我可以只導(dǎo)入類型安全的、通用的、雙向map。

Go將“不需要”發(fā)揮到了極致。“需要”是這里的重點詞。你將“不需要”泛型,但幾乎可以肯定會需要它們。它在錯誤處理,功能編程和運算符重載上都是上上之選。

那句“陳詞濫調(diào)”怎么說來著?有時“少即是多”。除了命名的返回值之外,我想不出Go語言中的任何讓用戶抓狂的功能了。令人印象深刻的是,Go核心開發(fā)人員對在Go中模仿其他語言的開發(fā)人員群體表現(xiàn)出了極大了約束。Go 2的未來對我來說真的很令人興奮,因為我很期待看到已經(jīng)習(xí)慣的“下一代” Go是什么樣子。

對于Go令人贊嘆的另一點是,它提供了幾乎所有你需要的東西。

go test是一個很好的基礎(chǔ)測試框架。你無需成為JUnit的領(lǐng)域?qū)<?,也無需在單元測試類型之間進(jìn)行選擇。同樣,Go的同步功能涵蓋了你需要的大多數(shù)同步原語,http可以提供可用于生產(chǎn)環(huán)境的HTTP服務(wù)器和客戶端(甚至支持HTTP2),而且編碼包中有足夠多的工具可以處理json,xml,csv,以及許多其他常見格式的數(shù)據(jù)。

 

格式化,格式化,格式化,重要的事情說三遍

 

最后必須說到gofmt。在格式化方面,我有點挑剔。我并不特別在乎應(yīng)用哪些規(guī)則,但是我非常在乎一致性。Go的內(nèi)部格式化工具gofmt被社區(qū)廣泛采用,并提供了足夠的一致性,使Go的代碼“看起來”很用的慣,而不會看代碼看得要抓狂。

就我個人而言,我發(fā)現(xiàn)使用gofmt可以輕松閱讀開源Go代碼。盡管每個項目都有自己的處理方式,但是每個項目都遵循相同的格式約定。從美學(xué)上講,這讓人愉悅。

所以,我喜歡Go。曾經(jīng)有一段時間,我被Python的Zen迷住了,并且對其他語言嗤之以。但現(xiàn)在,我期待Go的美好未來。我可能以后會在Rust流行起來之后,去用Rust趕一波時髦,因為我確實喜歡一些類似于函數(shù)式的編程。

但是現(xiàn)在,我非常愿意繼續(xù)使用Go語言。

責(zé)任編輯:張燕妮 來源: 新智元
相關(guān)推薦

2011-05-17 09:25:33

軟件工程師

2011-05-17 10:48:30

軟件程序員

2009-06-23 08:25:50

谷歌離職

2013-03-22 10:55:06

Go

2017-11-21 12:03:20

軟件工程師開發(fā)代碼

2012-04-04 22:07:12

Android

2020-08-28 13:20:53

谷歌Android開發(fā)者

2009-02-11 13:15:54

軟件工程師女工程師google

2022-01-16 07:12:30

軟件工程師吵架開發(fā)

2023-06-05 10:07:13

軟件工程平臺工程師

2014-09-05 13:37:29

程序員

2020-03-16 14:25:57

軟件開發(fā) 經(jīng)驗

2012-08-27 09:40:07

2017-11-09 14:12:44

大數(shù)據(jù)軟件工程師算法工程師

2013-09-03 09:30:44

軟件工程師軟件工程師頭銜

2009-02-12 14:45:17

軟件工程師

2014-08-20 10:24:11

軟件工程師

2022-09-16 08:00:00

軟件工程師求職薪酬

2010-08-10 13:29:58

軟件工程師

2022-04-18 10:13:32

軟件開發(fā)寫作
點贊
收藏

51CTO技術(shù)棧公眾號