Gopher China 2021 講師專訪 — 曹春暉

astaxie發表於2021-05-26

  1. 最初如何與 go 結識的?在此之前,有無接觸過其他語言?談談他們的優缺點。

在創業公司工作的時候,看到一個資訊檢索模組是 Go 寫的,當時主要寫 PHP,也稍微寫過一點 C,被 Go 簡單直白的語法和高效的併發程式設計震撼到了。後來跳槽到滴滴就找機會慢慢從 PHP 轉 Go 了。剛畢業的時候其實是從 C 開始寫的,被 void * 和 callback hell 折磨得死去活來,就投向了 PHP 的懷抱,結果發現 PHP 在大公司有很多大專案,幾十萬行程式碼,一樣非常難維護,那些幾千行程式碼的介面連順暢地讀下來都很難,改起來同樣也很心虛。轉了 Go 以後,基本沒這種煩惱了,幾乎所有的專案讀程式碼都很輕鬆,也很開心。

  1. Go 語言中最看好哪種特性,談一談理由以及你希望它改進的方面

泛型,找再多不需要泛型的理由,你還是無法在沒有泛型的前提下既保證程式碼重複少,又能做到型別安全。泛型到位之後,至少大家寫一些複雜的資料結構庫能輕鬆很多,以前的這些庫是複製貼上斷言漫天飛的。希望的改進:個人現在最希望改進的是 if err != nil。。造成了太多的程式碼重複,但是也不喜歡官方之前那個 try 方案,像某語言那樣的問號操作符不就挺好的。要是能支援註解的話,做語言本身的擴充套件會方便很多 (這一條感覺官方應該不太會考慮)

  1. Go 語言對大廠和創業公司來說分別有什麼優越性?

大廠:對延遲敏感的業務 (如高頻交易、廣告) 是少數,Go 對於 80% 的業務是適用的。大廠的單模組程式碼量都非常非常多 (很多都 10w 行起了),相比 PHP 和 Python,這種規模的專案用 Go 寫,就是好維護。當前使用 Java 的公司在上雲後碰到了很多水土不服的問題,為了解決這些問題又需要付出更多技術上的努力 (再說下去這段就不能播了)。用 Go 上雲還是比較省心的。 創業公司:買公有云是按用量算錢的,用的資源少就是省錢。就是這麼現實。

  1. Go 有沒有幫助解決公司的實際問題?

Go 在工程化上做了很多努力

  1. 研發效率不好說,大家都有一些常見的程式碼生成工具的話,其實差不多,但強型別語言,在專案中後期維護階段,肯定比那些 array 滿天飛的強
  2. 官方直接把 parser 對使用者開放,做 linter 不要太方便,工程效率部門直接將 golangci-lint 拿到公司內再針對業務場景做一些定製的 linter 就可以用起來了。
  3. 運維不用再考慮我給哪個業務用 PHP x.y 版本的問題了
  4. 印象中某公司說從 PHP 遷移到 Go,能節省至少一半伺服器吧 (這句是傳說,我沒驗證過,各位 PHP fan 不要生氣

  5. 對眾多大廠轉 Go 提一些建議吧,在選型上 Go 語言適用什麼場景,不適用什麼場景?

延遲敏感 (廣告、高頻交易) 類的場景用 Go 不合適,集中式的併發極高 (幾 w QPS) 的閘道器係統用 Go 不合適,大資料場景 (已經有現成的 Java/Scala SDK,Go 什麼庫都沒有的那種) 不適用。雖然一般會講 go 的 stw 已經控制在個位數毫秒以內了,但實際請求的延遲不只受 stw 影響,所以在 POC 階段也應該自己做一些壓測和資料驗證。除了上面講的,80% 的其它場景問題不大。

  1. 談一談 Go 的未來,將在哪些領域有更深的應用

Go 現在其實已經是後端服務、分散式基礎元件、運維相關領域的主流語言了。個人傾向上希望能在泛型出現後能在資料領域 (如實時計算) 上稍微有一些擴充,但感覺可能比較難。

  1. 介紹下本次分享的議題吧

這次分享是 Go1.14 的訊號式搶佔,之前看了作者在 GopherCon 上的分享,只是介紹了一些概念,相信完全沒有滿足大家的好奇心,這次我們就來詳細看看這個東西到底是怎麼實現的。

  1. 分享一下如何快速掌握一門新的程式語言,分享一些經驗給新 gopher 吧。學習 go 的最佳實踐是什麼? 推薦一些書吧!

要多動手,多抄程式碼。比如看《The Go Programming Language》,能把書上所有的例子都抄明白,那就已經入門了。入門以後,儘量結合工作多寫專案。還是從實踐中學習最靠譜。要是你對 cgo 啊,彙編什麼的感興趣,歡迎買柴老闆和我合著的《Go 語言高階程式設計》呀。其它的書,就買最暢銷的就完事了!

  1. 你是第幾次參加 GopherChina,對 GopherChina 大會有何期待?

應該是第三還是第四次了,希望以後 GopherChina 能一直保持技術和應用兩類主題並重,不要變成架構師大會 (笑

更多原創文章乾貨分享,請關注公眾號
  • Gopher China 2021 講師專訪 — 曹春暉
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章