iT邦幫忙

2021 iThome 鐵人賽

DAY 1
0
Modern Web

fmt.Println("從零開始的Golang生活")系列 第 1

Day1 Why Go?

What is Golang?

Golang又簡稱為GoGolang是一個始於2009年由Google開源的程式語言,由Google的一個團隊與其他外部貢獻者依同開發。Go旨於簡化軟體開發過程,尤其是對於複雜的架構與開發過程。

https://ithelp.ithome.com.tw/upload/images/20210915/20129737rWnrHnrUSS.png

Go是基於C語言開發的。並且也繼承了C的規範語法,並在進行了一些更動與功能優化的情況下,允許開發者安全地管理內存。

Go承諾代碼效率,這也讓他們成為企業將產品微服務化的首選,像是以下的公司都有使用Golang進行優化或者是產品發開:

  • Google
  • Apple
  • Facebook
  • Docker

...etc

What Are The Advantages Of Using Golang?

1. Golang Is Fast

Golang是一門編譯程式語言,這意味著他需要先被轉化成程序能讀懂的格式才能進行運行,與

Java類似。也因為Golang精簡且去冗地開發流程,使他已經被證明運行效率優於Java以及Python。詳情請見 Go vs JavaGo vs Python

2. Golang Is Easy To Learn

有別於C或是JavaGolang的學習時間與曲線會相對較短,尤其對於有著其他語言開發經驗的開發者,因Golang是基於C開發而成,雖然關鍵字與語法略有不同,但有經驗開發者能在Go身上找到其他語言的影子因而加快熟悉速度。

3. Golang Is Well-Scaled

最大的理由應該是Go有著Goroutine,它是個可以同時獨立運行的process。

一個Goroutines僅佔用2Kb,這也使得它在同時需要運行多個並發的process時可以很容易的擴展。Goroutine與Java的Thread不同,Goroutines 是non-blocking。你也可以當Goroutines當成是一個結合Javascript async approach與Java multi-threading好處的產物。

4. Comprehensive Programming Tools

作為一款開源的程式語言,它有著許多不同編譯器、IDE以及插件的支持,你也可以從Github下載許許多多由Go所開發的專案。

5. Growing Pool Of Talent

基於 Hired ,Go榮登 #1全球最受歡迎的程式語言,目前也有越來越多的公司開始使用Go,這也表示有更多的開發人員開始學習Golang,因此學習Golang可能會為你的職涯帶來更多的價值。

What Are The Disadvantages Of Using Golang?

1. Time Consuming

Golang比起一些dynamic programming language像是PythonPhp,還是需要較多的代碼才能完成類似的功能。因為前者嚴格來說還算是一門簡單的編譯語言。

2. It's a young language

Golang目前只發展了十二年,還是個相當年輕的程式語言。也因此他的SDK亦或者是第三方套件比起其他的程式語言來說少蠻多的。

3. Golang Doesn't Support Generic Functions

Go並不支持通用函數,開發者需要創建多個footprint of functions來處理各類型的參數,就像是Golang基於C一樣,缺乏對泛型函數的支持會嚴重限制代碼的可重用性,並降低開發過程中的效率。

這也是在某些開發領域設計當中,使用Python等能支持泛型函數的語言會更優於Go

When Should We Use Golang?

  1. Web Backend Services: 在後端服務領域,由於Golang的學習曲線較低,並且開發效率相對較快,因此能讓我們迅速地去拓展後端服務。
  2. High Flow Services: 由於Golang有著Goroutine,能夠讓我們的後端服務更有效地去承載高流量高並發的情境。同時Golang還為DockerTerraformKubernetes等資源密集型服務提供支持。

Summary

Golang或許不是一門最優秀的程式語言,但它在Google的扶持下,必定能在Backend以及DevOps領地有著屬於它的一席之地,也因此在未來的篇章當中將會圍繞著Golang基本語言特性以及Golang於Web Backend的開發進行解說。

對此,我們這三十天會將教學分為三大部分:

  • GO 基本語法與應用 —> 約莫15天
  • GIN金 後端服務設計與開發 —> 約莫10天
  • GO其他好用套件 —> 約莫5天

希望透過這三十天的學習能讓筆者與讀者對GO能夠有更深入的暸解!!


下一篇
Day2 Develop Environment For Go
系列文
fmt.Println("從零開始的Golang生活")30

尚未有邦友留言

立即登入留言