两位创造者Rob Pike和Robert Griesemer一起探讨了Go成功的原因。

作者 | Jerod Santo

译者 | 风车云马,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

常言道,历史不会重演,但总会惊人的相似。

如果您想创建一种编程语言,多向那些有经验的人士学习,他们有很多可取之处。在《Go Time》第100期节目中,两位Go语言的创造者Rob Pike和Robert Griesemer一起探讨了他们的经历。

以下是他们认为取得成功的5大原因。

正式的语言规范

在讲述这个项目的起源时,Rob说:“我们经过六个多月的头脑风暴和思想成形之后,我们做的第一件重要的事情,就是花了几个星期写了一份正式的语言规范,我认为这是项目成功的关键部分。” 该规范引起了其他工程师的兴趣,比如Ian Lance Taylor。

还有最重要的事情之一是Ian Taylor看到了规范,并决定为它编写一个编译器。有一天他走进我们的办公室说:“顺便说一下,我为你们的语言做了一个编译器。” 这是一个多么神奇的时刻。当然,他后来成为了团队的一员,现在他还在为Go工作。

杀手锏App

Rob说当时并没有重点考虑为什么要引入Docker 的,大概是为了使Go语言对系统程序员有吸引力?

是的,Docker现在是我们的杀手锏App,因为它是用Go编写的,运行良好,它成为了现在所谓的云计算的核心……我们过去只称它为系统编程或服务器。事实上,只要有一项重要的技术是用Go语言写的,这就证明了它的用武之地。我认为Go确实是一种很好的语言。

后来又出现了Kubernetes。能够使用你的语言编写重要的软件,这是取得成功的一个重要部分。如果一门语言没有任何应用内容,那么它有多好就无关紧要了。

他们建立了一个开源社区

Rob相当坦率地谈到了他们在开放源码世界中所面临的挑战,这让人耳目一新。

我确实认为这个团队并没有真正准备好与开源社区进行交互。Ian是我们中唯一一个在开源世界中待了很长时间的人,他在社区中做的事情比他应得的要多。

我们花了很长时间才理解开源社区意味着什么,比如有一个项目,该项目是由公司支付,但有很多开源贡献者…我们早期有很多出色的开源开发。Windows的移植完全是由外部贡献者完成的,这非常棒……社区的输入也很关键。

有时人们认为社区受谷歌控制太多了,这是他们的观点,我不同意;我认为他们低估了团队听取开源社区的意见、处理所有问题的能力……

建立开源社区,这是一件很有挑战性的事情,因为有成千上万的人(现在全世界有数百万的Go程序员),他们都对这件事有自己的看法,也知道如何去做。每个人都想要不同的东西,但是这很棘手,很难平衡。

不会改变其他语言

这一点一开始有点违背常理。通常对于软件来说,要推崇其可塑性,而要避免僵化。然而,Rob很好地解释了这一点。

我们故意这样做,对于Go语言我们承诺不改变任何东西。这对语言的成功至关重要,因为它使企业相信我们所做的事情和依赖我们不会破坏他们的东西。我想很多人没有意识到这一原则。我们没有破坏人们的程序,即使这是一个有十年历史的项目。这多么令人难以置信,但正因为如此,我们才走到现在。

坚持自己的信仰

当面对社区的不良反馈以及团队如何做出改变的时候,Rob说:

Go的一些特点对它的成功至关重要,但人们并不喜欢,我们对此也直言不讳。我想您提到的,未使用变量的编译错误就是其中之一。这是令人非常恼火的,哪怕你忘记删除一个未使用的变量,你的程序将出现编译错误。但对我们来说,这是Go语言出彩的地方。虽然不能阻止你写“坏”代码,但我们试图告诉你…这样可以避免你的程序很慢,或者你的代码难以维护。

其实真正让人们抓狂的是,Go不允许导入你不使用的库。这对我们来说是至关重要的,因为程序构建和处理大量二进制文件会花费很多时间,我们确保您的程序的依赖项正是您所需要的。但对很多人来说,每次编辑并删除打印语句或其他内容时,编译器都会说“你没有使用这个库”,这简直是太烦人了。

