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

#126 – James Gosling: Java, JVM, Emacs, and the Early Days of Computing

一句话导读

这篇播客聊的是Java之父James Gosling的编程人生。他认为Java的核心价值不是语法,而是通过自动管理内存(不用手动释放)让程序员少花三分之二时间修bug,开发速度比C/C++快一倍。他批评Intel的浮点运算用错了π值,导致结果不准确;也提到柯达明明有数字技术却因怕影响胶片利润而倒闭。他还说硅谷那种“毒舌领导力”不是成功的必要条件,Google的创始人就是正面例子。

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

Java之父James Gosling在Lex Fridman Podcast中回顾了其编程生涯,重点讨论了Java语言的设计哲学与JVM的演进。他指出Java在多项指标中始终位列全球最受欢迎编程语言前二或前三,并分享了早期用C语言实现Emacs编辑器、参与互联网初建的经历。Gosling强调并行计算抽象的重要性——通过Java的并发机制实现多任务同时执行的稳定性与正确性,认为这是软件工程的核心挑战之一。他还对比了Elon Musk、Steve Jobs、Jeff Bezos的领导风格,并主张“聪明地努力工作”。关于开源,他反思了Java社区与Android平台的关系,并给年轻程序员建议:深入

全文约 10 分钟 · 6 个章节
深度解读

好的,以下是针对播客文字稿的分析报告。

本期速览

本期嘉宾为Java编程语言的创始人James Gosling。主线围绕Java的诞生、JVM的设计哲学以及早期互联网与开源社区生态的回顾。Gosling认为,Java的核心价值不在于语法,而在于通过消除指针和内存泄漏等底层错误,从根本上提升开发者效率与软件安全性,这是一项被市场低估的“社会工程”成就。

1. Java的诞生:从“可靠消费电子”到“开发者效率革命”

James Gosling指出,Java的诞生源于对消费电子行业“安全至上”理念的洞察,并最终演化成一场针对C/C++开发者效率问题的革命。

  • 历史脉络:1990年代初,Gosling在Sun Microsystems参与了一个项目,旨在研究计算机行业之外(如消费电子、工业控制)的芯片应用。他们走访了日本、韩国等地的消费电子公司(如Toshiba、Sharp、Sony)。
  • 机制拆解:Gosling发现,这些公司对可靠性的要求极高,绝不会为了性能而牺牲安全。相较之下,计算机行业普遍存在“为快而牺牲可靠性”的倾向,例如Cray超级计算机的浮点运算最后几位是随机数。同时,他观察到这些公司正在“重新发明轮子”,重蹈计算机行业在20年前犯过的网络通信错误。
  • 数据链:Gosling指出,C/C++中60-70%的安全漏洞源于“愚蠢的指针操作”(buffer overflows等)。他引用Chrome浏览器的安全漏洞报告,指出30年后这一问题依然存在。他个人作为开发者,有“三分之二的时间”花在解决难以追踪的指针bug上。
  • 推演:Gosling认为,消除指针和内存管理问题(如内存泄漏、野指针)不仅是为了安全,更是为了大幅提升开发者速度。他声称,从“手指触碰键盘”到“可投产的稳定软件”,Java的速度比C/C++“快一倍”。核心机制包括:自动内存管理(垃圾回收)、强类型接口、禁止通过“后门”访问内部数据(强制通过接口通信)。

2. JVM的诞生:打破“硬件锁定”的“懒人哲学”

Gosling将JVM的诞生归因于其“懒人哲学”——通过提供一个中间层,解决开发者被特定CPU绑定的“硬件锁定”问题,并称这是他从学生时代一段“失败”的实习经历中获得的灵感。

  • 历史脉络:在与消费电子公司采购人员的交流中,Gosling发现他们最大的痛点在于:一旦选择某个CPU(如Intel),就无法再更换供应商,因为软件是针对该CPU硬编码的。这导致他们失去了议价能力。
  • 机制拆解:JVM是一个“抽象机器的指令集”。开发者编写的代码被编译成“字节码”,由JVM在任意物理机器上解释或编译执行。这打破了软件与特定硬件的绑定,使得采购方可以自由切换CPU供应商。
  • 独到主张:Gosling称自己大部分好主意都源于“懒惰”。他回忆起在卡内基梅隆大学时,曾将UCSD Pascal的P代码翻译成VAX汇编代码,结果发现生成的代码质量甚至优于C编译器。他认为与其费力去重新编译源代码,不如直接翻译一个中间格式。他采访时说:“Most of my good ideas are driven by laziness. … often I find that people, some of the people’s stupidest ideas are because they’re insufficiently lazy.” 意即“我大部分好主意都是由懒惰驱动的……通常我发现,有些人最愚蠢的想法是因为他们不够懒。”
  • 推演:JVM的标准化也带来了关于浮点运算的“宗教战争”。Gosling坚决要求JVM实现IEEE 754浮点标准,以确保“2+2在任何地方都等于4”。这导致了他与Intel等公司的冲突,因为Intel在优化其x87浮点单元时,在某些超越函数(如正弦、余弦)的运算中使用了“略微错误的π值”,这在Gosling看来是完全不可接受的。

