查看原文
其他

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

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


相关链接

https://commandcenter.blogspot.com/2024/01/what-we-got-right-what-we-got-wrong.html

https://thenewstack.io/golang-co-creator-rob-pike-what-go-got-right-and-wrong/

往期推荐


“小而美”Tauri已支持iOS和Android,你还在用“技术毒瘤”Electron?

谨慎更新“宇宙最强编辑器”——会导致远程开发功能无法使用

AI版权第一案:我用AI做的图,版权归我吗?

百度输入法在候选词区域植入广告,网友:真nb!


这里有最新开源资讯、软件更新、技术干货等内容

点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存