Go語言簡介


 

go語言介紹

什么是Go語言?

參考博文

 

 

 

 

go核心團隊

 

 

 

解釋型語言和編譯型語言的比較

 

 

 

 

go的發展史

 

 

 

go語言的應用領域

 

 

 

為什么互聯網世界需要Go語言

世界上已經有太多太多的編程語言了,為什么又出來一個Go語言?

硬件限制:摩爾定律已然失效

摩爾定律:當價格不變時,集成電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,性能也將提升一倍。 換言之,每一美元所能買到的電腦性能,將每隔18-24個月翻一倍以上。

從上面的圖表可以看出,近十年單線程性能和處理器頻率保持穩定。我們不能像之前一樣把添加更多晶體管當成是解決方案,因為在較小規模上一些量子特性開始出現(如隧道效應),並且因為在同樣小的空間里放置更多晶體管的代價非常昂貴,每1美元可以添加的晶體管數量開始下降。

制造商開始從其他方面提高處理器的性能:

  1. 向處理器添加越來越多的內核,如四核和八核CPU。
  2. 發明了超線程技術。
  3. 為處理器添加了更多緩存以提高性能。

但上述解決方案也有其自身的局限性。因為成本原因我們不能無限制的為計算機添加內核,也無法無限制的添加緩存來提高性能,因為緩存越大,取值的性能越低。

我們沒有辦法在硬件上一直取得突破,我們需要提高軟件的性能或者說我們需要高性能的軟件。

Go語言為並發而生

如上所述,硬件制造商正在為處理器添加越來越多的內核以提高性能。所有數據中心都在這些處理器上運行,更重要的是,今天的應用程序使用多個微服務來維護數據庫連接,消息隊列和維護緩存。因此,開發的軟件和編程語言應該可以輕松地支持並發性,並且應該能夠隨着CPU核心數量的增加而可擴展。

但是,大多數現代編程語言(如Java,Python等)都來自90年代的單線程環境。雖然一些編程語言的框架在不斷地提高多核資源使用效率,例如 Java 的 Netty 等,但仍然需要開發人員花費大量的時間和精力搞懂這些框架的運行原理后才能熟練掌握。

Go於2009年發布,當時多核處理器已經上市。Go語言在多核並發上擁有原生的設計優勢,Go語言從底層原生支持並發,無須第三方庫、開發者的編程技巧和開發經驗。

很多公司,特別是中國的互聯網公司,即將或者已經完成了使用 Go 語言改造舊系統的過程。經過 Go 語言重構的系統能使用更少的硬件資源獲得更高的並發和I/O吞吐表現。充分挖掘硬件設備的潛力也滿足當前精細化運營的市場大環境。

Go語言的並發是基於 goroutine 的,goroutine 類似於線程,但並非線程。可以將 goroutine 理解為一種虛擬線程。Go 語言運行時會參與調度 goroutine,並將 goroutine 合理地分配到每個 CPU 中,最大限度地使用CPU性能。開啟一個goroutine的消耗非常小(大約2KB的內存),你可以輕松創建數百萬個goroutine

goroutine的特點:

  1. goroutine具有可增長的分段堆棧。這意味着它們只在需要時才會使用更多內存。
  2. goroutine的啟動時間比線程快。
  3. goroutine原生支持利用channel安全地進行通信。
  4. goroutine共享數據結構時無需使用互斥鎖。

Go性能強悍

與其他現代高級語言(如Java/Python)相比,使用C,C++的最大好處是它們的性能。因為C/ C++是編譯型語言而不是解釋的語言。 處理器只能理解二進制文件,Java和Python這種高級語言在運行的時候需要先將人類可讀的代碼翻譯成字節碼,然后由專門的解釋器再轉變成處理器可以理解的二進制文件。 -w839 同C,C++一樣,Go語言也是編譯型的語言,它直接將人類可讀的代碼編譯成了處理器可以直接運行的二進制文件,執行效率更高,性能更好。 -w1112 數據來源:https://benchmarksgame-team.pages.debian.net/benchmarksgame/

可以看出,Go 語言在性能上更接近於 Java 語言,雖然在某些測試用例上不如經過多年優化的 Java 語言,但畢竟 Java 語言已經經歷了多年的積累和優化。Go 語言在未來的版本中會通過不斷的版本優化提高單核運行性能。

Go語言簡單易學

語法簡潔

Go 語言簡單易學,學習曲線平緩,不需要像 C/C++ 語言動輒需要兩到三年的學習期。Go 語言被稱為“互聯網時代的C語言”。Go 語言的風格類似於C語言。其語法在C語言的基礎上進行了大幅的簡化,去掉了不需要的表達式括號,循環也只有 for 一種表示方法,就可以實現數值、鍵值等各種遍歷。

代碼風格統一

Go 語言提供了一套格式化工具——go fmt。一些 Go 語言的開發環境或者編輯器在保存時,都會使用格式化工具進行修改代碼的格式化,這樣就保證了不同開發者提交的代碼都是統一的格式。(吐槽下:再也不用擔心那些看不懂的黑魔法了…)

開發效率高

Go語言實現了開發效率與執行效率的完美結合,讓你像寫Python代碼(效率)一樣編寫C代碼(性能)。

學習Go語言的前景

目前Go語言已經⼴泛應用於人工智能、雲計算開發、容器虛擬化、⼤數據開發、數據分析及科學計算、運維開發、爬蟲開發、游戲開發等領域。

Go語言簡單易學,天生支持並發,完美契合當下高並發的互聯網生態。Go語言的崗位需求持續高漲,目前的Go程序員數量少,待遇好。

抓住趨勢,要學會做一個領跑者而不是跟隨者。

國內Go語言的需求潛力巨大,目前無論是國內大廠還是新興互聯網公司基本上都會有Go語言的崗位需求。

下圖是應用Go語言的公司舉例:

image-20190203135218456


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM