GopherConf 2017于7月13日到15日在美国丹佛举行,我在youtube上看了一些视频,本文是一些视频的观后感。

Russ Cox - The Future of Go

https://www.youtube.com/watch?v=0Zbh_vmAKvk

开始为Go2进行宣传。Go2的开发启动还早,但是社区已经开始考虑这个问题。Russ Cox分享了社区这几年来是如何改进语言的。我总结了几点如下:

首选需要清晰的描述出问题,以便社区进行讨论。 一个问题是否要解决取决于该问题的重要性和影响范围。社区引入一个不确定的feature的方式是等,等到这个feature足够重要了引入。。他举了Go 1.9中新增的type alias和monotonic clock的例子。这两个问题的解决都是在1.9版本中引入的,虽然问题的提出和解决方案在很早之前就完成了,但直到今年才决定要放到Go中。 解决问题的方式不一定是增加变成语言特性,也可能是增加工具(race detection),或者是增加标准库。

最后,他呼吁大家参与ExperienceReport(golang.org/wiki/ExperienceReports),为社区提供更多的问题积累,以便社区更好的决定哪些特性要引入到语言中。

Keith Randall - Generating Better Machine Code with SSA

https://www.youtube.com/watch?v=uTMvKVma5ms

讲述了Golang为什么要引入SSA(Static Single Assignemnt)。从1.5版本之后开始引入,1.7版本合入主干发布。SSA能够让Go代码更快更小,也能够让编译器更方便的对代码进行优化。从结果来看,引入SSA 后,AMD64平台,代码性能提升12%,缩小13%;ARM平台,性能提升20%,缩小18%。

Kavya Joshi - Understanding Channels

https://www.youtube.com/watch?v=KBZlN0izeiY

介绍了channel的内部实现,以及channel导致的goroutine的阻塞和唤醒在runtime中是如何实现的。

Rhys Hiltner - An Introduction to “go tool trace”

https://www.youtube.com/watch?v=V74JnrGTwKA

介绍了 go tool trace,内容一般,听得也不太清楚,不推荐。

Sam Boyer - The New Era of Go Package

https://www.youtube.com/watch?v=5LtMb090AZI

介绍了社区的实验项目 github.com/golang/dep ,这是一个用来实现包依赖管理的工具,用来解决现在广为诟病的包依赖问题。如果合适,将来会进入go tool chain。该项目已经production ready,大家可以开始使用了。


知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。