创建一门语言是不易的,而创建一门成功的语言,被众人接受使用的 编程语言 更是难上加难,那么golang是如何取得成功的呢?让我们听听创始人罗布派克的回答。
我们写了一个正式的规范
在正式确定规范之前,我们开始了大约六个月的头脑风暴和细节敲定。我们所做的第一件重要的事情就是我们编写了语言的正式规范,我认为这是该项目成功的关键部分。
其中还有一个重要的事情是伊恩·泰勒看到了规范,决定为此编写一个编译器。有一天他走进我们的办公室,说:“哦,顺便说一句,我已经为您的语言编写完了一个编译器。”对于我们来说,这真是令人惊讶的时刻。
我们推出了杀手级应用
我相信你们一定听过 Docker , ♂️是的,Docker是我们的杀手级应用程序,因为它是用Go编写的,它运作良好,并且成为了现在所谓的云计算的核心。
我们过去仅将其称为系统编程或服务器。而且其中一项关键技术是用Go语言编写的,这一事实证明了该语言满足许多人的口味。而且,我认为这实际上是一门非常好的语言。这是我们在将语言整合在一起时所考虑的事情,尽管我们不是自己做的。
后来,Kubernetes又出现了,用我们的语言编写出色的软件是一件很美好的事情,对于一个语言,如果有出色的软件是用它来编写的,那么它一定是一个成功的编程语言。
我们建立了一个 开源社区
我们花了很长时间才了解成为开源社区的一部分意味着什么,拥有一个基本上由公司支付的项目,但是有很多开源贡献者。
实际上,我们有很多很棒的开源发展发生得很早。 Windows的移植工作完全由外部贡献者完成,这真是太好了。
我认为有时人们会认为谷歌对代码控制得太多,但是我不这么认为。我认为他们低估了团队听取开源社区所说的话,阅读所有问题,很好地处理所有问题的程度。
当有成千上万的一起对语言提出改进意见的时候,这是一件非常具有挑战性的事情,而现在,我相信全世界有数以百万计的Go程序员。
我们让语言难以改变
首先,这有点违反直觉。通常对于软件而言,延展性是一种美德,而强硬是一种诅咒。但是对于像Go这样的编程语言却是不同的。
对于Go的第一个版本,我们刻意写下我们保证不做任何更改。这对于语言的成功至关重要,因为它使企业能够相信我们正在做的事情以及依赖我们的事情不会破坏他们的工作。
虽然这使得进行更改变得更加困难。但我认为我们并未破坏软件的发展,我们只是让软件朝着正确的方向前行,不让他脱轨,这是我们必须要保证的。
我们坚持自己相信的特性
Go的某些功能对它的成功至关重要,虽然这些功能人们非常不喜欢。我们非常知道人们不喜欢他的程度,比如未使用变量的编译错误,这很烦人,当您忘记删除未使用的变量,程序就不会通过编译。但是对于我们来说,这是非常重要的一部分,那它可以使一种语言能够尽可能保证高质量的代码。我们希望每个人都可以写出健壮的代码,虽然这不太现实,但是我们可以确保一些不雅的代码可以快速被发现,,虽然这会使您的构建速度变慢,但是总好过难以维护的代码。
我认为还有一个使人发狂的是不允许您导入不使用的包。这对我们非常重要,因为我们花了很多时间在构建大量二进制文件的过程中,确保您程序的依赖项完全是您所需要的,会缩构建时间。对于很多人来说,每次您进行编辑并删除打印语句或类似内容时,编译器都会说“您没有在使用该库。我不会再引入你了。”
然后,布拉德(Brad)编写了一个名为goimports的东西,它是gofmt的变体,可以为您管理包的导入,他应该可以减伤人们的烦恼。