“ Go 语言之父总结成功因素:吉祥物功不可没 ”
Go 语言之父 Rob Pike 在澳大利亚悉尼举行的 GopherCon AU 大会上,为纪念 Go 编程语言发布 14 周年 (2009 年 11 月 10 日) 发表了一场演讲,主题旨在回顾 “我们做对了什么以及做错了什么 (What We Got Right, What We Got Wrong)“。
Pike 分享了许多关于 Go 早期历史的内部记忆,以及在开发过程中有关一些重要因素的见解。不过他也声明称,本次发言仅代表个人观点,与Go 团队或谷歌没有关系。
> “Go 过去是、现在仍然是一个敬业的团队和一个庞大的社区所付出的巨大努力。所以如果你同意我说的任何话,请感谢他们。如果你不同意,可以责怪我,但请不要说出来。”
Pike 补充到,编程语言的好坏在很大程度上是一个见仁见智的问题,而不是事实。在 2022 年发表的一篇讨论了 Go 流行原因的文章中,Pike 与 Ken Thompson、Russ Cox、Robert Griesemer 和 Ian Lance Taylor 曾共同指出,Go 是专门为并发和并行性而设计的,在处理大规模工作负载的同时利用了新的多核芯片的强大功能。但他们也将 Go 的成功归功于其持续的“以开发为中心的理念”,以及其蓬勃发展的社区及其贡献包括新包。
在演讲中 Pike 再次提到了这个主题表示,“我们最初的目标不是创造一种新的编程语言,而是创造一种编写软件的更好方法…..如果我当时不花 45 分钟来构建二进制文件,Go 就不会出现。”
简而言之,Pike 指出,Go 是一种编程语言,但也不仅仅是一种编程语言。它的目的是帮助提供一种开发高质量软件的更好方法。时至今日,这仍然是它的目标Go 是一个让生产软件的开发更简单、更高效的项目。
出人意料的是,Pike 在例举 Go 语言的成功之处时,首先提及的是吉祥物 (Go gopher ),并将之誉为 Go 成功的最早因素之一、对 Go 的发展至关重要。他认为,呆萌有趣辨识度高的吉祥物很好的团结了社区氛围,为社区参与项目奠定了基调 即卓越的技术与真正的乐趣相结合。
但对于以 CC 许可发布 Gopher 的设计,Pike 则坦言,这”也许不是最好的选择”,如果再重来一次他们会慎重考虑。
在提到 Go 语言发展过程中所做出的一些正确决策时,Pike 提到了确保 Go 易于解析,此举反过来又使得创建 IDE 等工具以及 Go 的官方语言服务器 gopls也提供 IDE 功能变得容易以及为编译器添加了自动测试和代码审查工具。其他还包括
- gofmt 自动格式化工具
- Go 的软件包库
- 发布了 Go 语言的正式规范
- 在早期就发布了 Go 语言的兼容性保证,等等。
此外,Pike 还透露了一些他期待出现的功能,包括允许使用任意精度的整数,他认为这将消除一整类安全隐患以及希望看到编译器对 Go 的动态接口进行更多自动检查,并检查资源共享可能导致的进度停滞死锁。”任何能让程序在编译时更安全的东西都是好东西。”
Pike 指出,Go 语言的另一个关键之处在于它的可移植性也就是说,它可以轻松地为其他平台编译代码。这在一定程度上得益于 Ken Thompson 用 C 语言编写的编译器,尽管其他人认为编译器应该用 Go 本身编写或使用 LLVM 中的工具。Pike 也将该编译器描述为“an odd duck”,但无论如何,他认为这对于当时的处境来说是一个正确的选择。直到 2015 年,Russ Cox 编写了一个工具,可以将编译器从 C 半自动编译为 Go。
而有关 Go 最具影响力的决定 “并发”。在分享这一故事时,Pike 首先描述了 2002 年自己刚加入 Google 时的世界。在他的记忆中,彼时的谷歌似乎一直在回避进程线程的并发执行,甚至采取”几乎完全禁止”的态度,这也让他感到很苦恼。
“自 20 世纪 70 年代以来,我一直在做类似并发的事情,甚至是在无意识的情况下”。事实上,除了 Pike 外,当时许多其他语言、论文甚至书籍都写过关于并发编程的内容,并表明并发编程可以做得很好。只是当时的并发还没有成为主流理念,Go 的诞生部分就是为了解决这个问题,而它最终也成为了 Go 最大的亮点之一。
“回顾过去,我认为可以公平地说,Go 在让编程世界相信并发是一个强大的工具尤其是在多核网络世界中方面发挥了重要作用,并且它可以比 pthread 做得更好。如今,大多数主流语言都对并发提供了良好的支持。但在当时,这让 Go 看起来像是一种新事物……Go 对并发的支持是一个主要的吸引因素,它帮助增加了早期的采用率,吸引了那些之前没有使用过并发但对其可能性很感兴趣的程序员”。
Pike 认为,这是一个绝对成功的举措,Go”帮助普及了并发作为服务器软件结构的一种方式”。
最后,Pike 简洁的总结了一些促使 Go 成功的因素,“最重要的是,我们得到了 Gophers 这个乐于助人、多元化社区的大力支持。”
更多详情可查看博客。
每日一言
""你的脸,犹如你的人生,一样坎坷。""