← 返回列表
Lex Fridman Podcast播客19 Oct 2020来源: lexfridman.com主持: Lex Fridman

#131 – Chris Lattner: The Future of Computing and Programming Languages

一句话导读

这篇访谈聊的是编程语言和芯片设计的未来。嘉宾Chris Lattner(LLVM、Swift的发明人)认为,编译器自动让代码变快是“海市蜃楼”,因为性能不稳定;真正的并行需要程序员自己设计架构。他非常看好RISC-V这个开源芯片指令集,因为它不会被一家公司绑架,生态更安全。提到的标的:SiFive(他所在的公司,做最好的RISC-V芯片)、Apple的Swift(他设计的语言,强调安全又高效)、Google的TensorFlow(机器学习社区在自动并行上做得好)。

AI 摘要AI 生成 · 可能有误 · 以原文为准

Chris Lattner在Lex Fridman播客中讨论了计算和编程语言的未来,重点回顾了他对LLVM编译器基础设施、Clang编译器、Swift编程语言的核心贡献,以及在Google参与TensorFlow和TPU项目、在Tesla担任Autopilot软件副总裁、在Apple领导软件创新、在SiFive担任平台工程高级副总裁致力于芯片设计革命。核心观点是计算架构与编程语言需协同进化,LLVM和Swift等开源工具降低了开发门槛,而RISC-V(SiFive)等开放硬件架构将推动更快、更便宜、更高效的芯片设计。重要结论:未来计算性能提升将更多依赖硬件-软件协同设计,编程语言需更安全、高效

全文约 9 分钟 · 8 个章节
深度解读

好的,这是对 Lex Fridman 播客 #131 期(Chris Lattner 访谈)的解读报告。


本期速览

嘉宾 Chris Lattner(LLVM、Swift、MLIR 创建者,现任 SiFive 平台工程高级副总裁)与主持人 Lex Fridman 探讨了编程语言设计的核心哲学、硬件与软件的协同进化,以及编译器技术的未来。全片最有分量的判断Chris Lattner 认为,编译器自动并行化是一种“海市蜃楼”,其承诺的“无需修改代码即可获得性能提升”在现实中因性能不可预测而失败;真正的并行化必须由程序员通过显式的架构模式(如 Actors)来控制,以获得可预测的性能。


主题小节

1. 编程语言的本质:UI 设计,而非语法之争

Chris Lattner 认为,编程语言的设计核心是用户界面(UI)设计,而非语法(如花括号、缩进)的争论。

  • 观点: 编程语言的价值在于“表达力的提升”,即让开发者更高效地实现目标。语法只是表层,真正的设计在于如何平衡“底层实现”与“人类心智模型”。
  • 论证: 他以 Swift 的“渐进式复杂度披露”原则为例。初学者可以像 Python 一样写 `print("hello world")`,而无需理解 `public static void main` 这类“仪式性”代码。但高级用户又能通过显式声明访问底层的 C 指针性能。这种“按需释放复杂性”的设计,是 Swift 让人“感觉良好”的关键。
  • 推演: 未来语言的成功将取决于其生态系统能否提供“原生感”的库。即,库开发者能拥有与语言内置类型(如 `Int`)同等的表达力,让自定义类型(如四元数)也能像原生类型一样工作。
2. 价值语义:解决“数学不数学”的顽疾

Chris Lattner 详细阐述了 Swift 的“值语义”(Value Semantics)如何解决其他语言(如 Python、Java)中因引用语义导致的隐蔽 bug。

  • 机制拆解: 在 Python 中,Tensor 对象默认是引用。当将其传递给函数后,在函数内部修改该 Tensor,可能会意外地改变调用者的原始 Tensor。这导致开发者必须手动进行“防御性克隆”(defensive copy),否则计算出的结果可能“数学上错误”。这种错误极其难以调试。
  • 数据链: Swift 的 String 在默认情况下是值语义,但通过“写时复制”(Copy-on-Write)技术,在只有一个引用时,追加操作是原地(in-place)更新,无需分配新内存。这避免了 Java 中不可变字符串(Immutable String)每次拼接都需分配新对象的性能开销。
  • 结论: 值语义让数学对象“像数学一样工作”,同时通过“写时复制”保持了高性能,实现了安全与效率的兼得。
3. 编译器自动并行化的“海市蜃楼”与显式并行

Chris Lattner 对编译器“自动并行化”持批判态度,认为其性能不可预测,对开发者是灾难。他主张开发者应通过显式架构模型来控制并行。

  • 核心判断: 自动并行化编译器(如一些 Fortran 编译器)承诺“不改代码,性能翻倍”,但一旦开发者修改了代码(如增加一个函数),编译器模式匹配的“魔法”就失效了,性能可能暴跌 10 倍。开发者无法理解为何性能下降,也无法修复,陷入“代码冻结”的困境。“如果你关心性能,可预测性是最重要的东西。”
  • 推演: 他提出的解决方案是 Swift 的 Actors 模型。这本质上是将“单线程的孤岛”通过异步消息进行通信。开发者明确地设计架构(哪些是孤岛,如何通信),编译器则负责将这些模式翻译成高效的并行代码,保证性能是可预测的。
  • 例外出口: 他特别指出,机器学习领域是个例外。TensorFlow 和 PyTorch 通过将计算图抽象为高层操作,使得编译器(如 XLA/MLIR)可以自动将模型并行分配到 1024 个 TPU 上,因为计算图的表达力本身就蕴含了可并行化的结构。“这个突破没有来自编程语言专家,而是来自机器学习社区。”
