九问 Gopher China 2020 讲师之毛康力:从 Go 1.0 使用至今的鲜肉老司机

南笙酒味 提交于 2020-11-13 11:45:55

本期嘉宾:毛康力

PingCAP 研发工程师。目前从事数据库内核开发相关的工作,是 TiDB 项目的核心开发者之一。从 Go 1.0 版本发布时开始接触这门语言,并且在之后的工作中一直使用 Go 作为主力开发语言。早期写过关于 Go 的底层实现的开源电子书《深入解析 Go》,对 Go 的 Runtime 层有比较多的研究。业余喜欢折腾各种编程语言,尤其是 lisp,设计过自己的 lisp 方言并翻译成 Go。其它的关注点,主要还是在分布式系统以及基础架构相关的领域。

目前 Go 语言更新到 1.15 版本,已经是一门11岁的语言了,你觉得 Go 语言依然保持活力的核心竞争力是什么?有什么不足是需要在后续的版本迭代中改进的?

01

Go 语言本身设计得简洁易上手,基础库和核心项目让生态搭建起来了,我认为这是它能保持活力和竞争力的关键因素。

对当前的版本迭代已经挺满意了,感受得到 Go 官方团队的持续努力。

最初是如何接触到 Go 的呢?在使用 Go 之前都写过哪些语言,请谈谈对他们差异的感受。

02

Go 语言 1.0 版本发布的时候,无意中看了一下,然后就爱上这门语言了。

在 Go 之前,算正儿八经写过代码的,就只有 C 吧,C++ 学过但没学会。C 很能够锻炼基础素质,这是一些高级语言里面不容易学到的东西。接触过的其它语言就太多了,从汇编到 C,到 lua,lisp,F#,OCaml 这些不一一列举了,语言爱好者。

分类一下无非按过程式的,面向对象的,函数式语言。好玩的语言都不主流,在我看来最好玩的应该是 lisp,但是 lisp 不能拿来干活。真正干活的时候,都用 Go 语言了。把“好玩”和 “能干活的语言”结合起来,我写了个 shen-go 项目,用 Go 实现的一个 lisp 的方言。

谈谈你使用 Go 开发的过程中踩过最大的一个坑?

03

多线程版的原地冒泡排序....这是一个梗吧,以前随手写过一个排序,结果被多个 goroutine 同时调用相互内存覆盖。

目前越来越多的大厂和独角兽创业公司都在拥抱 Go 了,你所在的公司主要是用 Go 语言解决什么场景下的难题?

04

我们团队用 Go 实现的分布式数据库 TiDB,主要看中的是它在开发效率和性能上能取得的一个平衡。

最近有哪些 Go 的项目是让你觉得眼前一亮的?

05

OpenDiablo2,暗黑2 游戏用 Go 实现的。

https://github.com/OpenDiablo2/OpenDiablo2

可能偏好比较小众一些的东西,以好玩为主吧。

今年的大会我们也邀请到了 Go 的作者和 teamleader 来和大家对话,你最想和他们沟通的是什么问题?

06

泛型这个特性吧,什么时候可用,以及当它可用之后对语言使用上面带来的影响。

介绍一下你会在今年 Gopher China 大会上分享的选题,以及最期待的其他讲师的议题是哪个?

07

我要分享的选题是,《Go 在 TiDB 生产环境中实际遇到的 Runtime 相关的问题》。

最期待的是 《Go+实现机制剖析》,因为老许在这个项目的做法上,跟我做 shen-go 很类似,都是虚拟机和编译到 Go 这样的实现方式。想看看思想上会不会有什么启发。

你觉得 Go 语言未来最高会有怎样的排名表现?(目前排名前十)

08

我觉得排名还会有提升的空间,上限应该会排到 Java 前面去。

目前技术圈有个难以避免的词“内卷”,你觉得个技术人如何才能保持竞争力不被淘汰?

09

学习能力吧,只有持续的学习和进步,才能保持竞争力。

2020 Gopher China 大会火热招募中,点击“阅读原文”立即报名~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!