其实这次的 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 特质都是共通的,
就像之前写的《优雅的 Python 接口设计》一样。
最后 Jonathon 又吹了一波 ,
并且还极力宣传说:“你们这些只看过第二版的,记得买第三版看看啊…”
简直让人怀疑这本书给他分成了(x
腾讯微服务架构的过去、现在与未来
休息了一会儿,就到了腾讯讲师刘昕的回合了。
虽然话题是微服务框架,
但是感觉大部分时间刘昕都在宣传自家框架 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)
(完)