https://www.youtube.com/watch?v=kKQLhGZVN4A

每次剛學一個新的程式語言,自己的心裡總是會想著“這個新的語言特點是什麼?他究竟能夠為了產品或是你工作的事情上帶來哪些幫助?”
學習Golang的時候,我也是會這樣想.剛好找到了這一段影片,把它的一些內容做個整理,如下:

  • Juju - Ubuntu (Canonical)

    • 語言轉換:

    • 這是什麼?

    • Golang帶給Juju的好處:

      • Juju原本是使用Python來寫的,會換到Golang上面其實有相當多的理由,稍微整理一下:

        • Error Handle: 這大概是基本上Golang最強大的功能. 

        • Concurrency: 這也是Golang被人喜愛的主要原因,目前我也還在努力地摸索.

        • 他其實有更多沒有提到的,我稍微截個圖讓大家看一下
          JPG juju more

  • Heroku

    • 語言轉換:

    • 這是什麼?

      • Heroku 算是現在幾個知名的PaSS (Platform as a Service)之一,主要就是讓人host你的網路相關的service.

      • 這裡有更詳細的解釋.

    • Golang帶給Heroku的好處:

      • Heroku 主要有一個Routing Table Service  來記錄超過 190萬個App的操作.這樣的service主要就是透過REST API然後與後方的PostgreSQL資料庫.原本是使用Ruby來撰寫一個部分的控制.詳細的流程圖我截取下來如下:
        JPG Heroku Ruby

      • 問題來了,bootstrapping new instance由於要產生一些資料所以是不夠快的,根據講者的說法,這跟Ruby產生initial JSON dump有關.

      • 所以他們使用Golang在幾個小時內完成Streaming update部分的原型並且測試上線, 結果帶來以下的結果:

        • 速度增加十倍以上(?)

        • 產生新的資料在Golang上面再也不會成為整個流程的瓶頸,網路處理速度也變快.

      • 目前他們也在思考把其他的部分開始改成Golang

  • StatHat

    • 語言轉換:

      • 一開始似乎就是用Go打造(99%)有部分也從RoR轉換到Go
    • 這是什麼?

      • StatHat是一個記錄資料的服務,他提供多個語言的支援(接近15個).可以提供給其他網路服務公司做一些資料的追蹤, 可以顯示各種的圖形與方式.
    • Golang帶給StatHat的好處:

      • 提了幾個優點

        • Fast:

          • 速度比較上,Golang在網路處理上算是真的相當快速的.
        • Resource Friendly

          • 他指的比較偏向社群資源多
        • Easy to deploy

          • Go binaries are self-contained

          • No shared libraries, no gem and dependency

        • Fun

      • 這邊有他們Open Source出來跟他們產品有關的code,可以參考.

  • Iron.io

    • 語言轉換:

      • Ruby -> Golang
    • 這是什麼?

      • Iron.io 是一個網路服務提供商,主要分成以下幾個產品:

        • ironWorker 平行的工作平台,本來用RoR寫但是有點慢,用Go改寫後就變快很多.

        • ironMQ 訊息序列傳送廠商,是一個可以擴充的服務

    • Golang帶給Iron.io 的好處?

      • 在ironWorker裡面很大一部份的工作是需要分配工作與平行處理架構,這是Golang主要能提升的部分,而他們會使用Golang的原因如下:

        • 速度快

          • 執行快而且編譯也快
        • Still reasonably express

        • Rich standard library

          • 也就是因為build-in 標準函示庫是足夠使用的,所以容易散佈跟編譯.
        • Not tie to VM

          • 指的是編譯好之後可以直接執行,不用綁太多環境.
        • Awesome

          • 寫起來很開心(我目前也是感覺相當有趣…)
  • Q&A: (標記的公司為回答的代表)

    • [Heroku] 如何決定哪些產品要轉換到Golang?

    •  [StatHat] 比起Go而言,Ruby 有著龐大的資源與社群那為什麼要轉換到Go呢?

      •  要用Go重寫其實是不難的(指的是他們用到的部分)
    • [Heroku][Juju] 你最喜歡的Go library

      • 不用懷疑~當然是Go fmt . (我也覺得Go fmt幾乎把所有功能都用到了~)
    • [StatHat][Juju]  你們覺得學習Golang 要多久呢?

      • [StatHat] 我們大概學了幾個禮拜

      • [Juju] 我認為我從來不曾停止學習,能上手是很快但是要能真正了解其中含義,就要不斷學習.(這讓我想到這篇文章)

    • [StatHat] 你有任何推薦的Go書籍嗎?

      • Golang.org? 其實我並沒有讀任何的Golang 的書籍. 

其他關於Golang 與其他語言的比較


Evan

Attitude is everything