本期嘉宾:毛康力
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 大会火热招募中,点击“阅读原文”立即报名~
来源:oschina
链接:https://my.oschina.net/u/4370441/blog/4715552