2018 QCon 第一天早上參會有感
其實這次的 QCon 一共有三天, 但是我只去了半天。
前幾個月 QCon 臨近, 老大豪氣干雲地一揮: “今年我們買票去聽 QCon!” 於是我們非常開心地到網站上一看, 一張票幾千人民幣… …… 預算不多的我們只能在力所能及的範圍內買一些票, 然後把每張票拆成好幾塊, 讓儘可能多的同學都去感受一下“全球軟體開發大會”的氛圍。 (QCon 的中文名真的是叫這個!)
這次我就去聽了個早上, 在主會場彭蕾/臧秀濤致辭以後, 聽了三場講師的分享。
Java API Design Best Practices
第一場本來是個老外講 Go 的, 但好像路上堵車沒能來得及到會場, 所以臨時換了個講 Java 的老外。
這位老哥叫 Jonathan, 呆的公司一路是 Sun/Oracle/Microsoft, 介紹完自己以後, PPT 突然切到了 <Effective Java (3rd)>, 然後 Jonathan 吹了一波: “這可是寫 Java 的程式員都必看的一本書!”
然後話題逐漸切入正軌,Jonathan 提出了好的 API 會有的幾個特質:
- 易懂的 (Understandable)
- 穩定的 (Consistent)
- 合適的 (Fit for purpose)
- 文件好 (Well documented)
- 節制的 (Restrained)
- 可進化 (Evolvable)
然後 Jonathan 用具體的例子穿插著講了一下他對這幾個特質的理解。
我聽下來感覺拋去具體的語法例子, 優秀的 API 特質都是共通的, 就像之前寫的 ofollow,noindex" target="_blank">《優雅的 Python 介面設計》 一樣。
最後 Jonathon 又吹了一波
騰訊微服務架構的過去、現在與未來
休息了一會兒,就到了騰訊講師劉昕的回合了。
雖然話題是微服務框架, 但是感覺大部分時間劉昕都在宣傳自家框架 Tars (github.com/TarsCloud) …
不過整體講的邏輯還是很清晰的:
- 最早遇到了業務邏輯複雜、程式碼質量難控、運營管理混亂、監控體系缺失的問題。
- 後來在“大系統小做”的指導思想下,逐步開始統一框架。
- 框架是首先實現了服務呼叫+服務治理的基礎功能。
- 然後提升了效能+易用性。
- 現在還引入了容器化+高拓展性(其實到這一步就可以開源推廣了)
劉昕用的 PPT 裡有兩個很好玩的資料。 一個是 51% 都考慮往 Cloud Native 的架構轉。 這個資料引出的話題是一個很不錯的話題, 讓 AWS 重度使用者很想說些什麼, 感覺下次可以專門碼一篇文章。
還有一個是用 服務治理/多語言 的不嚴謹劃分成的四象限:
非常有趣。
最後劉昕還花了不少時間講了一下 TARS 支援的多門語言。 聽了以後我很佩服(然後選擇了 service mesh…)
The Past, Present, and Future of GO 2
休息了一會兒後,本應第一個開講的 David Chaney 終於來啦。 (@hulucc 問:他跟 Go 啥關係啊? @紫月酥 答:應該就像 @jkzing 跟 VueJS 的關係一樣,是核心 Contributor。)
一開始 David 講了很多歷史, 比如 Go 誕生的初衷, Go 從小長大一路走過的路, 軟工和編碼的區別, Go 多個版本的更新, 現在用 Go 的公司/團隊/專案之類的… 聽得我感覺又是一個典型的佈道師, 就當是給純萌新科普 Go 了…
然後! David 突然又介紹了一波 gopher 這個萌物:
(感覺全場一下子就四老外興奮.jpg起來了)
在漫長的鋪墊以後, David 終於講到了 Go 面臨並且要解決的三個大的問題:
- 依賴管理 (Dependency management)
- 錯誤處理 (Error handling)
- 泛型 (Generics)
聽到這裡,我一拍大腿: “對對對!我當時就是因為這個棄坑的!”
隨之 David 不緊不慢地用各種小例子給出了目前的解決方案:
- Go 1.11 裡已經可以用 go modules 來管理依賴了。(初見的我有種 node_modules 的熟悉即視感)
- Go 2 裡會引入 check/handle 等語法糖來處理錯誤,本質上還是要第一時間讓程式設計師自己處理錯誤的
- Go 2 裡會有泛型,目前可能會引入 contract。(但具體怎麼搞,我感覺我這裡沒太聽明白,之後得去深入看看)
而後 David 還特別強調了一下, Go2 和 Go1 只是大版本不一樣, “是不會像 Python3 或者 Perl6 那樣滴…”
感想
主會場第一天上午到此就全部結束了。 整體下來,我感覺對眼界增長大於技術收穫。 可以知道同僚都在朝著什麼方向去深耕也是非常不錯的收穫。
2018年的最後一個季度肯定會再次把 Go 給撿起來認真玩一下… (不過沒有引數預設值真的寫起來很難受啊.jpg)
(完)