3. 领导力、开源与风险:Gosling对硅谷文化的反思

Gosling对硅谷“以毒舌为荣”的领导力文化持批判态度,并认为开放源代码是好的,但极端化的“信息必须免费”的宗教式立场会扼杀创新和可持续性。

  • 观点分歧:Gosling区分了“推人至卓越”和“过度羞辱人”。他认为Steve Jobs和Elon Musk都越过了这条线。
  • 对Steve Jobs:Gosling承认Jobs能让人做出“一生中最棒的工作”,但他无法为Jobs工作,因为Jobs会“吼人、骂人”。他认为这是“不对的”。
  • 对Elon Musk:Gosling认为Musk的“Falcon Wing门”是“彻底的工程灾难”,但也是“伟大领导力的象征”——敢于把“愚蠢的事情做到底”。但他也认为Musk在待人接物上与Jobs类似。
  • 对Jeff Bezos/Amazon:Gosling将其视为“长期主义”的典范,认为Amazon和Tesla的成功得益于“有耐心的钱”,以及能够无视季度财报、专注于“有多少快乐客户”的创始人。
  • 机制拆解:Gosling提出“努力工作与聪明工作”不是非此即彼,而是“and”的关系。他认为那些说“要聪明工作,不要努力工作”的人“几乎总是失败”,因为“luck and timing”是成功的关键变量,而“努力工作”是遭遇好运的必备前提。
  • 推演:关于开源,Gosling认为其利弊在于平衡。他批评Richard Stallman的“自由软件运动”,认为“信息必须免费”的极端形式等同于要求所有软件工程师“必须发下贫穷的誓言”。他举例说,当Emacs的开源代码被交给一个“车库里的两个家伙”时,他要求对方只对大学免费,但此举“惹恼了某些人”。他认为,将开源道德化排除了可持续商业化的路径,而像“服务与支持”这样的商业模式才是出路。

提及的标的

标的 嘉宾态度 关键数据
Intel 风险提示/批评 其x87浮点单元在超越函数运算中使用“略微错误的π值”,导致结果不准确。
Cray 风险提示/批评 其浮点除法运算使用Newton-Raphson近似,导致结果的最低位是“随机数”。
Kodak 风险提示/中性 拥有强大的数字成像技术,但出于财报压力,不愿主动放弃高利润的胶片业务,最终被市场淘汰。
Tesla 中性/建设性批评 其Falcon Wing门是“工程灾难”,但体现了领导者的“远见”。
Amazon 看好/中性 是“长期主义”和“耐心资本”的典范,愿意为“快乐客户”而牺牲短期利润。
Google 看好 其领导层(Larry和Sergey)是“非毒舌型”领导力的正面例子,文化上是“努力工作”的。
Android 风险提示 其创始人Andy Rubin的许多做法“越界了”,导致了后来巨大的法律诉讼。

值得记住的判断

1. Java的本质是解决开发者效率问题的“社会工程” (Gosling): 消除指针和内存泄漏,不仅是为了安全,更核心的是让开发者从“花三分之二时间找bug”中解放出来,将软件开发周期缩短一半。

2. JVM的诞生源于“懒人哲学” (Gosling): 最聪明的解决方案往往不是去解决一个复杂问题,而是设计一个机制让它根本不会发生。JVM正是为了规避“硬件锁定”和“重新编译”的麻烦而设计的。

3. “不要为快而牺牲可靠性”是消费电子行业的黄金法则,也是Java的根基 (Gosling): 在消费电子领域,一个软件bug可能导致设备起火或爆炸,因此安全优先级高于一切,这与计算机行业“为快而牺牲精度”的Cray思维形成鲜明对比。

4. “聪明地工作,而不是努力地工作”是“失败者的配方” (Gosling): 成功是“2%的灵感+98%的汗水”,而“聪明工作”通常是“懒惰”的借口。真正的成功需要“聪明且努力”,因为“luck and timing”是不可控的,只有努力才能增加撞上好运的概率。

5. “左手画圆,右手画方”的“毒舌”领导力是后天习得的神话,而非成功的必要条件 (Gosling): 硅谷盛行的“成功必须靠当个混蛋”的叙事,源于对Steve Jobs成功故事的误解。Gosling认为,他可以边努力工作边做一个好人,而Google的创始人们就是正面例子。

6. “所有软件工程师都必须发下贫穷的誓言”是开源极端化带来的恶果 (Gosling): 开源作为一种社区协作模式是好的,但将其宗教化、道德化,否定一切商业化路径,最终会扼杀软件的可持续性。

7. “The Poster Child”的陷阱:大公司知道颠覆在哪,但选择视而不见 (Gosling): 以Kodak为例,公司内部的研究部门早已预测到数字相机会颠覆胶片行业,但最高管理层因为无法承受财报上的“短期阵痛”而选择被动等待,最终被淘汰。

8. “每个人都应该做一次‘Poster Child’的‘反方向’决策” (Gosling): 他鼓励年轻人“不要害怕冒险”,指出他人生中“超过一半”的项目都失败了,但“即使失败了,你至少也能学到东西”。他认为“做蠢事可以拿到一两次免死金牌”,但第三次就不再是被原谅的理由。