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

為什么我們要使用Go語(yǔ)言以及如何使用它的

開(kāi)發(fā) 開(kāi)發(fā)工具
我們SoundCloud是一個(gè)使用多種編程語(yǔ)言的公司,雖然我們的技術(shù)架構(gòu)最外層一直使用的是Ruby on Rails,但是在后端,各種各樣的編程語(yǔ)言都有涉及。在這里我想多講一下為什么要使用和如何使用Go這樣一種開(kāi)源的、剛剛發(fā)布其1.0版本的編程語(yǔ)言的。

我們SoundCloud是一個(gè)使用多種編程語(yǔ)言的公司,雖然我們的技術(shù)架構(gòu)最外層一直使用的是Ruby on Rails,但是在后端,各種各樣的編程語(yǔ)言都有涉及。在這里我想多講一下為什么要使用和如何使用Go這樣一種開(kāi)源的、剛剛發(fā)布其1.0版本的編程語(yǔ)言的。

在我們的公司里,所有的技術(shù)人員都是全能選手,而不是專(zhuān)才,這是根植于公司基因文化里的特征。我們希望每個(gè)人都能對(duì)公司的基礎(chǔ)架構(gòu)中每一部分都至少有相當(dāng)?shù)牧私?。更進(jìn)一步,我們鼓勵(lì)技術(shù)人員在個(gè)開(kāi)發(fā)團(tuán)隊(duì)間調(diào)換,甚至組成新的團(tuán)隊(duì),使成員跟各團(tuán)隊(duì)的沖突和摩擦盡量減少。在這樣一種代碼共產(chǎn)共有的環(huán)境中,非常需要一種表達(dá)性強(qiáng),效率高的語(yǔ)言來(lái)降低實(shí)施的困難,Go語(yǔ)言證明了它是一種非常適合的語(yǔ)言。

[[90417]]

我們已經(jīng)有好幾個(gè)程序員都把Go語(yǔ)言描述為是一種所見(jiàn)即所得(WYSIWYG)的編程語(yǔ)言。這是說(shuō),代碼要做的事和它在字面上表達(dá)的意思是完全一致的。這種特征對(duì)于使軟件無(wú)歧義和可維護(hù)有著巨大的幫助。Go語(yǔ)言明確的拒絕“helper”習(xí)慣用法以及諸如統(tǒng)一訪問(wèn)原則(Uniform Access Principle)、操作符重載、缺省參數(shù)、甚至異常等特征,基本上,這些特征相較于能產(chǎn)生更豐富的表達(dá),它們的歧義性會(huì)帶來(lái)更大的問(wèn)題。不否認(rèn),這樣的策略會(huì)帶來(lái)更多的鍵盤(pán)敲擊——尤其是,正如大多數(shù)參與Go語(yǔ)言項(xiàng)目的新手程序員痛斥的,在異常處理時(shí)最麻煩——但是,換來(lái)的報(bào)答是,還是這些新手程序員,他們能輕易的、迅速的將應(yīng)用在腦海里形成一個(gè)完整的模型。我可以很有信心的告訴大家,從項(xiàng)目開(kāi)始到提交代碼,Go是我們使用過(guò)的效率***的語(yǔ)言。

Go語(yǔ)言嚴(yán)格的結(jié)構(gòu)原則和它的“一種事情有且只有一種方法完成”的思想意味著我們無(wú)需在風(fēng)格問(wèn)題上糾纏不休。在針對(duì)Go語(yǔ)言程序的代碼審查上,審查會(huì)變得更針對(duì)問(wèn)題,而不是針對(duì)語(yǔ)言上的錯(cuò)綜復(fù)雜,這是每個(gè)人都愿意看到的。

更值得一提的是,一旦一個(gè)程序員對(duì)Effective Go有了一個(gè)基本掌握,你會(huì)發(fā)現(xiàn)他們的關(guān)注點(diǎn)能非常自然的從“應(yīng)用目前應(yīng)該怎樣運(yùn)行”過(guò)度到“應(yīng)用在理想狀況下應(yīng)該如何的運(yùn)行”。是否是后臺(tái)的響應(yīng)緩慢致使整個(gè)請(qǐng)求失敗?是否應(yīng)該只重試一次,不成功就只提供部分的結(jié)果?瀏覽器表現(xiàn)異常,我們是否要設(shè)置一個(gè)250毫秒的超時(shí)限制?系統(tǒng)中任何一個(gè)外層的行為場(chǎng)景都能用一種直接的、理想化的實(shí)現(xiàn)來(lái)表示,不需要類(lèi)庫(kù)或框架的支持。去掉抽象層降低了復(fù)雜性;直白陳述式、簡(jiǎn)單的代碼是更好的代碼。

Go語(yǔ)言還有其它一些非常好的特征,讓我們受益不少。靜態(tài)類(lèi)型和快速編譯使我們能夠在開(kāi)發(fā)過(guò)程中做幾乎實(shí)時(shí)的靜態(tài)檢查和單元測(cè)試。這也意味我們開(kāi)發(fā)的基于Go語(yǔ)言的系統(tǒng)中的編譯,測(cè)試和發(fā)布幾乎是一起完成的。

