本文翻译自《GoLanguageat13Years:Ecosystem,Evolution,andFutureinConversationwithSteveFrancia》[1]。
译注:Go开源于年,如果从那时算起,Go才11岁;但在Go核心开发团队眼中,Go的真正诞生年份是年,至今13个年头了。关于Go的演化简史可以参见我的专栏文章:《Go语言的前生今世》[2]。
本文要点:
Go的简单性[3]让你可以快速上手使用它--你可以在一个下午就消化掉整个Go语言规范[4];作者认为Go是当今最好的现代语言之一(其他的还包括:Dart、Flutter和Rust);Go的未来是由它的开源社区决定的,它对所有的功能建议进行讨论和辩论。除非达成明确的共识,否则该功能不会被实现。社区的规模大约每18个月翻一番。最初,Go的早期采用者多来自python或ruby等动态语言的开发人员,现在随着语言的成熟,来自Java、.NET和C++程序员也开始接纳并使用Go。在充满挑战的一年里,社区适应了相互支持,出现了多个meetup,并出现了新的资源。编程语言的历史只朝着一个方向发展,每一种新的语言的出现都让事情都变得越来越复杂,越来越抽象。然而,就在十几年前,Go在Google诞生了。这种编程语言走的是另外一条路,它把*注押在了简单和精心的设计和实现上。这个配方一直保留到今天,你可以直接开始写Go代码,没有太大的障碍。当你想到现代软件的大部分流行和可靠的作品都是用Go编写的,比如Docker、Kubernetes、Prometheu等,这就足以让你印象深刻。这个列表还在持续增加。为了了解Go从哪里来,更重要的是它要往哪里去,InfoQ联系了Google负责战略和产品的Go编程语言团队核心成员SteveFrancia[5](译注:他也是知名静态站点生成工具gohugo[6]的作者)。
InfoQ:非常感谢您抽出宝贵时间回答读者的几个问题。我们能否首先请您介绍一下自己并描述您在Google的角色和日常工作?
SteveFrancia:我是SteveFrancia,是GoogleGo编程语言团队的核心成员,负责产品和策略。
InfoQ:您将技术挑战和工程挑战归因于十三年前点燃了Go的火花。还有其他吗?当时Google的官方编程语言是什么,缺少什么?
Francia:创建Go的主要动机是认识到我们的系统已经变得越来越复杂。为了跟上“Google规模”的指数增长,我们设计了复杂的系统来满足我们的需求。随着时间的流逝,我们又在这些基础系统/库和语言的基础上构建了新的复杂系统。人们通常不会想到复杂性的隐性成本。事实是,代码被读取的次数比其编写的次数多。复杂性给团队效率带来了极大的负担。相反,Go很简单。你仅需要花一个下午的时间来学习。Go代码非常简单易读。这种简单性使团队能够以前所未有的方式进行协作。
InfoQ:这一切是如何开始的?是自上而下的请求(管理人员要求一种语言来满足需求),还是自下而上的请求?来自Google的20%著名的创新?工程师尽其所能-解决问题?
Francia:没人要求过。这实际上不是一个20%的项目。是一次谈话导致一个研究项目获得了