后来,Brad编了一个基于gofmt的goimports,为你管理那些编译项,这基本上平息了那些抱怨。

以上就是Rob Pike的Go语言成功的5件事。整个对话都很精彩,值得一听。你还在等什么?

原文:https://changelog.com/posts/5-things-rob-pike-attributes-to-gos-success

本文为 CSDN 翻译,转载请注明来源出处。

Go 语言为什么能成功?相关推荐

  1. VScode设置语言为中文成功,菜单栏仍然显示成英文状态

    我在VScode设置语言为中文成功 菜单栏仍然显示成英文状态. 解决方案: 第一步:Ctrl + Shift + p 第二步:配置语言 第三步: 选择中文 第四步:重启 重启之后就好了,没问题了.以上 ...

  2. c语言exit在哪个头文件_C语言函数执行成功时,返回1和返回0,究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  3. 怎样学好C语言,一个成功人士的心得!

    今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email,一部电影都是用一连串的 ...

  4. C语言 | 函数执行成功时,return 1 还是return 0?

    今天分享的内容是关于函数执行成功,返回0还是1的讨论~ 基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封 ...

  5. 当C语言函数执行成功时,返回1和返回0究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数.更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  6. c语言用户登录成功才能,c语言用户登录.docx

    } } c 语言登录界面 #include #include void main() { // 界面设计 int j; start: 欢迎使用 XX系统 *************n"); ...

  7. 如何学好C语言,一个成功人士的心得!

    来源URL:http://blog.csdn.net/yxnk/article/details/5976699/ 今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克 ...

  8. C语言函数执行成功时,返回1和返回0,究竟哪个好?

    基本上,没有人会将大段的C语言代码全部塞入 main() 函数,更好的做法是按照复用率高,耦合性低的原则,尽可能的将代码拆分不同的功能模块,并封装成函数.C语言代码的组合千变万化,因此函数的功能可能会 ...

  9. c语言程序编译成功运行失败,为什么这个程序编译成功但运行失败?

    为什么这个程序编译成功但运行失败? 可以编译,就是运行失败.请问哪里出问题了. 所示的程序在屏幕上打印函数F(y)=e-y*sin(2πy)的曲线. #include #include #define ...

最新文章

  1. Alpha fold: 人工智能在蛋白质结构预测上跑赢人类的启示
  2. Jackson 框架使用说明,轻易转换JSON【转】
  3. Canny边缘检测算法
  4. SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)
  5. java数组空指针一场_Java使用自定义类数组报空指针异常
  6. Oracle 客户端库时引发 BadImageFormatException
  7. php 打印对象详细信息,php打印显示数组与对象的函数详解
  8. MYSQL优化派生表(子查询)在From语句中的
  9. List 、Set、 Map有什么区别和联系
  10. mysql按时间月份查询数据
  11. 深度学习 --- 受限玻尔兹曼机RBM(MCMC和Gibbs采样)
  12. FragmentTabHost+FrameLayout实现底部菜单栏
  13. 局部特征提取-LBP算法
  14. 估计的商是什么意思_商_商是什么意思_商字怎么读_商的含义_商字组词-新东方在线字典...
  15. 如何使用FreeTime将Android或Fire Tablet变成适合儿童使用的设备
  16. Java实现图像增强之伽马变换
  17. 从《道德经》看项目经理修炼的7条法则,你做到了几条?
  18. c语言课程设计总结心得大全,c语言课程设计的心得体会
  19. 查查自己五行属什么命
  20. Android 给RecyclerView添加头部和尾部

热门文章

  1. 两种查找bapi的方法
  2. SQOOP 导出SQL SERVER中数据
  3. const与修饰函数形参
  4. java安装_如何在 Mac 上安装 Java | Linux 中国
  5. 中国水平电泳系统市场趋势报告、技术动态创新及市场预测
  6. 晶圆级封装行业调研报告 - 市场现状分析与发展前景预测
  7. 第7章 贪吃蛇(《C和C++游戏趣味编程》配套教学视频)
  8. 2017年UI、Web、微服务顶级框架都有啥?不看就落伍了1
  9. 面向现代化应用,火山引擎云原生究竟提供了哪些能力?
  10. 时代变了,199 美元的 iPhone 都可以想了?