-
1 # 流量卡物聯卡
-
2 # 吃瓜程式設計師小李
一個語言個人覺得都是在哪些方面有一定的優勢。語言並沒有什麼優劣之分。java的垃圾回收主要在javaEE上有一定強勢。C/C++更加貼近硬體,做硬體首選,Python的膠水特性在做資料處理,呼叫資料處理演算法有一定的優勢,php快速建站。go語言在併發處理方面有一定的優勢,當然,如果併發大可以向go語言靠攏。go的生態還不算那麼的完善。學習的話,值得學習下,相信在未來的一到兩年會呈現上升趨勢。
-
3 # 是橘子大王o
Go作為Google2009年推出的語言,其被設計成一門應用於搭載 Web 伺服器,儲存叢集或類似用途的巨型中央伺服器的系統程式語言。
對於高效能分散式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量並行的支援,這對於遊戲服務端的開發而言是再好不過了。
到現在Go的開發已經是完全開放的,並且擁有一個活躍的社群。
=================================
哪些大公司在使用Go語言:
1、Google
這個不用多做介紹,作為開發Go語言的公司,當仁不讓。Google基於Go有很多優秀的專案,比如:https://github.com/kubernetes/kubernetes ,大家也可以在Github上 https://github.com/google/ 檢視更多Google的Go開源專案。
2、Facebook
Facebook也在用,為此他們還專門在Github上建立了一個開源組織facebookgo,大家可以透過 https://github.com/facebookgo 訪問檢視facebook開源的專案,比如著名的是平滑升級的grace。
3、騰訊
騰訊作為國內的大公司,還是敢於嘗試的,尤其是Docker容器化這一塊,他們在15年已經做了docker萬臺規模的實踐,具體可以參考http://www.infoq.com/cn/articles/tencent-millions-scale-docker-application-practice
4、百度
目前所知的百度的使用是在運維這邊,是百度運維的一個BFE專案,負責前端流量的接入。他們的負責人在2016年有分享,大家可以看下這個http://www.infoq.com/cn/presentations/application-of-golang-in-baidu-frontend
5、阿里
阿里巴巴具體的專案不太清楚,不過聽說其系統部門、CDN等正在招Go方面的人。
6、京東
京東雲訊息推送系統、雲端儲存,以及京東商城等都有使用Go做開發。
7、小米
小米對Golang的支援,莫過於運維監控系統的開源,也就是 http://open-falcon.com/
此外,小米互娛、小米商城、小米影片、小米生態鏈等團隊都在使用Golang。
8、360
360對Golang的使用也不少,一個是開源的日誌搜尋系統Poseidon,託管在Github上,https://github.com/Qihoo360/poseidon
==================================
Go適合做什麼?為何這麼多人偏愛Go語言?
Go強大的開發團隊
1、自由高效:組合的思想、無侵入式的介面
Go語言可以說是開發效率和執行效率二者的完美融合,天生的併發程式設計支援。Go語言支援當前所有的程式設計正規化,包括程序式程式設計、面向物件程式設計以及函數語言程式設計。程式設計師們可以各取所需、自由組合、想怎麼玩就怎麼玩。
2、強大的標準庫
這包括網際網路應用、系統程式設計和網路程式設計。Go裡面的標準庫基本上已經是非常穩定了,特別是我這裡提到的三個,網路層、系統層的庫非常實用。
3、部署方便:二進位制檔案、Copy部署
我相信這一點是很多人選擇Go的最大理由,因為部署太方便了,所以現在也有很多人用Go開發運維程式。
4、簡單的併發
它包含了降低心智的併發和簡易的資料同步,我覺得這是Go最大的特色。之所以寫正確的併發、容錯和可擴充套件的程式如此之難,是因為我們用了錯誤的工具和錯誤的抽象,Go可以說這一塊做的相當簡單。
5、穩定性
Go擁有強大的編譯檢查、嚴格的編碼規範和完整的軟體生命週期工具,具有很強的穩定性,穩定壓倒一切。那麼為什麼Go相比於其他程式會更穩定呢?這是因為Go提供了軟體生命週期(開發、測試、部署、維護等等)的各個環節的工具,如go tool、gofmt、go test。
================================
我們為什麼選擇GO語言
選擇GO語言,主要是基於兩方面的考慮
1. 執行效能 縮短API的響應時長,解決批次請求訪問超時的問題。在Uwork的業務場景下,一次API批次請求,往往會涉及對另外介面服務的多次呼叫,而在之前的PHP實現模式下,要做到並行呼叫是非常困難的,序列處理卻不能從根本上提高處理效能。而GO語言不一樣,透過協程可以方便的實現API的並行處理,達到處理效率的最大化。 依賴Golang的高效能HTTP Server,提升系統吞吐能力,由PHP的數百級別提升到數千裡甚至過萬級別。
2. 開發效率 GO語言使用起來簡單、程式碼描述效率高、編碼規範統一、上手快。 透過少量的程式碼,即可實現框架的標準化,並以統一的規範快速構建API業務邏輯。 能快速的構建各種通用元件和公共類庫,進一步提升開發效率,實現特定場景下的功能量產。
-
4 # EmacserVimer
你現在用的產品背後、也是全世界成長最快的移動網際網路企業位元組跳動,這家公司後端服務超過80%的的流量都執行在Go構建的服務之上的,微服務數量就超過了100個,峰值QPS超過700萬萬,每天請求量超過了3000億,這麼一說你覺得Go語言重要嗎?
Go語言第一次扛住了春晚流量洪峰,支撐了全世界成長最快的移動網際網路企業大家也都知道,這幾年網際網路公司紅包活動作為春晚保留節目,也是這幾年春晚最大的廣告單子,不過在技術上一直都是網際網路公司的挑戰,能夠中標、並且敢接這個任務的網際網路企業都是國內技術實力最強網際網路企業,不管是技術還是運營能力都是行業之最。
連續三年的時間,第一年微信春晚紅包一夜之間走完了支付寶八年才走完的路,第二年阿里巴巴攜淘寶、支付寶紅包捲土重來試圖要捍衛大廠地位,儘管兩家企業都順利的完成了任務,但都不算是完美的完成了任務,因為都沒能扛住第二波峰值。第三年百度登場,可是百度沒有微信的10億使用者,也沒有天貓雙十一的競技場,有的只是一個“中國技術最強網際網路公司”的“名頭”,不過百度還是證明了自己的強大,順利的扛過了第二波流量洪峰,百度BFE全都是用Go語言作為核心技術棧,承擔了幾乎百度所有的轉發請求,峰值QPS都在千萬以上。
為什麼大家都喜歡用Go語言?舉個例子吧,C/C++功能強大吧,尤其是C++是我認為這個星球上最牛X的程式語言(當然我內心深處還是更欣賞Lisp),可是C++這玩意兒一般人搞不定啊,這玩意兒強大是強大了,程式設計師水平確實參差不齊,自然寫出來的程式碼質量會差很多。
PHP、Python、Go語言就不一樣了,儘管不同水平寫出來依然有差異,可是差異不會那麼大呀,是個程式設計師寫出來都還是能看的,關鍵還沒有那麼難。Go語言學習門檻比Python和PHP不會高啊,而且效能比這倆貨還要好很多,你說這時候你選啥?至於Java(作為一個曾經主要使用Java的碼農,表示這門語言真是一言難盡,一個需要用很多篇幅來寫規範的程式語言,我是不會用它開始一個新專案的),這時候Go語言就很香了。
Google作為Go語言的締造者,自然也會用Go語言做一些專案,大名鼎鼎的kubernetes專案就是用Go語言開發的,中國聯通、以及Spotify都在使用kubernetes技術。Facebook也在用Go語言,同樣大名鼎鼎的Grace也是Go語言開發的。
大名鼎鼎的容器Docker核心技術棧就是Go語言,相應的騰訊公司的藍鯨平臺、容器開發也都是Go語言,騰訊在2015年的時候就已經部署了上萬臺規模的Docker伺服器,儘管騰訊的核心技術棧是C/C++,很多老程式碼很難輕易改動,騰訊依然會在新業務上不斷地嘗試使用Go語言。
二次元彈幕網站bilibili,都是採用的Go語言作為核心技術棧。除此之外電商網站裡面京東的訊息推送、雲端儲存,小米公司的小米商城、小米影片,七牛雲也在使用Go語言,七牛雲的創始人許式偉還是中國最早的Go語言佈道者之一。
Go語言使用簡單、上手極快,程式碼效率極高、可以說基本僅次於C/C++,編碼規範統一程度好,對高併發的支援也比較好、適合用來做對併發要求比較高的業務,也非常適合用來做訊息業務。
-
5 # 交子紀元
想了解GO語言的重要性,不如自己系統的看一下;我這裡有系統的免費課你可以看看
GO語言基礎學習資料(免費下載) (jiaozi.top)
回覆列表
個人而言,你和我或許完全有能力在 C 中編寫程式,既不會洩漏記憶體,也不會不安全地重複使用記憶體。然而,整體上,即使有超過 40 年的經驗,用 C 的程式設計師也無法可靠地這樣做。
儘管靜態程式碼分析、valgrind、tsan 以及 “-Werror” 已經存在了幾十年,卻很少有證據表明這些工具被廣泛認可,更不用說廣泛採用。總而言之,事實表明,程式設計師根本無法安全地管理自己的記憶體。現在是離開 C 的時候了。
Go 不需要程式設計師直接管理記憶體,所有記憶體分配都由語言執行時自行管理,使用前初始化,必要時檢查邊界。它肯定不是提供這些安全保障的第一個主流語言,Java(1995)可能是該冠軍的競爭者。關鍵是,世界對不安全的程式語言沒有胃口,所以人們預設認為,Go 是記憶體安全的。
開發人員生產力
從 20 世紀 70 年代末,開發人員的時間變得比硬體所耗費的時間更昂貴了。開發人員的生產力是一個不斷擴充套件的話題,但它歸結為這一點:你花了多少時間做有用的工作,又有多少時間等待編譯器或者失望地迷失在外部程式碼庫中。
有個笑話說 Go 是在等待 C ++ 程式編譯時開發的。快速編譯是 Go 的一個重要功能,也是吸引新開發人員的關鍵工具。雖然編譯速度仍然是一個永久的戰場,但公平地說,在其他語言中需要幾分鐘的編譯,在 Go 中只需要幾秒鐘。
Go 程式設計師意識到生產力的更根本的問題是程式碼是為了讀而寫的,所以將程式碼的閱讀行為放在編寫之上。Go 透過工具和自定義來強制所有程式碼格式化成特定的樣式。這消除了學習專案特定語言的方言時的困難,並有助於發現錯誤,因為它們看上去就是不正確。
由於專注於分析和機器輔助,Go 開發人員開始採用越來越多的工具來發現常見的編碼錯誤,這種工具從來沒有在 C 語言開發者中產生共鳴 - Go 開發人員希望工具幫助他們保持程式碼清潔。
併發性
十多年來,晶片設計師一直在警告免費午餐將會結束。從較低端的手機到最耗電的伺服器,硬體的並行性以更多、更慢、堆砌 cpu 核心的形式出現,但只有當你的語言可以利用它們才有意義。因此,併發特性需要內建到我們編寫的要在今天的硬體上執行的軟體中。
透過提供一種基於協程的輕量級併發模型,或者是 Go 中已知的 goroutines,Go 超越了那些暴露作業系統的多程序或多執行緒並行模型的語言。goroutines 允許程式設計師避開復雜的回撥,而語言執行時確保有足夠的執行緒來保持你的核心的活躍。
總結
我給朋友推薦 Go 有三個原因:安全性、生產力和併發性。有些語言可以涵蓋一個也有可能是兩個方面,但是這三個方面的結合使得 Go 成為主流程式設計師的絕佳選擇。