本内容是GOSIM 开源创新汇 对话Jim Blandy:Rust诞生前,我曾认为C语言已达系统编程语言巅峰!【Open AGI Forum】 视频的翻译与整理, 过程中有删减。

主持人:Eric Wang(CSDN):

欢迎大家参加开放 AI 论坛。我是 CSDN 的 Eric Wang

我们荣幸地邀请到 Jim Blandy 作为嘉宾,他在 Rust 编程语言 的发展中扮演了重要角色,因此他有很多故事和经验可以分享。 请 Jim 做自我介绍。


Jim Blandy:

我是 Jim Blandy,自 1990 年起从事自由和开源软件开发。当时,我刚刚大学毕业,去 Richard Stallman 那里工作,并开始参与 GDB(GNU 调试器) 的开发,后来成为其维护者之一。我还曾是 Emacs 的维护者之一。

此外,我也是 Subversion 版本控制系统的原始设计者之一。当时,我们团队做了一些令人惊叹的工作。然而,如今 Subversion 已经式微了。

我还记得第一次尝试 Mercurial 时,我的反应是——"我们被黑客攻击了!" 因为它在我们需要的所有方面都做得更好。因此,我很快就从 Subversion 切换了,并且再也没有回头看。

从 2008 年起,我加入了 Mozilla,并在不同部门工作,包括:

  • 浏览器的不同组件
  • JavaScript 引擎
  • 调试工具
  • 开发工具
  • 现在的 WebGPU 实现

Rust 刚诞生时,我的朋友 Graydon Hoare(Rust 的原作者)与我在 红帽(Red Hat) 是私人好友。当他加入 Mozilla 后,他邀请我一起参与 Rust 项目。

他曾跟我说:“我正在设计自己的编程语言。”
我当时回应:“哇哦!能否把手册发给我?我想试试!”

那个时候,Rust 还是一门完全不同的语言。它在性能和良好语义之间做出了一些妥协。然而,如今的 Rust 已经发展成了一种 无情的系统编程语言,能够生成高效的代码,并与 C++ 竞争。

Rust 并不是最初设计时的目标,但 Rust 1.0 发布时,我们感到非常兴奋。Graydon 当时最关注的核心点是 安全性耐用性,而 Rust 成功地找到了一个真正安全的系统编程方法,这令我非常震惊!


Rust 如何改变我的看法

在 Rust 出现之前,我曾认为 C 和 C++ 已经达到了系统编程语言的极限,并且很难再有实质性突破。

但 Rust 让我意识到,我们实际上有很多选择。Rust 通过 严格的限制 使得代码更安全。例如,在 C 和 C++ 中,指针的使用是自由的,但 Rust 迫使开发者放弃一些灵活性,以换取 安全性可预测性

我原本没有想到,一个 限制性更强 的语言仍然可以设计得很好用。然而,当我看到 Rust 的借用检查器(Borrow Checker)时,我惊讶地意识到——
这不仅可行,而且还能带来更好的代码质量!

于是,我决定 写一本关于 Rust 的书,让更多人了解它的潜力。


关于 WGPU

主持人:那么,我们为什么选择 WGPU 作为今天的主题?

Jim Blandy:
哦,好吧,关于 WGPU,其实有个有趣的故事。

我曾在 MozillaSpiderMonkey 团队(JavaScript 引擎团队)工作,并与 Jason Orendorff 共同实现了 Firefox 开发工具所使用的 JavaScript 调试 API。后来,我在开发工具团队待了一段时间,但一直想尝试不同的领域。

于是,我申请转到 图形团队,最终与 Dimitri 合作。他是 WebGPU 计划的最初创始人之一,同时也是 WGPUNaga(两个关键组件)的主要推动者。

后来,Dimitri 被其他公司挖走了,Mozilla 需要决定 WebGPU 实现的未来,于是他们问我:“Jim,你想接手吗?”
就这样,我成为了 WGPU 的技术负责人,尽管我没有多少图形学背景。

图形编程的挑战:

  • 为什么有统一缓冲区(Uniform Buffer)和存储缓冲区(Storage Buffer)?
  • 它们都是字节块,为什么需要区分?
  • WebGPU 设计决策的背后逻辑是什么?

这些问题促使我深入研究 WebGPU 及其背后的标准,包括 Vulkan、Direct3D 和 Metal。最终,我形成了一些更普遍的理解,并推动了许多改进。


WebGPU 的未来发展

目前,Mozilla、Google、Apple 和 Microsoft 都在 标准委员会 共同推动 WebGPU 的发展。
WebGPU 受到 机器学习(ML)和 AI 的极大推动,因为现代 AI 计算需要在 GPU 上运行,而不是 CPU

未来 GPU 可能会发生的变化:

  1. 优化矩阵运算——当前 GPU 架构并不适用于高效矩阵乘法,因此新一代 GPU 可能会重新排列架构,以更好地支持矩阵计算。
  2. 更低精度的数据支持——AI 计算不需要 32 位浮点数,甚至 16 位都不需要,未来可能会支持 8 位或 4 位的浮点格式

关于编写 Rust 书籍

目前,我们正在编写 Rust 书籍的第三版,预计 O'Reilly 将在 2025 年出版
相比于 第二版,第三版更多是 渐进式更新,不会有 2021 版引入 async/await 那样的重大变更

编写一本优秀的编程书籍的关键在于 选择合适的示例代码,它需要:

  • 简单易懂,不会过于分散读者注意力
  • 能够清晰表达 Rust 的核心概念

因此,我们在挑选示例时非常慎重,确保它们对读者的学习真正有帮助。


自由软件运动的成就与挑战

我对自由软件运动持乐观态度。如今,开发者已经普遍认为 他们的工具应该是开源的,这是一项巨大的成就。

然而,随着大公司如 Google、Microsoft 等的参与,GPL 许可证的执行变得更加困难。例如,有些公司在使用 Linux 内核 时,并未完全遵守 GPL 规则,而执法成本高昂,使得维护自由软件精神变得更加复杂。


给新一代程序员的建议

作为一名有经验的程序员和项目维护者,我认为最重要的是:

  1. 理解代码的读者——写代码时,要考虑未来的维护者是否能轻松理解你的代码。
  2. 保持代码简单——不要过度使用复杂的语言特性,能用简单方式解决的问题,就不要用宏、模板等高级特性。
  3. 快速审查(Code Review)并给予反馈——这对开源项目至关重要。
  4. 团队协作——一个成功的项目需要不同类型的人,各自发挥所长,而不是强迫所有人做相同的事情。

好文收藏
38 声望6 粉丝

好文收集