1. 程式人生 > 其它 >為什麼越來越多的人偏愛go語言

為什麼越來越多的人偏愛go語言

如果你是一個開發者或者程式設計師,你大概應該聽過Go語言或者Golang語言。當然,如果沒有聽過也沒關係,看到這篇文章的同學,就說明你對Golang是關注的,只需要這一點就夠了。今天來聊聊關於Golang的幾個問題。

越來越多人偏愛Go語言的真相

可能你身邊有程式設計師朋友,或者技術論壇裡有人在談論Go或者Golang,引起了你的注意,讓你覺得越來越多的人喜歡Go語言。

作為一名負責人的技術普及人員,“越來越多”到底是多少,我去親自做了資料收集,如下圖:

  • 中國的Golang語言搜尋指數
  • Google中的Golang搜尋指數
  • Golang指數地區熱度分佈
  • Golang搜尋指數城市熱度分佈

看完上面的趨勢圖和熱度城市分佈,大家應該能看到了。不論是中文社群,還是Google 趨勢的全球搜尋趨勢,都驗證了“越來越多”人喜歡上Go這個事實。其次,Go中文社群的發展在全球來說還是非常活躍的,北京、深圳、上海更是城市熱度分佈的前三甲。

總之,上面的圖片和文字說明翻譯成人話就是:Go語言確實受到越來越多的人的關注。Go中國社群發展很快,想要學習和從事Golang語言的相關的職位,要去北上廣深一線城市。

聊聊歷史

目前大家熟知的是Go語言在2009年被公開發布。2012年,Go的創造者們釋出了Go語言的1.0版本。但很多人並不清楚Go語言的來歷和淵源,如果追溯到Go的萌芽時期,能夠發掘到上個世紀,因此你可以知道,Go語言的產生絕不是心血來潮。

Go語言的前身名稱為Limbo程式語言。Limbo是用於開發執行在小型計算機上的分散式應用的程式語言,它支援模組化程式設計,編譯期和執行時的強型別檢查,程序內基於具有型別的通訊通道,原子性垃圾收集和簡單的抽象資料型別。大家可以看到,Go語言中的模組化程式設計,包設計,靜態語言編譯檢查,通道,結構體,自動垃圾回收以及現在基於Go做的很多微服務,分散式程式設計框架等,可謂處處透露著Limbo語言的影子。

再舉一個例子,Go語言創造者之一是大神肯·湯普遜(Ken Thompson)創造了Unix系統和C語言,除此之外其還創造了UTF-8編碼,而恰恰Go語言的編碼格式正是UTF-8編碼。所以,我們現在來聊Go語言,或者說聊任何一門語言,從語言的參與者和設計者的履歷中也能發現很多有價值的資訊。這樣一位計算機界的大神,能親自操刀設計Go語言,必然是可以學一下的。

這裡插個話題,除了創立者之外,許多人都在為Go做佈道者。

這位作者就是布萊恩·柯林漢(Brian Kernighan,1942年-),如果你不熟悉他的名字,那你一定熟悉他的作品。他在36歲時寫了《C程式語言》,73時又寫了《Go程式語言》,可謂複製經典。

Golang給我的衝擊和震撼

使用衝擊和震撼著兩個詞,是因為我自己本身之前就是Java語言的使用者。因此,我這裡還是要說一句,使用Java進行開發的同學,強烈建議大家接觸一下Golang語言,接觸後絕對能感受到Golang語言滿滿的善意。

  • 語法更簡潔

上圖說Java和Go最簡單的語法編寫實現,相較於Java,Golang沒有任何的拖泥帶水。

  • 簡單的併發實現Goroutine 和 channel 使得編寫高併發的服務端軟體變得相當容易,很多情況下手機遊戲地圖完全不需要考慮鎖機制以及由此帶來的各種問題。單個 Go 應用也能有效的利用多個 CPU 核,並行執行的效能好。借用asta謝的話說:天生的支援併發是Go語言最大的特色。天生的基因和整容是有區別的,舉個例子來說:大家一樣美麗,但是你喜歡整容的還是天生基因的美麗呢?
  • 豐富的第三方庫如果是在3年以前寫這篇文章,可能Golang的第三方庫和社群還不是忒別完善。今天再來看Go語言的社群發展,標準庫和第三方庫目前已經豐富了太多。各位開發者在進行開發時不再需要自己重複造輪子,就可以直接拿來使用。比如:文字處理庫、序列化庫、資料庫連線庫、高併發框架、微服務框架、分散式框架、區塊鏈應用等等非常多的Go語言的實現。
  • 資料越來越全面現在,如果你想真的想學Go語言的話,已經可以在Github,中文社群,公眾號,論壇等很多地方,看到一些Golang各式各樣的應用和框架的資料,這為學習者們提供了最大的土壤,讓初學者可以有跡可循。
  • 未來可期移動網際網路普及以後,直播,視訊,社交,遊戲等長足發展,未來的5G更是不可想象。作為一名程式設計師,肯定越來越多的聽到了雲端計算、人工智慧、大資料、分散式應用、物聯網、區塊鏈等這些在現在或者將要引領技術發展的專業名詞。而Golang非常適合用來進行:伺服器程式設計分散式系統資料庫代理器網路程式設計記憶體資料庫雲平臺微服務區塊鏈等這些領域或者行業的應用和實施。

Golang社群發展情況

下圖是gihut網站監測統計的各語言的活躍程式碼庫,以及程式碼庫推送,被fork數以及新關注者的資料統計。從下圖中可以看出,Go語言作為一個2009年剛剛誕生的語言,在活躍程式碼倉庫的絕對數量上處於劣勢,依次向後看,用來評價倉庫fork數量,倉庫活躍度,新增觀看人數的指標上來看,Go語言呈階梯狀提升。打個比方的話就是:Go語言現在是一個進入了青春期的小男孩,目前身體發育各項指標良好,有非常大的可培養潛力。

Go自己也在努力:新品牌

2018年4月26日,Go官方釋出了Go語言新的品牌。新的品牌更為簡潔,遵循簡單而非複雜的核心理念。使用現代的斜體無襯線字型與三條簡單的運動線相結合,形成一個類似於快速運動的兩個輪子的標記,傳達速度和效率。字母的圓形形狀暗示了Go gopher的眼睛,創造了一個熟悉的形狀,並允許標記,和吉祥物很好的進行配對。來感受一下新品牌的風貌:

這說明一個問題:這個年代連程式語言都注意自己的形象包裝了!

當前現狀

目前的現實情況是,相較於企業的需求來說,市場上Go程式設計師數量還很少;而且因為採用go開發業務的一般是中型公司或者大型公司,這就要求招聘的Go程式設計師開發這有一定的程式設計能力,因此很多公司都招不到自己滿意的程式設計師,有的甚至在招聘其他語言時,會在JD上新增一條:願意學習或者轉向Go語言開發者優先。

聊到這裡,不知道大家能否理解了:為什麼越來越多的人開始偏愛Go語言。行文最後,再說句心裡話:按照都知道的物以稀為貴的道理來說,如果你在觀望是否學習Golang,那麼現在是個好機會。