← Lex Fridman

Dave Plummer: 戴夫·普卢默:编程、自闭症与微软往事

#479 – Dave Plummer: Programming, Autism, and Old-School Microsoft Stories

第479期2025-08-29简体中文会员内容

嘉宾:Dave Plummer

收听本集00:00 / 1:59:30
阅读设置
按你的习惯阅读
正文字号
下载播客精读
把这一篇,带走慢慢读

中文 · 精读 · 当前版本

下载功能还未开放

正文语言

精读 · 按主题梳理核心观点、论证与案例。

§01戴夫·普卢默是谁

莱克斯·弗里德曼介绍说,戴夫·普卢默是一名程序员,也是微软的老一代软件工程师,参与过 Windows 95、NT 和 XP 的开发。弗里德曼说,数亿人一直在使用他开发的工具,其中包括 Windows 任务管理器,以及 Windows 中的 zip/unzip 压缩支持。普卢默还把 Space Cadet Pinball(又称 3D Pinball)移植到了 Windows 上。如今,他运营着 YouTube 频道 Dave’s Garage。

弗里德曼还提到了普卢默的书《Secrets of the Autistic Millionaire》(意为“自闭症百万富翁的秘密”)。这本书把他的人生经历和一些心得结合在一起,讲的是自闭症人士如何处理人际关系、职业和日常生活。弗里德曼说,这次对话的主题是编程、计算和技术的历史与未来,以及在俗话说的“车库”里动手造东西。

§02在 RadioShack 里遇到的第一台电脑

普卢默很长一段时间都没有自己的电脑。他用过的第一台电脑是当地 RadioShack 店里的一台 TRS-80 Model 1,Level 1 版本,4K 内存。那时他大约 11 岁,上五年级或六年级,是骑自行车去店里的。店员那儿有一摞标着“computer”(电脑)的箱子,还没来得及组装,于是他主动提出由他来装,店员就让他试了。他说那大约是 79 年或 80 年。

普卢默说,他当时完全不知道自己在干什么。他把组装过程比作组装一套组合音响,只是多了一个风险:按普卢默的说法,Tandy 的电源、视频接口,还有他记得磁带机接口,用的都是同一种五针 DIN 接头,插错了就可能把机器烧坏。他读了标签,把电脑装好了。

因为对电脑一无所知,他试着往里面输入英语命令。PRINT 2+2 这类命令能运行,但往 Level 1 BASIC 解释器里输入普通英语,基本没什么用。他至今还留着六年级时的一张大页书写纸,上面写着一个程序。他说这个程序“有点不合逻辑地正确”,当时任何一种解释器都不可能运行它。他说,他花了一段时间才弄明白这些机器实际是怎么工作的。他每周四和周六都回店里,店家也让他用那台机器。

§03“三巨头”,以及为 Commodore 64 辩护

普卢默说,当时最先进的是“三巨头”:TRS-80 Model 1、PET 2001 和 Apple II,三款机器差不多同时上市。

弗里德曼问,Apple II 是不是有史以来最伟大的电脑。普卢默先说“回头看的话,可能是”,接着又改口说是 Commodore 64。弗里德曼同意 Commodore 64 非常了不起,并说那也是他自己的第一台电脑,不过是在它发布很多年以后。他同时补充说,Apple II 对个人电脑的历史影响巨大。

普卢默承认,长期影响很难评判。他选 Commodore 64 的理由是,它可能影响了更多的人,销量也更高。说到数字时他有所保留:“这取决于你相信哪组数字,但即便是中等的估计也相当高。”他没有给出具体的销量数字。

§04手写机器语言,然后全部丢失

普卢默拿到自己的 Commodore 64 后,做的第一件事就是把软驱弄过热了。他父母没什么钱,所以是从 Computer House 而不是大型零售商那里买的这台机器。结果这台机器没有保修,软驱只能送回德国或者类似的地方去修。这样他手上就只剩一台磁带机。

