第01章 關於 Go 語言的介紹
第01章 關於 Go 語言的介紹
.序:
今天我又在GitHub上面建立一個專案...哈哈 時間:2019.04.05 開源協議:GPL-3.0
取名:[Anima ] https://github.com/java-aodeng/anima
簡介:Golang Study notes.
意義:anima 源自拉丁文,意義“靈魂”或“精神”
1.1 關於 Go 語言的介紹
Go 語言是由谷歌公司在2007年開始開發的一門語言,目的是能在多核心時代高效編寫網路應用程式。Go 語言的創始人 Robert Griesemer、Rob Pike 和 Ken Thompson 都是在計算機發展過程中作出過重要貢獻的人。自從2009年11月正式公開發布後,Go 語言迅速席捲了整個網際網路後端開發領域,其社群裡不斷湧現出類似 vitess、Docker、etcd、Consul 等重量級的開源專案。
計算機一直在演化,但是程式語言並沒有以同樣的速度演化。現在的手機,內建的 CPU 核數可能都多於我們使用的第一臺電腦。高效能伺服器擁有64核、128核,甚至更多核。但是我們依舊在使用為單核設計的技術在程式設計。
程式設計的技術同樣在演化。大部分程式不再由單個開發者來完成,而是由處於不同時區、不同時間段工作的一組人來完成。大專案被分解為小專案,指派給不同的程式設計師,程式設計師開發完成後,再以可以在各個應用程式中交叉使用的庫或者包的形式,提交給整個團隊。
如今的程式設計師和公司比以往更加信任開源軟體的力量。Go 語言是一種讓程式碼分享更容易的程式語言。Go 語言自帶一些工具,讓使用別人寫的包更容易,並且 Go 語言也讓分享自己寫的包更容易。
1.2 用Go解決現代程式設計難題
Go 語言開發團隊花了很長時間來解決當今軟體開發人員面對的問題。開發人員在為專案選擇語言時,不得不在快速開發和效能之間做出選擇。C 和 C++這類語言提供了很快的執行速度,而 Ruby 和 Python 這類語言則擅長快速開發。Go 語言在這兩者間架起了橋樑,不僅提供了高效能的語言,同時也讓開發更快速。
在探索 Go 語言的過程中,讀者會看到精心設計的特性以及簡潔的語法。作為一門語言,Go 不僅定義了能做什麼,還定義了不能做什麼。Go 語言的語法簡潔到只有幾個關鍵字,便於記憶。Go 語言的編譯器速度非常快,有時甚至會讓人感覺不到在編譯。所以,Go 開發者能顯著減少等待專案構建的時間。因為 Go 語言內建併發機制,所以不用被迫使用特定的執行緒庫,就能讓軟體擴充套件,使用更多的資源。Go 語言的型別系統簡單且高效,不需要為面向物件開發付出額外的心智,讓開發者能專注於程式碼複用。Go 語言還自帶垃圾回收器,不需要使用者自己管理記憶體。讓我們快速瀏覽一下這些關鍵特性。
1.3 開發速度
編譯一個大型的 C 或者 C++專案所花費的時間甚至比去喝杯咖啡的時間還長。
Go 語言使用了更加智慧的編譯器,並簡化了解決依賴的演算法,最終提供了更快的編譯速度。編譯 Go 程式時,編譯器只會關注那些直接被引用的庫,而不是像 Java、C 和 C++那樣,要遍歷依賴鏈中所有依賴的庫。因此,很多 Go 程式可以在1秒內編譯完。在現代硬體上,編譯整個 Go 語言的原始碼樹只需要20秒。
1.4 併發
要開發出能充分利用硬體資源的應用程式是一件很難的事情。現代計算機都擁有多個核,但是大部分程式語言都沒有有效的工具讓程式可以輕易利用這些資源。這些語言需要寫大量的執行緒同步程式碼來利用多個核,很容易導致錯誤。
Go 語言對併發的支援是這門語言最重要的特性之一。goroutine 很像執行緒,但是它佔用的記憶體遠少於執行緒,使用它需要的程式碼更少。
1.5 Go 語言的型別系統
Go 語言提供了靈活的、無繼承的型別系統,無需降低執行效能就能最大程度上覆用程式碼。這個型別系統依然支援面向物件開發,但避免了傳統面向物件的問題。如果你曾經在複雜的 Java 和 C++程式上花數週時間考慮如何抽象類和介面,你就能意識到 Go語言的型別系統有多麼簡單。Go 開發者使用組合(composition)設計模式,只需簡單地將一個型別嵌入到另一個型別,就能複用所有的功能。其他語言也能使用組合,但是不得不和繼承綁在一起使用,結果使整個用法非常複雜,很難使用。在 Go 語言中,一個型別由其他更微小的型別組合而成,避免了傳統的基於繼承的模型。
1.6 記憶體管理
不當的記憶體管理會導致程式崩潰或者記憶體洩漏,甚至讓整個作業系統崩潰。Go 語言擁有現代化的垃圾回收機制,能幫你解決這個難題。在其他系統語言(如 C 或者 C++)中,使用記憶體前要先分配這段記憶體,而且使用完畢後要將其釋放掉。哪怕只做錯了一件事,都可能導致程式崩潰或者記憶體洩漏。可惜,追蹤記憶體是否還被使用本身就是十分艱難的事情,而要想支援多執行緒和高併發,更是讓這件事難上加難。雖然 Go 語言的垃圾回收會有一些額外的開銷,但是程式設計時,能顯著降低開發難度。Go 語言把無趣的記憶體管理交給專業的編譯器去做,而讓程式設計師專注於更有趣的事情。
1.7 你好,Go
package main
import "fmt"
func main(){ fmt.Print("hello world") }
日常hello world ..哈哈
部落格開了快一年了,百度關鍵字 低調小熊貓 就能找到我了 ..哈哈
- 本文作者: 低調小熊貓
- 本文連結: https://aodeng.cc/archives/1554436868212
- 版權宣告: 本部落格所有文章除特別宣告外,均採用CC BY-NC-SA 3.0 許可協議。轉載請註明出處!