4. 开源指令集架构(RISC-V)与芯片设计的未来

Chris Lattner 基于其在 SiFive 的视角,阐述了 RISC-V 作为开源标准如何改变芯片设计行业,尤其是当摩尔定律放缓时。

  • 历史脉络: 历史上,Sun 的 SPARC、HP 的 PA-RISC 等指令集随着公司战略调整而消亡,导致客户数十亿美元的软件投资被锁定。RISC-V 作为开放标准,解决了这个问题:即使 SiFive 本身在 20 年后消失,客户仍可从其他供应商处购买 RISC-V 核心,保证了生态的延续性。
  • 机制拆解: 颠覆性变革发生在芯片设计工具(EDA)层面。当前 EDA 工具高度碎片化、标准松散,像“一堆胶带粘在一起”。SiFive 正像“编译器”一样重构这个流程,将芯片设计从“写 Verilog”变成“用高层语言描述,然后由编译器自动综合、优化、布局”。
  • 推演: 随着设计成本降低,未来将出现大量定制 ASIC(专用集成电路)。每个智能设备(从智能烤面包机到 AI 加速器)都可能拥有为自己特定需求优化的芯片,而非使用昂贵的通用芯片。“我认为未来会有很多硅。”

提及的标的

标的 嘉宾态度(看好/风险提示/中性) 关键数据
SiFive 看好 拥有世界最好的 RISC-V 核心,正在通过“编译器化”的 EDA 工具降低芯片设计成本。
RISC-V (指令集) 非常看好 作为开放标准,解决了 X86/ARM 等的“供应商锁定”风险,可扩展性强(从嵌入式到高性能计算)。
Apple (Swift/SwiftUI) 看好(技术层面) Swift 的“值语义”、“渐进式披露”等设计是成功的;SwiftUI 是证明其价值的范例。
Google (TensorFlow/TPU) 中性/积极 帮助构建了 MLIR 和 XLA,认为机器学习社区在自动并行化方面取得了编译器社区未曾做到的突破。
Tesla 中性(背景提及) 作为前 Autopilot 软件副总裁,提到其“统一愿景”是强大的领导力工具。

值得记住的判断

1. “编程语言是自行车,不是辩经工具。” (Chris Lattner)—— 语言的价值不在于语法喜好,而在于它能让人(开发者)多快、多好地到达目的地。好的设计是为“生产力”服务的,而非为“正确性”理论服务的。

2. “编译器自动并行化是海市蜃楼,因为性能不可预测。” (Chris Lattner)—— 承诺“不改代码,自动快10倍”的编译器,一旦代码因业务需求而改变,其性能可能暴跌,导致开发者陷入“代码冻结”的困境。真正的并行化需要开发者通过显式架构(如 Actors)来控制。

3. “你必须热爱你做的事,因为当项目进入艰难时期时,只有热爱才能让你坚持下去。” (Chris Lattner)—— 对职业选择的核心建议。早期职业生涯应广泛尝试,找到与自己大脑“共鸣”的领域,然后准备好投入“艰苦的工作”。

4. “RISC-V 解决的是‘供应商锁定’问题,而非仅仅是技术问题。” (Chris Lattner)—— 历史上 SPARC、PA-RISC 等指令集因公司战略调整而消亡,客户数十亿投资被锁定。RISC-V 作为开放标准,保证了无论 SiFive 如何,客户的生态投资都是安全的,这才是其最大的价值。

5. “机器学习的自动并行化不是编程语言社区搞定的,而是机器学习社区搞定的。” (Chris Lattner)—— 他指出了传统编译器的局限与机器学习社区的突破:TensorFlow/PyTorch 通过计算图这一高层抽象,使得编译器(如 XLA)能自动将模型并行分发到数千个节点,这一点是传统 C/C++ 编译器做不到的。

6. “软件 2.0(数据驱动编程)是新的编程范式,而非替代品。” (Chris Lattner)—— 他不同意 Andrej Karpathy 的“软件 2.0 将取代一切”的观点,认为这是一个“范式多元化”的问题。深度学习擅长处理感官输入、生成类人内容等“难以用代码表征”的问题,但无法替代用于编写启动加载器(bootloader)的、对能量效率敏感的指令式代码。

7. “领导力不是知道正确答案,而是获取正确答案。” (Chris Lattner)—— 通过“问愚蠢的问题”来学习新领域(如芯片设计),并创造一个让团队成员敢于“坦露脆弱”的安全环境,是领导大型团队的关键。