他从磁带上加载了一个机器语言监视程序。这个程序有反汇编器,但没有汇编器,所以他直接用十六进制输入 6502 操作码。他说,只要仔细规划,这就足以写出一些基本的程序。

他的第一个程序是《大蜜蜂》(Galaga)的仿制版。他自称这是个很烂的仿制品,不过主要的敌人都有,会随着时间推移发起攻击,而且整个程序完全是用手写的机器语言写成的。在这种手工输入机器码的工作方式下,要在中间加代码,就得跳转到另一个位置,在那里执行完再跳回来。他说结果是“简直丑陋不堪的意大利面条式代码”,但最后还是能运行了。

弗里德曼问,直接用原始机器码编程的人会受到哪些限制。普卢默说,最大的问题是所有东西都得按顺序写。在 6502 这种情况下,新代码只能加在末尾,事后没法插进中间。

所以某种程度上就像在给一盘磁带编程。

普卢默强调,这是机器语言,不是汇编语言。他说他本该先写一个汇编器,“但我当时没那么聪明”。被问到写汇编器有多难时,他回答“很简单”,并补充说,这种事做过很多次之后就会记住,就像某些 C 语言语法问题,你永远不会忘。他用汇编语言做过不少复杂的工作,但真正用机器语言写成的,只有这个《大蜜蜂》仿制版。

这个游戏已经不存在了。普卢默去备份的时候,把空白软盘的内容复制到了存数据的软盘上。他说这是他第一次跟数据管理打交道。他记得当时非常自责,因为好几周的工作都没了,而他知道原因是自己太着急,犯了个愚蠢的错误,或者说做了个不明智的选择。

§05爱上编程的两个阶段

普卢默说这分两个阶段。第一个阶段是一接触 TRS-80 Model I 就开始了:他一心只想骑车回店里,多跟那台机器待一会儿。第二个阶段大约在大学二年级或三年级。他热爱编程,但完全不知道毕业后会做什么,是去对付录像机上闪个不停的“12”,还是去开发操作系统。让他安心的是,他热爱这份工作本身。

我知道自己终于走对了方向。

§06辍学、7-Eleven,以及重返校园

普卢默说,高中辍学“不是最明智的举动”。他说并没有哪个特定的时刻让这件事发生。他去学校的次数越来越少,直到再回去会让人难堪,然后就不再去了。他给走在这条路上的人的建议是:停下来。

没有高中文凭,他在 7-Eleven 和一家油漆仓库打工。在他看来,7-Eleven 的夜班留给的是这样一些人:他们足够聪明,能处理店里的账目和行政工作,同时又出于个人原因需要在那儿上班。他把自己也算在其中,因为他没有文凭。

他提到自己曾被人持刀抢劫,但说这份工作最糟糕的部分是量油。当时没有电子传感器,他要把一根 15 或 20 英尺长、标着英寸和英尺刻度的木杆放进油罐里测量油量。第一次量的时候,他没拿住杆子,又一把抓了回来,结果双手扎进了他所说的大约一千根木刺。当时外面是零下 40 度。

普卢默说,他当时一闪念想到下次要换个做法,大约三秒钟后,他意识到这个想法有多荒唐。他说,就是在那一刻,他意识到自己必须改变方向。

21 岁时,他去找当地高中的校长,请求让他回来上学。校长拒绝了,主要原因是普卢默年纪太大,学校也没有名额。普卢默争辩说,在他入学之前一定会有人退学,到时就有名额了。校长让他回去了,他修完了自己还差的三四门课。

§07小决定如何累积成大决定

弗里德曼说,这样慢慢脱离学校,是大脑会做的一件怪事。他认为,意识到自己不必和别人做一样的事是危险的,因为有些事需要你成为社会的一部分,而这种认识可能带来一种了不起的人生,也可能带来一种非常艰难的人生。

普卢默认为,危险在于做决定的方式。每天你只是决定逃一节课,但这些选择累积起来,就成了一个大得多的决定。

