Go 语言之父总结成功因素:吉祥物功不可没

2024年 2月 7日 57.1k 0

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 这个乐于助人、多元化社区的大力支持。”

更多详情可查看博客。

相关文章

塑造我成为 CTO 之路的“秘诀”
“人工智能教母”的公司估值达 10 亿美金
教授吐槽:985 高校成高级蓝翔!研究生基本废了,只为房子、票子……
Windows 蓝屏中断提醒开发者:Rust 比 C/C++ 更好
Claude 3.5 Sonnet 在伽利略幻觉指数中名列前茅
上海新增 11 款已完成登记生成式 AI 服务

发布评论