Gopher China 2021 講師專訪 — 曹春暉
- 最初如何與 go 結識的?在此之前,有無接觸過其他語言?談談他們的優缺點。
在創業公司工作的時候,看到一個資訊檢索模組是 Go 寫的,當時主要寫 PHP,也稍微寫過一點 C,被 Go 簡單直白的語法和高效的併發程式設計震撼到了。後來跳槽到滴滴就找機會慢慢從 PHP 轉 Go 了。剛畢業的時候其實是從 C 開始寫的,被 void * 和 callback hell 折磨得死去活來,就投向了 PHP 的懷抱,結果發現 PHP 在大公司有很多大專案,幾十萬行程式碼,一樣非常難維護,那些幾千行程式碼的介面連順暢地讀下來都很難,改起來同樣也很心虛。轉了 Go 以後,基本沒這種煩惱了,幾乎所有的專案讀程式碼都很輕鬆,也很開心。
- Go 語言中最看好哪種特性,談一談理由以及你希望它改進的方面
泛型,找再多不需要泛型的理由,你還是無法在沒有泛型的前提下既保證程式碼重複少,又能做到型別安全。泛型到位之後,至少大家寫一些複雜的資料結構庫能輕鬆很多,以前的這些庫是複製貼上斷言漫天飛的。希望的改進:個人現在最希望改進的是 if err != nil。。造成了太多的程式碼重複,但是也不喜歡官方之前那個 try 方案,像某語言那樣的問號操作符不就挺好的。要是能支援註解的話,做語言本身的擴充套件會方便很多 (這一條感覺官方應該不太會考慮)
- Go 語言對大廠和創業公司來說分別有什麼優越性?
大廠:對延遲敏感的業務 (如高頻交易、廣告) 是少數,Go 對於 80% 的業務是適用的。大廠的單模組程式碼量都非常非常多 (很多都 10w 行起了),相比 PHP 和 Python,這種規模的專案用 Go 寫,就是好維護。當前使用 Java 的公司在上雲後碰到了很多水土不服的問題,為了解決這些問題又需要付出更多技術上的努力 (再說下去這段就不能播了)。用 Go 上雲還是比較省心的。 創業公司:買公有云是按用量算錢的,用的資源少就是省錢。就是這麼現實。
- Go 有沒有幫助解決公司的實際問題?
Go 在工程化上做了很多努力
- 研發效率不好說,大家都有一些常見的程式碼生成工具的話,其實差不多,但強型別語言,在專案中後期維護階段,肯定比那些 array 滿天飛的強
- 官方直接把 parser 對使用者開放,做 linter 不要太方便,工程效率部門直接將 golangci-lint 拿到公司內再針對業務場景做一些定製的 linter 就可以用起來了。
- 運維不用再考慮我給哪個業務用 PHP x.y 版本的問題了
印象中某公司說從 PHP 遷移到 Go,能節省至少一半伺服器吧 (這句是傳說,我沒驗證過,各位 PHP fan 不要生氣
對眾多大廠轉 Go 提一些建議吧,在選型上 Go 語言適用什麼場景,不適用什麼場景?
延遲敏感 (廣告、高頻交易) 類的場景用 Go 不合適,集中式的併發極高 (幾 w QPS) 的閘道器係統用 Go 不合適,大資料場景 (已經有現成的 Java/Scala SDK,Go 什麼庫都沒有的那種) 不適用。雖然一般會講 go 的 stw 已經控制在個位數毫秒以內了,但實際請求的延遲不只受 stw 影響,所以在 POC 階段也應該自己做一些壓測和資料驗證。除了上面講的,80% 的其它場景問題不大。
- 談一談 Go 的未來,將在哪些領域有更深的應用
Go 現在其實已經是後端服務、分散式基礎元件、運維相關領域的主流語言了。個人傾向上希望能在泛型出現後能在資料領域 (如實時計算) 上稍微有一些擴充,但感覺可能比較難。
- 介紹下本次分享的議題吧
這次分享是 Go1.14 的訊號式搶佔,之前看了作者在 GopherCon 上的分享,只是介紹了一些概念,相信完全沒有滿足大家的好奇心,這次我們就來詳細看看這個東西到底是怎麼實現的。
- 分享一下如何快速掌握一門新的程式語言,分享一些經驗給新 gopher 吧。學習 go 的最佳實踐是什麼? 推薦一些書吧!
要多動手,多抄程式碼。比如看《The Go Programming Language》,能把書上所有的例子都抄明白,那就已經入門了。入門以後,儘量結合工作多寫專案。還是從實踐中學習最靠譜。要是你對 cgo 啊,彙編什麼的感興趣,歡迎買柴老闆和我合著的《Go 語言高階程式設計》呀。其它的書,就買最暢銷的就完事了!
- 你是第幾次參加 GopherChina,對 GopherChina 大會有何期待?
應該是第三還是第四次了,希望以後 GopherChina 能一直保持技術和應用兩類主題並重,不要變成架構師大會 (笑
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- Gopher China 2019 講師專訪 -晁嶽攀Go
- Gopher China 2019 講師專訪 -PingCAP 姚維GoPingCAP
- Gopher China 2019 講師專訪 -知乎後端工程師杜旭Go後端工程師
- Gopher China 2019 講師專訪-花椒直播技術總監周洋Go
- 曹春暉:談一談 Go 和 SyscallGo
- Gopher China 2019 講師專訪 -小米高階研發工程師徐成選Go工程師
- Gopher China 2019 講師專訪-Grab/地圖團隊資深架構師胡泊Go地圖架構
- Gopher China 2019 講師專訪 -探探平臺技術部軟體工程師於樂Go軟體工程工程師
- Gopher China 2019 講師專訪 -百度資深研發工程師陳肖楠Go工程師
- Gopher China 2019 講師專訪-騰訊/TARS開源團隊核心成員陳明傑Go
- 【重磅】Gopher China 2019 大會講師及議題揭曉Go
- 第二屆 Gopher China 大會Go
- OMG !Gopher China 限量版紀念衫!他來了!Go
- 出Gopher China 2019早鳥票一張 ---300Go
- 2015-Gopher China 2015 上海大會Go
- 結束東北地區 大學老師 ORACLE DBA 講課(長春)Oracle
- 阿里雲 MVP第6期招募與Gopher China社群合作啟動阿里MVPGo
- Gopher China 2018 大會來了,早鳥票開放Go
- 訪《中國軟體網》總裁曹開彬
- AC2016 大會講師專訪—— 億萬頁面直出架構專家何駿架構
- GopherGo
- 大師級專講 2015
- 群暉NAS設定IPV6公網訪問
- 王春暉:發展自主智慧財產權的網安核心技術迫在眉睫
- 專訪網易Messiah自研引擎領銜者:“做真正made in China的遊戲”遊戲
- 【Gopher China 社群創始人-謝大】邀請你來一起工作——“積夢智慧”招聘Go
- 專訪騰訊互娛副總裁崔曉春:小米加步槍,遊戲仍有機會出圈遊戲
- 田春:走在Lisp的岔路上(圖靈訪談)Lisp圖靈
- 如何在面試中介紹自己的專案經驗?祝你2021春招順利!面試
- 2021 Gopher Meetup 杭州站與你相約 1024Go
- oracle 講師Oracle
- Gopher上海 meetupGo
- Gopher 深圳 meetupGo
- 這位大牛講了啥?讓數百位 gopher 現場跪求PPTGo
- 2013年9月第1次面試&演算法講座(主講人:July & 曹鵬博士)面試演算法
- 專訪範鋼:重構不是陽春白雪的高階玩意,而是碼農程式設計利器程式設計
- 阿里雲MVP攜手Gopher China,尋找下一個MVP!申請就送100元代金券!阿里MVPGo
- [北京] Bespin Global China 招聘golang開發工程師Golang工程師