“我今天就是不去上课了。”你决定的只有这一件事,但这样做的次数多了,你就是在做一个大得多的决定。问题就在这里。

弗里德曼的结论是,任何想过非传统生活的人,都应该明确地做出这个大决定,而不是让它在一次次小的松懈中累积而成。普卢默补充了一句警告:“最终它会替你做出来。”弗里德曼接着指出,普卢默当年并不是好学生,后来却上了大学,而且表现得非常好。

§08学业上的一次险情与重新开始

戴夫·普卢默毫不讳言自己早年的学业记录。他说自己是“高中时一个糟糕的学生”,到了大学第一学期仍然没有认真对待学业。那个学期,他在“几何 90”(Geometry 90)这门课上是“被开恩放过的”。这是一门补修课,补的是他从没上过的 12 年级几何课。他说这次及格只差“1%,或者说全凭教授开恩”,这让他很害怕:他意识到自己差点在大学生涯开始之前就把它断送了。

制度上他也有些运气。他说,因为这些是补习课,分数不计入成绩单,所以下个学期他得以从头开始。他提到的转变更多关乎动机,而不是方法。他开始把上学当作为自己做的事。

所以,下个学期我算是重新开始,认认真真地学,而且是为我自己学,这让一切都不一样了。

莱克斯·弗里德曼请他给学生一些建议时,普卢默依然很谦虚。他建议找到学校里自己真正喜欢的那部分,“不管是美术、计算机科学还是手工课”,在上面多下功夫,同时忍受那些困难的部分,因为它们“比以后再去做要容易得多”。他承认,这个道理 50 多岁时比 15 岁左右时更容易相信。

§09从电话公司的暑期工作到一封发进微软的冷邮件

弗里德曼把接下来的经历概括为从 7-Eleven 跳到微软。普卢默说,大约到大学三年级时,他在电话公司做暑期工,把他们的 UBNet 网络转换成 TCP/IP。他说,这份工作主要是换网卡,然后琢磨为什么机器内存“比以前少了 10K”之后,config.sys 就没法让 Lotus 运行了。他说那是“在计算机行业工作的一段可怕时期”。

在美食广场吃午饭时,他在读一本微软的历史。他不确定书名,试探性地说是“Microsoft or Bill Gates and the Making of Microsoft Hard Drive”。他说这本书平实地讲述了公司如何诞生、如何运作,以及公司里的人是什么样的。这本书让微软听起来正是他想去的地方,可他当时人在萨斯喀彻温省。

他的敲门砖来自他自己写的软件。他靠共享软件 HyperCache 支付了上学的费用,这款软件附带 4×6 规格的注册卡,用户寄回卡片时会填上姓名、地址,有电子邮件地址的也会填上。他把整摞卡片翻了一遍,找到“大概三四个人”用的是微软的电子邮件地址,就以“萨斯喀彻温省一个学操作系统、正在寻找机会的学生”的身份给他们发了冷邮件。他说自己已经不记得具体写了什么。

其中一位收件人阿拉斯代尔·班克斯(Alasdair Banks)回信说,他认识一个可以介绍给普卢默的人。普卢默认为那个人是本·斯利夫卡(Ben Slifka),不过他用“我想”表示了不确定。斯利夫卡对他进行了电话面试,最终想雇他在暑期做 MS-DOS 的开发。

§10HyperCache:一款 Amiga 上的共享软件磁盘缓存

普卢默说,HyperCache 填补了一个空白:Amiga “开箱即用”时并不自带文件系统缓存。他开玩笑地称它为“硬盘的减肥计划”。被问到它是否真的赚到了钱,他说卖得还不错:他卖出了“几千份”,每份 20 或 40 美元,“视规则而定”。

技术上,这个程序大部分是用 C 语言写的,负责把数据移入和移出缓存的精简代码则是用 68000 汇编写的。弗里德曼问这是不是文件系统 I/O,普卢默纠正了他:它工作在设备块 I/O 这一层。从硬盘读取的每个块都要先经过他的缓存。这个缓存是 N 路组相联的,会尽量匹配硬盘的几何结构,进行预取,例如一次读取一整个磁道。

