lua|Go语言,Docker和新技术( 二 )



(图片来自 Medium:Why should you learn Go?)
所以 , 即便 Go 语言存在诸多的问题 , 比如垃圾回收、异常处理、泛型编程等 , 但相较于上面这几个优势 , 我认为这些问题都是些小问题 。 于是就毫不犹豫地入坑了 。
当然 , 一个技术能不能发展起来 , 关键还要看三点 。

  • 有没有一个比较好的社区 。 像 C、C++、Java、Python 和 JavaScript 的生态圈都是非常丰富和火爆的 。 尤其是有很多商业机构参与的社区那就更是人气爆棚了 , 比如 Linux 社区 。
  • 有没有一个工业化的标准 。 像 C、C++、Java 这些编程语言都是有标准化组织的 。 尤其是 Java , 它在架构上还搞出了像 J2EE 这样的企业级标准 。
  • 有没有一个或多个杀手级应用 。 C、C++ 和 Java 的杀手级应用不用多说了 , 就算是对于 PHP 这样还不能算是一个优秀的编程语言来说 , 因为是 Linux 时代的第一个杀手级解决方案 LAMP 中的关键技术 , 所以 , 也发展起来了 。
在我看来 , 上面提到的三点至关重要 , 新的技术只需要占到其中一到两点就已经很不错了 , 何况有的技术 , 比如 Java 三点全都满足 , 所以 , Java 的蓬勃发展也在情理之中 。 当然 , 除了上面这三点重要的 , 还有一些其它的影响因素 , 比如:
  • 学习难度是否低 , 上手是否快 。 这点非常重要 , C++ 在这点上越做越不好了 。
  • 有没有一个不错的提高开发效率的开发框架 。 如:Java 的 Spring 框架 , C++ 的 STL 等 。
  • 是否有一个或多个巨型的技术公司作为后盾 。 如:Java 和 Linux 后面的 IBM、Sun……
  • 有没有解决软件开发中的痛点 。 如:Java 解决了 C 和 C++ 的内存管理问题 。
所以 , Go 语言的未来是不可限量的 。 当然 , 我个人觉得 , Go 可能会吞食很多 C、C++、Java 的项目 。 不过 , Go 语言所吞食的项目应该主要是中间层的项目 , 既不是非常底层也不会是业务层 。
也就是说 , Go 语言不会吞食底层到 C 和 C++ 那个级别的 , 也不会吞食到上层如 Java 业务层的项目 。 Go 语言能吞食的一定是 PaaS 上的项目 , 比如一些消息缓存中间件、服务发现、服务代理、控制系统、Agent、日志收集等等 , 他们没有复杂的业务场景 , 也到不了特别底层(如操作系统)的软件项目或工具 。 而 C 和 C++ 会被打到更底层 , Java 会被打到更上层的业务层 。 这是我的一个判断 。
好了 , 我们再用上面的标尺来衡量一下 Go 语言的杀手级应用 Docker , 你会发现基本是一样的 。
  • Docker 容易上手 。
  • Docker 解决了运维中的环境问题以及服务调度的痛点 。
  • Docker 的生态圈中有大公司在后面助力 , 比如 Google 。
  • Docker 产出了工业界标准 OCI 。
  • Docker 的社区和生态圈已经出现像 Java 和 Linux 那样的态势 。
  • ……
所以 , 早在三四年前我就觉得 Docker 一定会是未来的技术 。 虽然当时的坑儿还很多 , 但是 , 相对于这些大的因素来说 , 那些小坑都不是问题 。 只是需要一些时间 , 这些小坑在未来 5-10 年就可以完全被填平了 。
同样 , 我们可以看到 Kubernetes 作为服务和容器调度的关键技术一定会是最后的赢家 。 这点我在去年初就能够很明显地感觉到了 。
关于 Docker 我还想多说几句 , 这是云计算中 PaaS 的关键技术 。 虽然 , 这世上在出现 Docker 之前 , 几乎所有的要玩公有 PaaS 的公司和产品都玩不起来 , 比如:Google 的 GAE , 国内的各种 XAE , 如淘宝的 TAE , 新浪的 SAE 等 。 但我还是想说 , PaaS 是一个被世界或是被产业界严重低估的平台 。