事實(shí)上,快速的編譯,快速的測(cè)試,快速的相互審查和快速的部署意味著你的一些想法能在一個(gè)小時(shí)內(nèi)從白板上的設(shè)計(jì)變成產(chǎn)品中可運(yùn)行的程序。例如,Next軟件中的搜索基本功能是由Elastic Search驅(qū)動(dòng)的,但是它接受SoundCloud的管理和交換幾乎全部是Go服務(wù)來(lái)完成。在驗(yàn)證過(guò)程中,我們認(rèn)識(shí)的,我們需要一種能在某個(gè)特殊環(huán)境中把索引標(biāo)志為只讀狀態(tài)的方法,需要索引系統(tǒng)能知道并順從這種狀態(tài)。在代碼中加入抽象層,開(kāi)發(fā)一個(gè)新的入口點(diǎn)正確的檢測(cè)這種狀態(tài),修改跟索引相關(guān)的行為,為它們寫(xiě)測(cè)試代碼,這一切只用了半個(gè)下午的時(shí)間。晚上時(shí),這些修改已經(jīng)部署并運(yùn)行了好幾個(gè)小時(shí)了。這樣的速度,尤其是對(duì)一種靜態(tài)類(lèi)型的,本地編譯的語(yǔ)言,簡(jiǎn)直沒(méi)得說(shuō)了。

我說(shuō)到了我們的編譯和部署系統(tǒng)。它叫Bazooka,它被設(shè)計(jì)成一個(gè)平臺(tái),用來(lái)管理內(nèi)部服務(wù)的部署。(我們很快就會(huì)把它開(kāi)源;關(guān)注我們,不要走開(kāi)!)我們?cè)ㄟ^(guò)一個(gè)情況復(fù)雜的網(wǎng)絡(luò)環(huán)境升級(jí)12-Factor應(yīng)用,你可以把它當(dāng)成一個(gè)巨大的、復(fù)雜的狀態(tài)機(jī),隨時(shí)都有可能造成數(shù)據(jù)污染和相互競(jìng)爭(zhēng)的狀態(tài)。對(duì)于這種工作,Go語(yǔ)言是最自然的選擇。Go語(yǔ)言很獨(dú)特,它有天生的并行安全特征。Bazooka系統(tǒng)的開(kāi)發(fā)人員能夠分析出問(wèn)題的復(fù)雜性而不需要使用那些復(fù)雜的輔助工具。Bazooka利用Doozer來(lái)協(xié)調(diào)它的共享狀態(tài),Doozer是世界上唯一一個(gè)Paxos開(kāi)源實(shí)現(xiàn)軟件(就我們所知)——它也是用Go語(yǔ)言開(kāi)發(fā)的。

總之,我們?cè)赟oundCloud公司維護(hù)著都是用Go語(yǔ)言寫(xiě)成的十幾種服務(wù)和十幾種知識(shí)庫(kù)。當(dāng)有新的后臺(tái)項(xiàng)目時(shí),我慢慢的都會(huì)選擇使用Go語(yǔ)言來(lái)完成。

你對(duì)使用Go語(yǔ)言解決真正問(wèn)題和開(kāi)發(fā)真正產(chǎn)品感興趣嗎?我們很樂(lè)意聽(tīng)到你的聲音!

英文原文:Go at SoundCloud

原文鏈接:http://www.aqee.net/go-at-soundcloud/

責(zé)任編輯:林師授 來(lái)源: 外刊IT評(píng)論
相關(guān)推薦

2023-03-06 08:01:25

structGo語(yǔ)言

2023-09-21 09:00:00

Merge Que開(kāi)發(fā)工具Mergify

2013-09-27 11:33:57

交換機(jī)技術(shù)Vlan技術(shù)

2022-04-26 16:56:20

行為數(shù)據(jù)數(shù)據(jù)

2021-02-18 09:23:47

數(shù)據(jù)庫(kù)分區(qū)數(shù)據(jù)庫(kù)倉(cāng)庫(kù)

2014-01-03 10:59:34

2018-11-02 14:00:20

2017-12-29 09:32:55

無(wú)服務(wù)器架構(gòu)排查

2014-11-21 10:50:26

JavaString

2011-03-08 12:59:38

proftpd

2017-07-03 13:33:42

AndroidItemDecorat

2021-12-27 07:59:11

Web3區(qū)塊鏈協(xié)議

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso

2024-01-02 10:38:22

Go語(yǔ)言數(shù)組

2021-04-26 09:33:46

Go Iota語(yǔ)言

2024-02-19 15:42:29

2011-04-14 09:30:15

集合框架

2010-05-11 10:29:06

Unix awk

2014-05-19 15:52:57

Apache StraApache

2009-06-11 17:03:22

Spring起源Spring優(yōu)點(diǎn)
點(diǎn)贊
收藏

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