一开始发行规模很小。他认为自己最初是在 Usenet 和 Amiga 论坛上发布了一个 30 天试用版,后来有一些零售商开始进货。有一个时刻让他印象特别深。80 年代末,他坐在如今是他妻子的那位女士的车里,两人用她的车载电话接到一个电话。这部车载电话是她父亲为了她的安全坚持要装的。一家软件零售商想要 50 份,每份 20 美元,总共一千美元。普卢默说,这“在 1989 年,或者不管是哪一年”都是一件大事。随着时间推移,有好几家公司进了货。

§11微软为何称霸:人才、专注与一个标准

被问到微软为何能长期主导个人计算领域时,普卢默首先谈的是人。他称那个时代的微软是他参与过的“绝无仅有的、最强大的聪明人集合”,并拿它与自己在学术界和业界的所见作比较。来到微软的感觉,就像从小镇上的大人物,变成了决定保持沉默、以免显得自己很蠢的人。

在一家普通的电脑公司工作时,那个唯一真正懂行的人,他那个更聪明的朋友呢?很可能就在微软工作。

谈到比尔·盖茨,普卢默强调的是坚持与专注。他形容盖茨毫不懈怠地追逐一个梦想,也就是他那句老口号:让每个家庭、每张办公桌上都有一台电脑,并称之为盖茨的“特殊兴趣”。按他的说法,盖茨聪明且极有决心,而且他聘请的人和他一样聪明,甚至比他更聪明。结果就是“一台几乎无法阻挡的智力机器”。普卢默还补充了一个反直觉的观点:这台机器做出的产品往往非常简单。

MS-DOS 无论如何都算不上复杂的产品,但它恰恰是当时市场所需要的。

弗里德曼称 MS-DOS 对微软的成功至关重要。普卢默讲述了这段商业历史。在 DOS 之前,微软主要是一家编程语言公司,为许多计算机提供 BASIC,此外还有 Fortran 和 Pascal 编译器。让每台 PC 都附带 MS-DOS 的那笔协议,使它成为一个标准,微软得以在此基础上发展数十年。他的评价比较平衡:微软在某种程度上是“运气好碰上了”,但这么做也很聪明。微软向 IBM 收费不多,长期回报来自成为标准。

§12MS-DOS 究竟是什么,以及 640K 的上限

普卢默把 MS-DOS 主要描述为一个命令启动器。你输入一个命令名,它会检查当前目录或一组设定好路径的文件夹,如果找到这个程序,就把它加载到内存中运行。他说这就是“MS-DOS 所做事情的 90%”。

它有环境变量、一定的复杂性,以及一种小型内置脚本语言。 它基本上是一个操作系统外壳(shell),提供对硬盘和 CPU 等资源的访问。 它不支持多任务,也没有图形界面。 微软在 DOS 5.0 中为编辑器和 QuickBASIC 等工具加入了基于文本的界面,对此普卢默说“我相信是这样”。 MS-DOS 4.0 带有一个 DOS Shell,大致相当于一个图形化文件管理器。

他的结论是,微软尝试过各种界面,但 DOS 仍然“基本上是一个命令提示符”。被问到它在设备支持方面延伸到什么程度时,他转而谈内存。最初的 x86 指令集把它限制在 640K。高端内存和扩展内存是贴在这之上的“创可贴”,想让任何东西跑起来又不占用基本内存,就得费尽周折。

他解释了这个上限为何影响了操作系统开发者的工作方式。640K 是永远能用到的最大容量,操作系统占用的每一点内存,都是用户失去的内存。因此,浪费会在每一台运行 DOS 的机器上成倍放大。

好对话,值得读完整。

免费试读到此结束。开通书架会员,继续阅读全文,解锁中英对照与电子书下载。