-
1 # 優雅的名字
-
2 # 大唐李衛公
全球有哪些公司在使用Go語言
目前在全球範圍內使用Go語言的科技公司並不在少數,很多企業更是將Go語言作為自己的核心技術棧,這其中就包括了Google、Facebook、Amazon、Docker、騰訊、百度、阿里、位元組跳動、嗶哩嗶哩影片網站等等。
Google作為開發Go語言的企業,自然是要支援Go語言的,Google的開源專案裡面不少就是使用Go語言開發的,Google的GitHub開源主頁裡面,至少有五分之一的專案都是用Go語言開發的。
Facebook也將Go語言作為主要開發語言,在Facebook內部,PHP、Go都佔據了很大的比例,其中大名鼎鼎的grace就是用Go語言開發的。亞馬遜的AWS能夠成為全球最大的雲計算公司,Go語言功不可沒,現在阿里雲也在追尋AWS的腳步,開始大規模使用Go語言開發自己的雲計算產品。
Docker相信已經不需要我過多介紹了,作為目前全行業最好的容器,Go是Docker公司最重要的程式語言。相應的騰訊在也曾做過萬臺規模的Docker實驗,因此騰訊在這一塊也做出了很多嘗試,大名鼎鼎的騰訊遊戲藍鯨平臺就需要很多的Go語言工程師來做容器開發,騰訊的核心技術棧是C/C++,不過很多業務用Go語言做起來方便很多,可是騰訊的技術棧很多都基於C/C++,重構難度極大,因此騰訊在很多新業務都在嘗試用Go語言來開發。
春晚的時候大家應該都見識了百度技術的強大,估計不少人都被百度強大的技術實力折服了,這裡面百度底層架構的穩定起了很大的作用。百度運維的BFE專案,主要是負責前段流量的介入,以及百度的訊息系統,這兩塊非常重要的業務的後端伺服器開發和維護都是使用Go語言。
Go語言有哪些優勢
效能極其出色:Go語言的效能非常出色,最關鍵的是在效能強勁的同時還能像Python語言一樣高效地進行開發,要知道Go語言是靜態語言,而Python是動態語言。
編譯方便、部署簡單:Go語言可以直接編譯為機器碼,編譯生成的是一個靜態可知從檔案,除了glibc之外沒有不依賴其他外部庫。部署就直接扔一個檔案就可以了,目標機器上只需要基礎的系統,必要的管理、監控工具就可以了,完全可以不用考慮各種包、庫的以來關係,維護成本也大大降低。
出色的併發效能:這一點對於後端語言還是很重要的,曾經Java最大的殺手鐧,一個是跨平臺、一個就是強大的併發能力。Go語言是語言層面的支援併發,這一點你可以充分利用多核,也可以非常容易的使用併發。
良好工程語言:Go語言可能不具備很好的學術特性,很多高階程式語言有的特性Go語言都沒有,可這卻讓Go語言成為一個非常好的工程語言,沒有任何多餘的,規範非常簡單靈活,這一點你用Java就知道了,也有完善的工具鏈,幾乎就是為工程而生的。
Go語言的應用場景
Go語言在訊息推送、監控、容器、處理日誌、資料打包、虛擬機器處理、檔案系統等領域非常有優勢,並且非常適合用來做網路併發服務。
伺服器程式設計、分散式系統、資料庫代理起、網路程式設計、記憶體資料庫、以及各種各樣的雲平臺,這都是Go語言的主戰場。
說了這麼多,我覺得作為一個程式設計師,你或許真的有必要學習一下Go語言,這真的是一門非常優秀的程式語言。
-
3 # 頂級豆漿X4
主要是培訓機構炒的,還有區塊鏈學go也就大點的公司招人,沒點能力大公司還真進不去。。小公司為了成本通常用java或者php了,招人成本也小
-
4 # 灰色樓市
主要是go的市場切入點非常準確
go被設計出來的目標應用場景是伺服器開發,而伺服器端開發是c++和java的地盤,佔了大部分份額,go的目標是從他們嘴裡搶蛋糕
程式設計師選語言除了流行度以外,語言是否好用,寫的程式是否夠快這兩點也是重要的參考指標。
c++的特點是足夠快,卻不是很好用
java的特點是足夠好用,但不見得快
又快又好用,又符合大眾口味, 又專注於伺服器領域的語言,似乎沒有
於是go誕生了
go語言在易用性方面秒殺c++這點毋庸置疑,任何有伺服器開發經驗的程式設計師都可以快速上手go語言, 門檻非常友好。而c++,即使你有十年程式設計經驗,初玩c++ 也非被摔個七葷八素不可。
至於在效能方面是否比java強?假如寫go程式和java程式的都是經驗豐富的優秀程式設計師,那麼用go寫的程式不一定比用java寫的程式設計師快。然而,如果都是初次使用這兩門語言的程式設計師寫程式,那麼go程式必定比java程式快。
其中原因在於go是一門以併發程式設計為特色的而設計的語言,在語法層面支援協程,也就是goroutines。而java不支援協程,只支援多執行緒。表面上看協程和執行緒似乎是同一個東西,能達到的效果也相同,但是在底層的實現上卻有著非常大的區別,在伺服器端的絕大部分應用中,協程要比執行緒節省資源的多。
通俗易懂的講,執行緒是作業系統的資源,當java程式建立一個執行緒,虛擬機器會向作業系統請求建立一個執行緒,虛擬機器本身沒有能力建立執行緒。而執行緒又是昂貴的系統資源,建立、切換、停止等執行緒屬性都是重量級的系統操作,非常消耗資源,所以在java程式中每建立一個執行緒都需要經過深思熟慮的思考,否則很容易把系統資源消耗殆盡。
而協程,看起來和執行緒差不多,但建立一個協程卻不用呼叫作業系統的功能,程式語言自身就能完成這項操作,所以協程也被稱作使用者態執行緒。我們知道無論是java還是go程式,都擁有一個主執行緒,這個執行緒不用顯示編碼建立,程式啟動時預設就會建立。協程是可以跑在這種執行緒上的,你可以建立多個協程,這些協程跑在主執行緒上,它們和執行緒的關係是一對多。如果你要建立一個執行緒,那麼你必須進行作業系統呼叫,建立的執行緒和主執行緒是同一種東西。顯然,協程比執行緒要輕量的多。
既然協程這麼優秀,為什麼不徹底替代執行緒呢?事實上協程和執行緒完全不是兩個相同層面的東西,完全談不上替代一說,協程可以說是一個獨立於執行緒的功能,它是線上程的基礎上,針對某些應用場景進一步發展出來的功能。我們知道,執行緒在多核的環境下是能做到真正意義上的並行執行的,注意,是並行,不是併發,而協程是為併發而生的。
打個簡單的比方吧,射鵰英雄傳看過吧,周伯通教郭靖一手畫圓,一手畫方,兩隻手同時操作,左右互搏,這個就是並行。普通人肯定做不到,不信你試試。你不能並行,卻可以併發,你先左手畫一筆,然後右手畫一筆,同一時候只有一隻手在操作,來回交替,直到完成兩個圖案是,這就是併發,協程主要的功能。
想象一下業務場景,你需要執行兩個互不依賴的sql查詢,為了減少等待時間,常規的操作肯定主執行緒執行sqlB的同時另起一個執行緒執行sqlA,使兩個sql並行執行。然而你會發現,執行兩個sql的執行緒大多數時間只是在等待資料庫伺服器的響應,執行緒只是處於阻塞等待狀態,而不是瘋狂運轉,而執行緒的建立、切換又很消耗系統資源,顯然這很浪費。這個時候就該協程大展身手了,你可以在主執行緒中建立一個協程用於執行sqlB,然後再在主執行緒中執行sqlA,協程和執行緒一樣,不會阻塞主執行緒,所以sqlB得到結果後,你可以透過語言的api去看看在協程中的sql執行完畢了沒有,如果沒有則等待,如果執行完畢了就拿結果,和執行緒操作幾乎一摸一樣。至於sqlA和sqlB是否真正在並行執行根本無所謂。為什麼呢? 我們假設執行一個sql需要三步,提交sql、等待、獲得結果 ,其中第一步和第三步極省時,只要1毫秒一步,而第二步卻要1000毫秒,那麼使用並行的多執行緒執行兩個sql,你只要花掉1002毫秒,而使用併發的協程你要花掉1004毫秒,但是執行緒比協程多消耗一個執行緒的資源,請問你會為了這2毫秒而選擇多執行緒嗎,顯然不可能,建立執行緒的開銷都要大於節省下來的時間,這就是協程存在的理由。
而伺服器端開發中,大多數時候都是要花大量等待時間的場景,也就是所謂的IO密集,協程極為適合這種場景,而go又主打協程,直接從語法層面支援,切中了以往開發高效能程式太過於複雜的痛點,因此廣受程式設計師們的歡迎。java其實也可以模擬出協程的效果,比如用nio和多執行緒,也能假裝goroutines的效果,但實際操作起來太過於麻煩,還要掌握一大堆枯澀的概念,完全沒有goroutines的優雅。所以在併發效能上,go完勝java。換言之,go比java更適應高併發場景,能更優雅方便的寫出高併發程式。
當然,以上只是go流行起來原因的其中之一。除此之外非常重要的原因在於,go語言有一個好爹google,以及祖師爺級別的創始人unix與C語言之父肯·湯普遜。想象一下,c語言已經如此牛逼,而還只是這位大神早年的作品,那麼現在同樣出於他手的go語言勢必是集大成的作品,而且還有財大氣粗口碑出眾的google背書,簡直就是含著金鑰匙出生啊,不牛逼都難,不去用用簡直枉為程式設計師。
對標一下技術上同樣出眾的.net core,各方面都不輸於go,但就是火不起來,究其原因還是爹作的孽,微軟的原罪已經成了廣大網際網路程式設計師的刻板影響,一時三刻無法逆轉,即使近年來有所改善,但還是和谷歌相去甚遠,這也是.net core明明足夠優秀但就是沒法贏得程式設計師們青睞的原因。
以上這些就是go語言為什麼這麼火的部分原因。
-
5 # 充電室
go語言推出有幾年了,似乎不溫不火。但是在中國範圍內,確實被關注的一塌糊塗。
這是2017年2月份TIOBE出的程式語言排名:
但是在中國,很多公司,很多程式設計師都在談論go語言,也就是說在中國對於go的關注異常火爆。
根據谷歌搜尋的統計,如下圖:
外華人專門寫了一篇文章,來分析為什麼go在中國如此火:《Why is Golang popular in China?》為了方便檢視文章,我把網頁內容以圖片的方式展示出來,如下圖:
同時我也參考了知乎一位匿名作者的答案
這個“火”字看你怎麼理解了。Go在國內更火只是感覺上的。比如推文,以及談論的相關話題較多而已(但能有nodejs多麼?),本身華人口數量就多,按這個衡量的辦法去看的話,swift在國內也比在國外火;實際上Go在國外更火(這裡的火是實際的使用情況),對比一下國內和國外使用Go的程度、數量,Go相關的技術大會舉辦的頻率和數量就一目瞭然了。Go在國內真正上被全棧使用的就七牛一家,但國外除了docker,coreOS還有很多初創企業。國內比較有影響力的就一個beego框架,你看看國外的有多少。去github上搜一下active的Go的project數量,看看Go在國外是不是沒人用?我反正在github的trending裡面幾乎每天都能看到Go的project。hacker news上面有關Go的“xxx writen in Go”的炒作文也不要太多。這個 dariubs/GoBooks · GitHub 是有人整理的Go相關的書籍,看看是不是國外的書籍比國內的少?8月份K&R中的K也要推出屬於Go的聖經了。另外老有人喜歡說:Google喜歡關閉產品,這玩意兒遲早死掉。可惜golang是開源專案,關不掉的,CloudFlare那個crypto的patch(Gerrit Code Review)以後可能會進Go的標準庫,Godep已經成為事實上的包管理標準,這些都是社群自己搞出來的,和google一毛線關係沒有。另外就是最近google自己一些主力產品或者平臺在優先支援語言上,Go總是和java,c/c++,python一起名列其中,grpc就是一個例子等等。所以,覺得Go只是google的一個玩具的人,你的觀點能不能站得住腳,自己掂量吧。我的個人觀點是:Go顯示已經站住了腳跟(如果是2013年,我還是不敢說這種話的),找到了屬於自己的空間,但是比起那些主流的甚至nodeJS來說,還是使用的不夠廣泛。這個語言人為炒作也罷,一些人認為的google光環也罷,實際使用也罷,總之:這個語言已經站住腳跟了,能用於並且已經用於生產環境了,接下來幾年只會一直呈上升勢頭。-------------------------------
最後
1、一些真正使用go語言的公司:這些公司在高速發展的同時,Golang也因此在國內逐漸傳播開來。在雲計算時代,從國內Go語言發展和應用來看,七牛算是國內第一家選Go語言做服務端的公司。早在2011年,當Go語法還沒完全穩定下來的情況下,七牛就已經選擇將Go作為儲存服務端的主題語言。關於這點,七牛CEO許式偉談到:程式設計哲學的重塑是Go語言獨樹一幟的根本原因,其它語言仍難以擺脫OOP或函數語言程式設計的烙印,只有Go完全放棄了這些,對程式設計正規化重新思考,對熱門的面向物件程式設計提供極度簡約但卻完備的支援。Go是網際網路時代的C語言,不僅會制霸雲計算,10年內將會制霸整個IT領域。2、在中國程式設計師眼中,谷歌出品必屬精品確實,在網際網路世界,在開源世界,Google為我們貢獻了太多太多。3、創業公司假裝高逼格,假裝geek範兒The word geek is a slang term originally used to describe eccentric or non-mainstream people;in current use,the word typically connotes an expert or enthusiast or a person obsessed with a hobby or intellectual pursuit,with a general pejorative meaning of a"peculiar person,especially one who is perceived to be overly intellectual,unfashionable,or socially awkward"4、 docker異常火爆,帶動了對go語言的關注Docker是PaaS供應商dotCloud開源的一個基於LXC的高階容器引擎,原始碼託管在GitHub 上,基於Go語言開發並遵從Apache2.0協議開源。5、go語言本身的一些特性部署簡單併發性好效能好6、《go語言從入門到放棄》一書的火爆 -
6 # 數字技術觀察
Go語言是谷歌2009釋出的第二款開源程式語言,作為火爆好入職的程式語言,自面世以來,以高效的開發效率和完美的執行速度,迅速風靡全球,被譽為“21世紀的C語言”。
Go語言專門針對多處理器系統應用程式的程式設計進行了最佳化,可以在不損耗程式效能的前提下簡化程式碼的複雜性,使用Go編譯的程式不僅媲美C/C++程式碼的速度,而且更加安全、支援並行程序。
大陸外哪些企業在使用Go語言?
國外如Google、facebook、AWS等,大陸如阿里巴巴、騰訊、百度、抖音、小米、京東、360、網易、新浪、愛奇藝、嗶哩嗶哩等都已開始大規模使用Go語言開發各種應用。
還記得Gopher China 2019大會嗎?滴滴公司作為主辦方分享Go語言在大型微服務框架設計方面的實踐,百度分享Go語言在春晚搶紅包專案、自動駕駛、百度智慧小程式、百度APP等方面的應用優勢,知乎使用Go語言重構程式碼後節省超過80%的伺服器資源。此外,騰訊也在積極向Go語言靠攏。
Go語言能做什麼?
服務端開發
爬蟲及大資料
網路程式設計
Paas雲平臺領域
分散式儲存領域
區塊鏈領域
容器虛擬化
2010年1月10日,Go語言摘得了TIOBE公佈的2009年年度大獎。隨著《2018中國區塊鏈產業白皮書》的釋出,區塊鏈被列入國家戰略,Go語言作為區塊鏈主流程式語言怎能不火?
Go語言的優勢
強悍併發效能(Go內建Goroutine協程排程機制,處理併發性相當強悍);
開發速度快(這個奇特的語言程式碼簡易度接近Python,執行速度媲美C語言);
人才缺口大(供求比例1:10),就業薪資高(從業3年薪資25k+),方向廣(移動網際網路、資料服務、電子商務、金融、企業服務、遊戲、O2O、社交網路、文化娛樂、教育、醫療健康、廣告營銷等等)。
Go語言的應用領域
伺服器程式設計(處理日誌、資料打包、虛擬機器處理、檔案系統)、網路程式設計(Web應用、API應用、下載應用)、雲平臺、記憶體資料庫等。
人人追喊“寒冬”,為何Go語言從業者薪資一路高漲,人才卻少之又少。
Hired 釋出《2019 軟體工程師狀態》最新資料報告顯示,Go打敗Scala、Ruby、Java、Java、PHP、Python,Go語言從業者成為2019年最具新引力的人才。請問你的吸引力指數是多少?
-
7 # 使用者2176687180877885
個人覺得沒有多火,我記得尼比魯好像用的go,感覺這是個卡在中間的語言,小公司不敢用,大公司更不敢用。不過部署是真的快,開發效率也高,就是維護麻煩。
-
8 # 未來資料科技
Go語言在大陸是火,倒不見得很火,不過go的很多優勢確實給go加分不少,先透過它的發展歷史在瞭解為什麼會火起來。
go語言的背景
2007年,受夠了C++煎熬的Google首席軟體工程師Rob Pike糾集Robert Griesemer和Ken Thompson兩位牛人,決定創造一種新語言來取代C++, 這就是Golang。雖然不能如願對C++取而代之,但是其近C的執行效能和近解析型語言的開發效率以及近乎於完美的編譯速度,已經風靡全球。go語言擁有那些優勢,讓它迅速火起來的?
這個出現在21世紀的具有新時代氣息的語言,也有這高效能的優勢,首先它的執行特別快,其效能與 Java 或 C++相似。在我們的使用中,Go 一般比 Python 要快 30 倍
Go裡面的標準庫基本上已經是非常穩定了,特別是網路層、系統層的庫非常實用。Go 語言的 lib 庫麻雀雖小五臟俱全。Go 語言的 lib 庫中基本上有絕大多數常用的庫,雖然有些庫還不是很好,但我覺得不是問題,因為我相信在未來的發展中會把這些問題解決掉。
Go也擁有強大的編譯檢查、嚴格的編碼規範和完整的軟體生命週期工具,具有很強的穩定性,穩定壓倒一切。也具有高併發性
總結
GO不僅擁有C的簡潔和效能,而且還很好的提供了21世紀網際網路環境下服務端開發的各種實用特性,讓開發者在語言級別就可以方便的得到自己想要的東西。目前主要用於區塊鏈,也常用於大資料、微服務、併發而生的一種程式語言大資料、微服務、併發的一些場景。
-
9 # Web前端進階指南
這個火拿啥對比的,還是你個人覺得呢?Go在大陸更火只是感覺上的。比如推文,以及談論的相關話題較多而已(但能有nodejs多麼?),本身華人口數量就多,按這個衡量的辦法去看的話,swift在大陸也比在國外火;
實際上Go在國外更火(這裡的火是實際的使用情況),對比一下大陸和國外使用Go的程度、數量,Go相關的技術大會舉辦的頻率和數量就一目瞭然了。
Go在大陸真正上被全棧使用的就七牛一家,但國外除了docker,coreOS還有很多初創企業。
國內比較有影響力的就一個beego框架,你看看國外的有多少。去github上搜一下active的Go的project數量,看看Go在國外是不是沒人用?我反正在github的trending裡面幾乎每天都能看到Go的project。hacker news上面有關Go的“xxx writen in Go”的炒作文也不要太多。
這個 dariubs/GoBooks · GitHub 是有人整理的Go相關的書籍,看看是不是國外的書籍比大陸的少?8月份K&R中的K也要推出屬於Go的聖經了。
另外老有人喜歡說:Google喜歡關閉產品,這玩意兒遲早死掉。可惜golang是開源專案,關不掉的,CloudFlare那個crypto的patch(Gerrit Code Review)以後可能會進Go的標準庫,Godep已經成為事實上的包管理標準,這些都是社群自己搞出來的,和google一毛線關係沒有。另外就是最近google自己一些主力產品或者平臺在優先支援語言上,Go總是和java,c/c++,python一起名列其中,grpc就是一個例子等等。所以,覺得Go只是google的一個玩具的人,你的觀點能不能站得住腳,自己掂量吧。
我的個人觀點是:
Go顯示已經站住了腳跟(如果是2013年,我還是不敢說這種話的),找到了屬於自己的空間,但是比起那些主流的甚至nodeJS來說,還是使用的不夠廣泛。這個語言人為炒作也罷,一些人認為的google光環也罷,實際使用也罷,總之:
這個語言已經站住腳跟了,能用於並且已經用於生產環境了,接下來幾年只會一直呈上升勢頭。
-
10 # 華南葉孤城
得益於開源項專案docker,並且由於go天然支援高併發的特性而被大陸一些大公司使用,比如七牛雲,因此推動了go在大陸的發展
另外,go的效能介於c與java之間,語法簡單,入手容易,開發效率高,在目前機器效能過剩的情況下,選擇開發效率高的語言,無疑可以為專案節約不少時間
回覆列表
Go 語言被設計成一門應用於搭載 Web 伺服器,儲存叢集或類似用途的巨型中央伺服器的系統程式語言。 對於高效能分散式系統領域而言,Go 語言無疑比大多數其它語言有著更高的開發效率。它提供了海量並行的支援,這對於遊戲服務端的開發而言是再好不過了。知道為啥火了吧。
go教程:http://codingdict.com/article/6745