iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 26
1

當你發現我突然轉換題目,通常也就是我卡關的時候。

我在資料查找的過程中注意到Go,雖然與我的鐵人賽系列主題「新時代網頁框架」無關,但考量到「比較」這點上,還是可稍微介紹一下。

Go (也稱Golang)是近十年相當火紅 - 由Google研發團隊(可能也因此命名)基於C語言為基礎開發出的一套開源的編譯語言,第一個正式版本在2012年3月對外發布。Go之所以這麼火紅的其中一個原因是高效能,與Java、C幾乎同一個級別的速度,自然也比Elixir更快,不用說樂勝Ruby、Python、PHP;但相對犧牲的就對開發者的友善性,尤其是到目前為止Go並沒有推出網頁框架,所以對已經習慣被MVC框架(不管是Laravel、Django或Phoenix)所服務的開發者而言,一切都要自己動手刻應該會是一件相當痛苦的事 (更正:Go的網路框架非常多,難以想像當初怎麼會寫下這種錯誤)。下面這張圖列出了幾種常見的熱門語言,Elixir應該會落在JS與Go之間。

human vs computer
圖片來源:Why should you learn Go?

接下來會介紹一些特性:

  • 效能快
  • 開放原始碼
  • 語法簡潔:雖然是靜態編譯語言,但語法類似腳本語言
  • 跨平台支援
  • 部署簡單方便
  • 編譯快速
  • 內建函式程式設計 (functional programming)
  • 輕量級的物件風格
  • 內建全自動的垃圾回收 (garbage collection),可手動調整
  • 內建平行處理 (concurrency)
  • 強制統一程式風格
  • 內建開發工具

如果說Elixir是Erlang與Ruby之子,那Golang就像是C與Python的小孩。C語言的理念是信任開發者,不遮蓋底層而且保持對底層的友好,關注語言執行的效率與性能;而Python的精神是用最少的程式碼做盡量多的事。Golang試著結合這兩者,不僅比Python快30倍,同時又比C語言更好開發,保有一部分腳本語言(如Python、Ruby)的特性。

之前提過新的語言會採納函數式與物件導向的優點做結合,Go算是很好的印證了這一點。但Go去掉了很多物件導向常見的特性:

  • 沒有Class
  • 不支援繼承
  • 沒有構造函數
  • 沒有泛型

雖然這會讓習慣物件導向的開發者相當不適應,但Go的愛好者表示雖然需要多寫幾行程式碼,卻可以讓程式更加簡潔易懂。


參考資料:
https://coolshell.cn/articles/18190.html
http://cwchen.tw/tutorial/golang-prog/intro/
http://www.techug.com/post/you-should-learn-golang-in-2017.html
https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65


上一篇
Phoenix起步走:建立一個購物網站--上傳圖片
下一篇
Phoenix起步走:建立一個購物網站--Bootstrap
系列文
新時代的網頁框架比較-- 淺談Rails、Django、Phoenix、Laravel31

2 則留言

0
taiansu
iT邦新手 5 級 ‧ 2018-01-15 00:59:38

呃,go 的 web frameworks,就算只想要 MVC alike 的,也有 Revel、Iris,跟 Beego。

Bater iT邦新手 5 級‧ 2018-10-07 20:07:29 檢舉

感謝指正!!居然犯下這麼離譜的錯誤,今年就來寫go吧!

0
Bater
iT邦新手 5 級 ‧ 2018-10-07 20:10:33

更新文章

我要留言

立即登入留言