docker|Go语言,Docker和新技术

docker|Go语言,Docker和新技术

文章图片


你好 , 我是陈皓 , 网名左耳朵耗子 。
之前 , 作为 Go 语言的三位创始人之一 , Unix 老牌黑客罗勃·派克(Rob Pike)在文章“Go: Ten years and climbing”中 , 回顾了 Go 语言的发展历程 。 文章提到 , Go 语言这十年的迅猛发展快到连他们自己都没有想到 , 并且还成为了云计算领域新一代的开发语言 。 另外 , 文中还说到 , 中国程序员对 Go 语言的热爱完全超出了他们的想象 , 甚至他们都不敢相信是真的 。
这让我想起我在 2015 年 5 月拜访 Docker 公司在湾区的总部时 , Docker 负责人也和我表达了相似的感叹:他们完全没有想到中国居然有那么多人喜欢 Docker , 而且还有这么多人在为 Docker 做贡献 , 这让他们感到非常意外 。 此外 , 他还对我说 , 中国是除了美国本土之外的另外一个如此喜欢 Docker 技术的国家 , 在其它国家都没有看到 。
的确如他们所说 , Go 语言和 Docker 这两种技术已经成为新一代的云计算技术 , 而且可以看到他们的发展态势非常迅猛 。 而中国也成为了像美国一样在强力推动这两种技术的国家 。 这的确是一件让人感到高兴的事儿 , 因为中国在跟随时代潮流这件事上已经做得相当不错了 。
然而就是在这样的背景下 , 这几年 , 总还是有人会问我是否要学 Go 语言 , 是否要学 Docker , Go 和 Docker 能否用在生产环境等等 。 从这些问题来看 , 对于 Go 语言和 Docker 这两种技术 , 国内的技术圈中还有相当大的一部分人在观望 。
所以 , 我想写这篇文章 , 并从两个方面来论述一下我的观点和看法 。

  • 一个方面 , 为什么 Go 语言和 Docker 会是新一代的云计算技术 。
  • 另一个方面 , 作为技术人员 , 我们如何识别什么样的新技术会是未来的趋势 。
这两个问题是相辅相成的 , 所以我会把这两个问题揉在一起谈 。
虽然 Go 语言是在 2009 年底开源的 , 但我是从 2012 年才开始接触和学习 Go 语言的 。 当时 , 我只花了一个周末两天的时间就学完了 , 而且在这两天的时间里 , 我还很快地写出了一个能完美运行的网页爬虫程序 , 以及一个简单的高并发文件处理服务 , 用于提取前面抓取的网页关键内容 。 这两个程序都很简单 , 总共不到 500 行代码 。
综合下来 , 我对 Go 语言有如下几点体会 。
第一 , 语言简单 , 上手快 。 Go 语言的语法特性简直是太简单了 , 简单到你几乎玩不出什么花招 , 直来直去的 , 学习难度很低 , 容易上手 。
第二 , 并行和异步编程几乎无痛点 。 Go 语言的 Goroutine 和 Channel 这两个神器简直就是并发和异步编程的巨大福音 。 像 C、C++、Java、Python 和 JavaScript 这些语言的并发和异步的编程方式控制起来就比较复杂了 , 并且容易出错 , 但 Go 语言却用非常优雅和流畅的方式解决了这个问题 。 这对于编程多年受尽并发和异步折磨的我来说 , 完全就是眼前一亮的感觉 。

(图片来自 Medium:Why should you learn Go?)
第三 , Go 语言的 lib 库“麻雀虽小 , 五脏俱全” 。 Go 语言的 lib 库中基本上有绝大多数常用的库 , 虽然有些库还不是很好 , 但我觉得这都不是主要问题 , 因为随着技术的发展和成熟 , 这些问题肯定也都会随之解决 。
第四 , C 语言的理念和 Python 的姿态 。 C 语言的理念是信任程序员 , 保持语言的小巧 , 不屏蔽底层且对底层友好 , 关注语言的执行效率和性能 。 而 Python 的姿态是用尽量少的代码完成尽量多的事 。 于是我能够感觉到 , Go 语言是想要把 C 和 Python 统一起来 , 这是多棒的一件事 。