Go 语言为什么能成功?

两位创造者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 翻译,转载请注明来源出处。【END】

「点点赞赏,手留余香」

赞赏

  • 记Sm5緞9ff3陇
  • gimini_yuan
  • 玩物而已沬
  • 好孩子→磊磊
  • 瑞丶雯丨
  • 8人赞过
8
0
0
评论 0 请文明上网,理性发言

相关文章

  • "谢孟军:EGO会员、GopherChina组织者、《GoWeb编程》一书的作者,专注Golang技术架构。本文来自EGO会员群分享,入群方式见文末在这里我主要想和大家分享一些Go和我个人的成长史。首先聊聊Go,在2009年全部开源出来后,它获得了当年的年度语言,但是直到2011年它才发布正式的稳定版本。Go稳定版发布
    萌萌蔷 4 0 0 条评论
  • 前言 曾经我是一名以Java语言为主的开发者,做过JavaWeb相关的开发,后来转Android,还是离不开Java,直到转去做大前端了,其实也就是一直在用JS写业务。如今由于个人发展原因,来到阿里云,由于项目需要就撸起了Go语言;多年编程经验告诉我,语言只是工具罢了,重要的还是其思想与逻辑,所以只需学学语法就好了,
    2017xz 4 0 0 条评论
  • 作者|郝林 编辑|小智 本篇文章是Go语言2018年终盘点,力求客观、深入分析2018年Go语言的技术发展现状,同时对明年可能的发展情况进行预测和展望。 今年真可谓是不平静的一年,前有人工智能国家级战略的发布,行业已经在大跨步的挺进,但人才缺口每天都在扩大;后有区块链技术从爆发式增长到大幅回落,无数程序员蜂拥而至,
    身挂音 3 3 0 条评论
  • 来源|后端技术指南针(ID:gh_ed1e2b37dcb6) Go语言的巨大潜力有目共睹,今天我们来学习Go语言的Goroutine机制,这也可能是Go语言最为吸引人的特性了,理解它对于掌握Go语言大有裨益,话不多说开始吧! 通过本文你将了解到以下内容: 什么是协程以及横向对比优势Go语言的Goroutine机制底层
    西邦3jk9 7 0 0 条评论
  • 近日,HackerNews发布了2018年7月的编程语言招聘趋势排行榜,其中,Go语言已经反超Java进入了前三名的行列。从浅绿色的Go语言走势图可以看出来,企业对于Go语言的采用情况在逐年上升。 从公司角度看,许多大厂都已经开始拥抱Go语言,包括以Java打天下的阿里巴巴,更别提深爱着Go语言的滴滴、今日头条、小米、
    愿为栽树前人 3 0 0 条评论
  • 作者|白明的赞赏账户责编|欧阳姝黎 本文翻译自JohnArundel的《TencommandmentsofGo》[1]。全文如下: 作为一名全职的Go语言作家[2]和老师[3],我花了很多时间和学生们一起,帮助他们写出更清晰、更好、更有用的Go程序。我发现,我给他们的建议可以归纳总结为一套通用原则,在这里我将这些原则
    ljljjl射手 6 3 0 条评论
  • Go官方博客今天发布了2018年Go语言调查报告。参与本次调查的5883名受访者来自103个不同的国家,官方表示,这些受访者的反馈意见将被选取用于改进Go语言的发展。 知道大家都很忙,先直接看一下调查报告摘要: 首次有一半的受访者表示Go是他们日常使用的编程语言之一。此外,在工作中用到Go语言以及在工作之余使用Go语言
    Zuepv54 3 1 0 条评论
  • 译文:Golang新手可能会踩的50个坑原文:50ShadesofGo:Traps,Gotchas,andCommonMistakes翻译已获作者授权,转载请注明来源。 不久前发现在知乎这篇质量很高的文章,打算加上自己的理解翻译一遍。文章分为三部分:初级篇1-34,中级篇35-50,高级篇51-57 前言Go是一门简单
    近水楼台先得磊 7 0 0 条评论
  • 关注"脚本之家",与百万开发者在一起 出处:捉虫大师(ID:gh_562cbc6dd343) 作为一名比较新的编程语言,golang的这些工具是否更加好用呢? 单元测试Java的单元测试需要使用第三方库,一般是Junit,配置起来比较复杂。在使用了golang之后发现golang自带的单元测试真的非常简单。 如果我们
    一掷决生死N 6 3 0 条评论
  • 作者:trumanyan,腾讯CSIG后台开发工程师 项目背景网关服务作为统一接入服务,是大部分服务的统一入口。为了避免成功瓶颈,需要对其进行尽可能地优化。因此,特别总结一下golang后台服务性能优化的方式,并对网关服务进行优化。 技术背景: 吞吐量:每秒钟可以处理的请求数响应时间:从客户端发出请求,到收到回包的总耗
    你不知道旳事和 8 2 0 条评论