Transcription
以下是与 Brendan Eich 的对话,他是 JavaScript 编程语言的创建者,Mozilla 的联合创始人(Mozilla 创建了 Firefox 浏览器),现在是 Brave Software 的联合创始人兼首席执行官(Brave Software 创建了 Brave 浏览器)。所有这些都是革命性的技术。JavaScript 是世界上使用最广泛、影响力最大的编程语言之一。Firefox 开创了我们今天喜爱的,甚至认为理所当然的许多浏览器理念。而 Brave 则致力于不仅革新浏览器,还革新在线内容创作和互联网的本质,使其根本上尊重人们对其数据的控制权。
快速提及我们的赞助商:Jordan Harbinger Show,一些 Basket Meal 送餐服务,BetterHelp 在线心理治疗,以及 Eight Sleep 自冷却床垫。点击赞助商链接即可获得折扣并支持本播客。
顺便说一句,我想说的是,理论与工程之间存在一种我一直在思考的张力。我发过一条推文,大概意思是“好的执行比好的想法更重要”,但“一个有助于另一个”。我认为这句话的措辞很糟糕,但我的意思是,一个好的想法是必须的,但在我的经验中,好想法很多,而好的执行则很少见。我认为好的时机、好的想法和好的执行的某种结合是必不可少的,而要获得这种正确的组合是很难的,而 Brendan 在他的职业生涯中多次做到了这一点。我开始相信,这与其说是科学,不如说是艺术,就像生活中大多数有趣的事情一样。
如果你喜欢这个节目,请在 YouTube 上订阅,在 Apple Podcasts 上评论,在 Spotify 上关注,在 Patreon 上支持我,或者在 Twitter 上与我联系 @lexfriedman。
现在,这是我和 Brendan Eich 的对话。
你是什么时候第一次爱上编程的?
我高中时并没有怎么编程,但我有一个朋友有一台 Commodore PET。在我们看了《星球大战》之后,他说:“嘿,我们来做一个 BASIC 程序,来模拟死星的沟槽追击战吧。”那只是简单的二维图形,我不知道自己在做什么,所以我只是在数学等方面帮助他。我是一个数学和科学方面的孩子。我非常喜欢 70 年代初中期的 HP 计算器。它们是 RPN 的,非常坚固,而且就像艾伦·戈德芬格说的,“重如黄金”,里面可能也有一些黄金,黄金金属化,但它们是了不起的计算器,而且它们有所有的科学功能。所以我非常热衷于此。
所以我的目标是物理学。我有点错过了 20 世纪的黄金时代。我读了很多科幻小说,所以我想:“是的,这是关于超光速引擎和曲速引擎的,物理学不会很快达到那里。”我在大学本科期间,在圣克拉拉大学学习物理学的同时,开始在计算机上进行黑客攻击。你知道,我躲过了 Fortran 的子弹,因为我在科学系而不是工程系,他们还在使用 Fortran 卡片组。我想他们有一个自动装卡机,但我们在使用 Pascal。我得到了第一个便携式 C 编译器之一,移植到了我们正在使用的 DEC 小型机上。我爱上了编程,仅仅是因为程序化抽象。Pascal 就是现在会被认为是老派的,70 年代的结构化编程。Pascal 的创建者 Niklaus Wirth 是一个很好的作家,也是一个很好的教育家。他在 ETH 总是会开一些课程,比如“从零开始构建你自己的计算机,构建你自己的编译器,构建你自己的操作系统”。是的,有点。我知道一些人在他的指导下做研究生,他会用一些事情来折磨学生,比如一个只有 25 个词限制的定制电子邮件系统。[笑声]诸如此类的事情。不幸的是,我躲过了 Pascal 和 Fortran 的子弹。
你能详细谈谈 Pascal 吗?它是什么样的编程语言?它让人联想到今天的什么?因为它听起来可能对你自己的轨迹产生了影响。
它属于 Algol 系列,而 Algol 是 60 年代大型、成功的语言设计和编译器项目。它有一个继承者 Algol 68,雄心勃勃但不太成功。而 Pascal 是一种冗长的过程和函数语言。它区分了返回值的函数和不返回值的过程,它们只是计算。你可以说整个 Algol 系列都进入了 Ada。Pascal 在 Borland 的 Turbo Pascal 的帮助下有了第二次生命,Turbo Pascal 非常成功。我想很大程度上要归功于 Anders Hejlsberg,他后来去了微软,在那里和他的团队一起做了 C#,并且做得非常好,还做了 TypeScript,也就是类型化的 JavaScript。所以是的,这里有一条传承线。
但当我还是本科生时,我对 C 和 Unix 也感兴趣,因为人们正在将 Unix 移植到各种硬件上。我有一些朋友在做自己的绕线计算机,可能是 68020。我还在为我的工程课程绕线,1609 或更简单的东西,在电路板上构建计算机。我想构建一个更雄心勃勃的计算机,并将其移植到 Unix。但我选错了处理器,我选择了 National Semiconductor NS16032,这是一种非常棒的 CISC(复杂指令集计算机)处理器,而不是 80 年代中期才开始考虑的 RISC(精简指令集计算机)处理器。RISC 最终胜出,某种程度上它已经融入了。你现在两者都有了。你有了这些超标量架构,比如英特尔在指令级别上保留了过多的向后兼容性,但那只是一个前端,将其解析成这些宽的内部指令。所以,你所说的那些非常长的指令字(VLIW)的研究,当时也很有趣,它成为了向后兼容的英特尔内部的微架构。但我选择了 National Semi 芯片,它从未成功制造出来,充满了错误,我从未能启动它。
但我三年后离开了物理学,转而学习数学和计算机科学。正如我所说,我之所以这样做,是因为我看到……我当时对物理学有些幼稚和天真,我想,与此同时,硅谷正一片欣欣向荣,Apple II、PC、基于 Intel 8086/8088 的 PC,IBM 以一种有些可疑的交易将未来给了微软。所以计算领域一片开放。但在物理学方面,你对物理学也很乐观吗?
不,我的意思是,我有三个兄弟,我们都在同一个年级。我有一个双胞胎和一个弟弟,他跳过了二年级,从那以后一直和我们在一起。你知道,他后来在加州理工大学师从 Kip Thorne。哇。但他最终也进入了软件行业。物理学让你感到悲伤吗?理论物理学,即使有弦理论,在 20 世纪后半叶也没有取得任何基础性突破。
是的,事实上,我认为问题在于理论多于实验。我认为,我们需要的不是柏拉图,而是亚里士多德。数学不是全部是物理的,有很多数学,据我所知,在这个世界上是无法实现的。所以要理解世界,你需要做实验。你不能仅仅凭空想象出归纳理论,这些理论可能有很多替代理论与之竞争,而没有办法在它们之间做出选择,除了美学,在我看来,这并不是一个好的指导。
我不知道你是否认识埃隆·马斯克,或者与他有关系。在你想让我们的社会投资和建设什么方面,它更接近埃隆,还是更接近费曼和爱因斯坦?
那些绅士们已经不在了,我认为这是显而易见的。所以,正如我所说,物理学的真正辉煌时期,二战前德国的著名照片,汇集了杰出的头脑。你知道,薛定谔和爱因斯坦。我认为物理学走上了一条错误的道路,也许整个西方科学都走上了一条错误的道路,那就是追求模型而不是现实。你现在在各种领域都能看到这一点。我们可以构建非常具有预测性和生成性的模型,然后我们构建实际的设备,或者半导体之类的东西。这很好,我不是在贬低它。我们需要好的模型,我们需要实验来证明和检验它们。但我在物理学中看到的问题,在经济学(这门令人沮丧的科学)中肯定能看到,甚至在其他所谓的硬科学中也能看到,就是模型不必真正经过现实检验。它们可以成为政策工具,或者正如我所说,成为一大类替代理论中的一种,它们可能具有同样强的预测性,但没有人进行筛选。
这是社会中一个非常有趣的张力。你甚至在软件科学中也能看到这一点,它们对心理学有很深的喜爱。你在流行病学中也能看到这一点,绝不是因为病毒。这是一种张力,即我们能在多大程度上仅仅通过一个拟合良好的模型来理解世界?同时,我的主要工作是机器学习,通常没有什么可证明的东西,它只是……它基本上是关于获得正确的数据集和技巧等等。在我自己的灵魂中也存在这种张力,我从小就接触理论计算机科学,我喜欢近似算法,喜欢不同的复杂性类别,只是那些小谜题。我不知道,对你来说,作为一个曾经学习数学和计算机科学,最终却创造了世界上一些最具影响力的东西的人来说,你是否觉得 P vs NP 那个整个领域很有趣?
它在实践中并不那么有用。人们使用它进行密码分析或关于我们是否能拥有抗量子加密算法的渐近论证,这可能不实用。如果你遵循 Mikhail Dyakonov 或 Gil Calay 的观点,关于量子计算如何扩展,它有多实用,存在一些重大问题。
你是否考虑过量子计算?
不,除了业余时间。正如你所说,我没有在实践中使用这种计算机科学,因为现在几乎所有东西都是工程,以及寻找方法让计算机对人们更有用,这包括设计问题,正如你所说,这些问题本质上是一种艺术,任何你无法自动化的东西都是一种艺术。是的,我们可以让机器学习作曲,它可以模仿,你可以训练它,它听起来还可以,但也许缺乏那种“天才之水”。但用户界面仍然需要人类的艺术。
说到那些没有遵循完美理论和模型的东西……JavaScript。有两件事:一件对世界产生了巨大的影响,显然如此,而且它仍然是世界上最流行的编程语言之一。我们可以回到起源故事吗?你能讲讲 JavaScript 是如何被创造出来的吗?
我在图形技术公司工作了七年,之后读了研究生。它变得很大、很成功,并且部门化、政治化,我觉得有点无聊。我的一位在那里工作过的朋友去了 90 年代初期的超级公司之一,我认为是超级初创公司。General Magic 稍晚一些,但差不多是同一时间。MicroUnity 就是我去的公司,因为它是我朋友 Jeff Weinstein 从 Silicon Graphics 跳槽过来的,他招募了我。MicroUnity 什么都做,所以这就像是终极的“假装研究生院”。它在做新的半导体工艺,在同一块非常大但最初不是晶圆级别的芯片上做新的模拟和数字电路。它有五厘米长,而且非常热,所以我需要一个饮水机。它是一款 Cray 杀手。然后他们缩小了它,并试图做一款家庭媒体处理器,本质上是一个桶式处理器,但你可以想象一下,试图做我们现在在现代架构中看到的所有事情,带有短向量指令和宽指令或多路发射,并且通过软件做了很多事情。因为第二代机顶盒实际上是为了避免有线电视公司外出更换你那垃圾般的 General Atlantic 机顶盒的成本,换成一个稍新一点、不那么垃圾的。所以,如果你能有软件可升级的机顶盒,有线电视公司认为他们可以节省很多钱并增加功能。
这是汇编语言吗?还是什么级别的设计?
我们用 C++ 和 C 编写。我的一位同事,一个非常聪明的人,从华尔街一家热门的编程咨询公司聘请而来,他自己也做硬件设计和软件。我们正在研究如何不仅制造短向量单元,还制造通用的位混洗器和置换器,这样你就可以高效地执行加密算法,还可以进行电缆的解调,复杂的正交幅度调制信号。你基本上是在进行 A/D 转换,将数据转储到缓冲区,然后其余的都在软件中完成,所有的帧、Reed-Solomon、Viterbi 以及所有这些错误纠正。所以那是一次非常好的学习经历,但它不会成功,因为它一次做了太多有风险的事情。正如 Jim Clark 在我从 MicroUnity 跳槽到 Netscape 三年后对我说的那样:“哦,是的,你做了 10 件事,每件事的成功率是十分之一,那将是十亿分之一的概率。”乘法原理。
所以,Netscape 已经是一艘火箭了,我在 1994 年错过了去那里的机会。我认识创始人,因为我在 SGI 工作过。Clark 的公司……
你能暂停一下吗?Netscape,这艘火箭是什么时候发射的?
94 年。
94 年是 Netscape 的发射。
是的。我 95 年初去了。
好的。所以你说你错过了发射。
我错过了第一次全职就业的机会,但首次公开募股(IPO)是 1995 年 8 月。所以我赶上了。
Netscape 具有世界变革性的意义有多明显?布局是怎样的?Netscape 是最早的大型浏览器之一吗?
是的。当我还在 MicroUnity 的时候,在 93 年,我们看到了一个叫做 Mosaic 的浏览器。直到那时,我们还使用电子邮件和 Usenet(NNTP 协议),我们使用新闻阅读器,我们使用 FTP,我们使用所有这些旧的互联网协议,所有这些都依赖于 DNS 和 TCP/IP,当然还有 UDP。我在 Silicon Graphics 工作时,我们启动了整个堆栈。我们必须弄清楚如何在你的网络上找到以太网地址,然后找到它们的 IP 地址,我们的协议,所有这些东西。这很棒,因为 80 年代没有人知道什么会赢。所有专有堆栈,如 IBM SNA 和 DECnet 以及所有其他协议,都在说“我们会做到的”或者“将是异构的未来”。结果是伯克利 Unix 和可以追溯到 ARPANET 的 TCP/IP 堆栈赢了。我认为我们都知道,SGI 的所有人都知道,但销售人员不知道。所以他们不断尝试让多个网络堆栈互操作,但最终它赢了。那就是互联网,它是电子邮件和文本,而且它非常文本化。然后 Tim Berners-Lee 做了他的事情,但我认为我没有注意到。我认为他第一次做这件事,或者他写那封著名邮件的日期被推迟到了 89 年。但我注意到了 93 年的 Mosaic,因为 Mark Andreessen 和 Eric Bina 在 NCSA 做的一件事是,他们对早期 HTML 标准进行了创新。他们特别发送了一封电子邮件说:“嘿,大家,我们认为你应该能够在页面中放入一张图片。”你知道,当他发送这封邮件时,Eric Bina 已经写好了代码。我最近几年才和 Tim Berners-Lee 交谈过,他说:“哦,我们有另一种方法。”它没有奏效,因为 Mark 在 Mosaic 中发布了他的,这让我确信了几件事:互联网意味着存在巨大的先发优势,快速上线很重要。所以,你知道,Richard Gabriel,他以 Scheme 和诗歌闻名,他写过关于这个……
什么是诗歌?
哦,他是一位诗人。真正的诗歌。
不,不,我是说,他是 Lucid 的创始人,Jamie Zawinski 在 Netscape 之前在那里工作过。Lucid 正在做编译器和 Lucid Emacs,这是 Emacs 的一个著名分支,Jamie 与 Richard Stallman 斗争。所以 Richard Gabriel,一个非常非常聪明的计算机专家,也是一位诗人,但他写了一篇很棒的文章,这篇文章经常被滥用。事实上,Jamie 在他的网站 jwc.org 上的版本前面加了一个警告,叫做“更糟更好”。在我看来,这是关于软件在网络世界中的生存优势。它是关于 Unix 的。它最初被定位为 Unix 和 Lisp 的好消息和坏消息,因为所有 Lisp 人,麻省理工学院的人都说:“哦,这是皇冠上的宝石,Scheme,这是法贝热彩蛋,或者 Common Lisp,这座巨大的大教堂,我们当然会赢,这是文明。”而那些……你知道,借用《黑道家族》的话说,那些来自新泽西的农民,那些来自贝尔实验室的家伙,他们只是……没有什么坚实的东西,都是黑客。嗯,猜猜谁赢了?
所以你的意思是,这是互联网的一个基本原则,快速移动就能获胜?
你可以说,在几乎任何网络系统中,就像在生物进化中一样,你会看到成功的等位基因在种群中传播,它们并不总是……它们没有缺陷。杂合子优势,对吧?你可以让父母双方都给你基因变异,你就会得到镰状细胞贫血症。但如果其中一方给了你,你就会对疟疾更有抵抗力。所以这不是一个美丽的过程,除非在大规模上。然后你就会意识到,因为它移动迅速且能够适应,所以它能够获胜。人们仍然对此感到挣扎。我以前也为此挣扎,因为 JavaScript 是匆忙完成的,而且为了网络兼容性,早期的错误无法修复,甚至标准流程也注入了新的错误,就像它会做的那样。但通常标准机构会回去进行兼容性更改,你不能这样做。网络更像是生物学,你保留仍然有效的东西,你不想破坏 ATP 代谢或其他什么。所以你必须接受“更糟更好”的现实,它被体现在你可能不喜欢的实际设计点上。JavaScript 就是这样,我已经完全接受了。但我也认为这是 JavaScript 席卷许多编程领域的一个巨大优势。人们会说:“哦,这不是因为它的优点。”是的,你是对的,但我们也随着时间的推移在标准机构中改进了它。我花了 20 年时间这样做。你没有选择。我不是说那是最好的语言,我只是说那是做这件事的正确时机。而且我喜欢说,另一种选择是不做。我可以告诉 Netscape:“我做不到,这太仓促了。”那将是 Visual Basic Script,那将是糟糕的。
所以,这是一个很好的呈现替代方案的方式。所以,你当时在 Netscape,你是在多少天内写完的?为什么只有那么多天?你心中的目标和基本原则是什么?
我之所以以一种狂热的方式描述“更糟更好”,是因为它符合 Netscape 的模式。当……当人们知道 Jim Clark 和 Marc Andreessen 正在创办 Netscape,并且他们在 1994 年发布了第一个版本时,那个浏览器取代了 Mosaic。事实上,这就是为什么 Mozilla 叫做 Mozilla,它是 Mosaic 的杀手,就像杀死 Mosaic 的巨型怪物一样。太棒了。而且他们知道他们可以……再说一遍,这不是你在做改变世界的尖端科学研究,你更像是要推翻 Mark 之前版本的浏览器,它有图像和其他重要性,然后你停止了对它的工作,你正在让 Netscape 成为新的东西,它有图像、插件(那是当时做视频的方式)、还有一些现在已经消失的平铺窗口,叫做框架和框架集。HTML 表格是新的,Eric Bina 在 Netscape 1.01 中做了表格。
当我到那里时,他们正朝着 IPO 迈进。Clark 想要尽早 IPO,我认为他的直觉是正确的。这开启了整个 .com 时代。91 年美国有一场衰退,你可以看到旧的《法律与秩序》重播,他们谈论衰退对纽约客的打击有多大。在那之后,格林斯潘在美联储大力推动,技术一直在发酵,直到与互联网结合。Netscape 使 .com 变得可能,使 eBay 成为可能,让人们在广告牌上识别一个 URL,然后回家时输入它。那太棒了。
那是一艘如此快速移动的火箭,以至于 Mark 和工程团队认为:“我们需要让它成为一个可编程的浏览器,而不仅仅是一个文档查看器,不仅仅是一个视频。它都是 HTML,带有图像、表格,还有你说的框架,真的,插件。根本没有动态元素。”
是的,你得到的最大动态性来自于插件,当时只有几个。Flash 还没有出现。我想是 Java Applets?
嗯,这就是我们与 Sun 达成协议的原因。事实上,我被招募去浏览器中做 Scheme。还记得吗,伙计们,偷了 Gerald Sussman 美丽的 Lisp 变体?我本来要在浏览器中做的,因为我在 SGI 的朋友们想:“嘿,我们喜欢 Scheme,你喜欢 Scheme。”我说:“我几乎从不使用 Scheme,它在行业中除了在孤岛之外几乎不被使用。但我喜欢它。好吧,我来浏览器里做 Scheme。”我有一个来自我 2017 年演讲的幻灯片,上面有 Bruce Willis 在《虎胆龙威》中爬过通风管道,他说:“来海岸吧,玩得很开心,来吧,在浏览器里做 Scheme。”
但当我到那里时,浏览器里并没有 Scheme,因为他们已经和 Sun Microsystems 达成了协议。我最好的联系人是 Bill Joy,我非常钦佩他,他是 Berkeley Unix 的创始人之一,也是 Sun 的创始人。Bill 有一个让浏览器也变得可编程的想法。所以主要的想法是将 Java 虚拟机(VM)嵌入到 Netscape 中,当时这还不是很容易做到,包括 Netscape 在 Windows 上的版本,那仍然是最流行的,即 16 位 Windows 3.1,它正在消失。微软即将推出 Windows 95,每个人都担心他们会推出……我猜是 Internet Explorer 2,当时是 3。第二年他们已经收购了……或者以某种方式投资了 Spyglass,这是另一家从伊利诺伊大学 NCSA 出来的公司。事实上,微软在 94 年底我到 Netscape 之前就试图收购 Netscape。我后来听说了这件事。我听说他们提供的钱太少了。所以,你知道,Jim Barksdale 和 Jim Clark 说:“滚出去,别烦我。”
然后他们意识到:“哦,这会伤害我们,因为他们会抄袭我们。”事情并没有立刻发生。我不确定比尔·盖茨的“互联网浪潮”备忘录是什么时候写的。那是比尔·盖茨意识到微软正沿着 AOL 的老路或 Compuserve 的老路走下去的著名备忘录。一个名为 Blackbird 的项目,大概是以 SR-71 命名的,我不知道。他们打算做一个……你知道,拨号服务,带有自定义内容语言堆栈和自定义渲染。那不是 Web。你知道,他们可以有内容合作伙伴,他们有很多钱,但仍然无法与 Web 规模相比,它不会有吸引力。盖茨意识到这一点,他让公司来了个一百八十度大转弯。他们再也买不到 Netscape 了。我不确定时机。所以他们决定抄袭。一旦我们意识到这一点,Netscape 内部的每个人都感到更加紧迫和更加狂热。
所以,当 Java 交易开始酝酿时,我做 Scheme 的机会就消失了。但仍然有机会做一个与 Java 相辅相成的语言。因为 Java 是一种编译语言,它已经发展和改进了很多,但它面向的是那些需要一定薪水或时薪的严肃的高级程序员。Bill Joy 观察到,我和 Mark、Jason 也观察到,在一个成熟的堆栈中,比如微软,拥有像 Visual Basic 这样的脚本语言(在 IE3 中变成了 Visual Basic Script,但没有取代……没有杀死 JavaScript)会非常有益。你需要两种语言:一种是面向组件编写者,他们价格更高,经验更丰富;另一种是面向脚本编写者,注册会计师,平面设计师,有一定编程倾向的任何人,业余爱好者,都无所谓。那里有一种更民主的方法来编程组件,将它们粘合在一起。有些人称之为“胶带语言”,我不太喜欢。但我们看到了 Bill Joy、Mark、Jason 和我的需求,需要一种配套语言。我最初想称之为 JavaScript,我不喜欢它,那是营销部门的计划。Mark 称之为 Mocha,我喜欢。Netscape 的营销部门似乎不喜欢它,所以他们说:“哦,有一个软件叫 Mocha,我们不能用。”他们在八月份尝试了 LiveScript,但没有成功。然后终于在 1995 年 12 月,我们获得了商标许可。
但我为证明这是可行的所做的工作很重要。我是在四月份来的,即使那时 Netscape 也在快速增长,他们找不到客户端团队的开放招聘名额给我。所以他们把我招进了服务器团队,我在服务器团队工作了一个月,负责后来成为 HTTP/1.1 的工作。所以,我实际上……我在 Silicon Graphics 和 Greg Chesson 一起做过协议工作,他曾是贝尔实验室的实习生,他认识所有的 Unix 创始人。Greg 对利用 VLSI 将协议提升到新的水平非常感兴趣,因为他认为 CPU 不会扩展。不幸的是,他错了,摩尔定律跟上了,你现在有千兆以太网运行在常规处理器上。但我在 SGI 也做过协议,以及 Unix 内核黑客和 NFS 等等。所以,我进入 Netscape 是为了在服务器端工作一个月,但我的脑子里一直在想:这种语言应该是什么样的?它应该易于使用吗?它的语法甚至可能更像自然语言,比如 HyperTalk,Bill Atkinson 在 HyperCard 中的语言,如果你用过早期 Mac 上的 HyperCard 的话?我想:“嗯,我想这样做,但我的管理层说:‘让它看起来像 Java’。”
Java 从远处看像 C。那是什么意思?我们说的是花括号吗?
是的,我是说,管理层理解什么,不理解什么。营销部门不知道,但管理层知道。工程副总裁 Rick Shaw 知道。我们有一个计划。即使是这样,如果你有这种配套语言,你将把 Java 和 JavaScript 粘合在一起。所以你将在内存中,在堆中拥有商业数据类型。所以你将希望 Java 中的一些数据类型反映到 JavaScript 中。你将希望 Java 原始类型(不幸的是,它将原始类型与对象分开)反映到 JavaScript 中,至少是其中一些。数字、双精度浮点数(在 Java 中称为 double,在 C 中称为双精度浮点数)、字符串或布尔值,以及对象等等。
所以,一开始就有这个限制,看起来像 Java 意味着 C 的花括号语法,但也意味着一些数据类型和对象,比如对象等等。相等运算符?垃圾回收?是的,甚至位运算符和移位运算符,包括 Java 中没有无符号整数类型的无符号右移。它说:“如果你想执行无符号操作,请使用运算符。”后来事实证明这很重要,我稍后会讲那个故事。
JavaScript 从 Java 继承了一套运算符、表达式语法、语句语法,直到某个点。但我想用一种函数式语言,我想要一点 Scheme,即使它不像 Scheme 那么干净。我希望你喜欢……
你对 Scheme 和 Lisp 有一种喜爱,但那种函数式语言……
是的,我想要一等函数。因为我看到了浏览器中回调的需要。这是一个单线程程序,所有早期浏览器都是单线程的。这对用户来说是正确的模型。大多数用户还没有准备好进行互斥和线程。所以在单线程世界中,你不能阻塞用户界面。所以你必须使用回调,稍后运行。而且,不用太花哨,试图捕获 Scheme 中的 continuation(如 call/cc),我想我会让它变得容易,让你拥有……
你想要一等函数。
是的,你可以传递它们,它们可以被调用,也可以被回调。Java 当时没有。它花了很长时间才获得真正的头等函数。Lambda 现在已经进入 Java,Java 7 或 8,我想。
它从一开始就有并发性,对吧?
是的。
你认为浏览器中的 JavaScript 不会有并发的奢侈品,对吧?
是的。原因在于 Java 将运行在插件中,所以它可以分叉线程,尽情去做。但浏览器中的主要操作是在单线程程序中,在 Unix 或 Windows 上的单个 Unix 进程中。在那里,你必须服务事件循环,然后……你知道,做事情,响应网络,布局一些 HTML,渲染它,将宽度转换为高度,填充容器框,早期的……后来成为 CSS 盒子模型的……以及运行脚本来……你知道,让东西更生动,响应用户输入。所有这些事件驱动的编程在某种程度上都像 HyperCard,因为 HyperCard 有这种 `on event name` 的语法。所以这就是为什么在 JavaScript 中你有 `onclick`,后面跟着 `run`,作为事件处理程序的名称。还有一些有趣的,`onmouseover` 和 `onmouseout`。人们仍然抱怨那些。但你知道……多年来,标准化的事件多了很多。
但它是事件驱动的、单线程的编程的混合体,因为它必须在浏览器的主线程中运行,而那里才是发生动作的地方。而 Java 却从未达到过这一点。这意味着 Java 无法轻松、快速或以嵌套的方式与文档交互,与从 HTML 文档中反映出来的对象、表格和表单等交互。这就是我认为 JavaScript 能够生存下来而 Java 却走向死亡的原因之一。Java 被困在插件的牢笼里。它基本上被限制在一个矩形里,苹果的矩形。虽然我们甚至构建了……Next year,Nick Thompson,我在 SGI 的朋友,当时是 CMU 的实习生,他构建了 LiveConnect 的第一个版本,用于粘合 Java 和 JavaScript,以实现你所说的商业数据类型和堆之间的交互。
它奏效了吗?
它奏效了,但 Java 在掌管一切,JavaScript 在掌管一切。Java 只是这些组件,这些助手。你不如用 JavaScript 做一切。而随着时间的推移,它就像一个进化过滤器。它只是……谁需要插件?事实上,Sun 错误地管理了 Java 作为插件。他们想:“嗯,Netscape 为我们提供了分发渠道,我们不在乎浏览器,只是为了推广 Java。”这是一个巨大的失误。然后他们试图……因为微软在多年后正在扼杀 Netscape,他们试图进入微软。你可能还记得,有一个 Sun 和微软的交易,结果以失败告终,微软将 Java 赶出了 Windows。那才是他们真正下定决心的时候。我想他们已经评估过了,并且喜欢 Anders Hejlsberg 的 .NET,以及 C#,并决定:“我们不想要 Java,我们不想要……任何 Sun 的东西,我们不想要专利风险,我们不想要……”我不确定争论点是什么。我认为有一些专利方面的问题。
在此之前,微软一直在使用 Java 组件,比如 Outlook Web Access,它有很多 JavaScript 来实现类似 Hotmail 的 Web 邮件用户界面。他们必须通过 HTTP 调用邮件服务器。他们使用了一个 Java 对象来做到这一点。当他们把 Sun 赶出去时,突然……左手赶走了,右手说:“我们最好在 Outlook Web Access 中做些别的事情。我们该怎么办?”他们说:“让我们添加一个 ActiveX 组件吧”,这是他们自己嵌入语言中的原生方式。它将成为后来被称为 XMLHttpRequest 的东西,现在是 HTML5 中的一个 Web 标准,用于异步调用。它已经被 HTML5 中的 Fetch API 所取代。但整个这个传承可以追溯到 Java 作为失败者被赶出去。在微软将其赶出之后,它是一个插件。你会发现它在北欧国家是必需的,比如智能卡银行,因为法律规定必须使用它,但实际上并没有怎么使用。或者……有一些飞行员使用它来获取飞行信息。但 Flash,Netscape 可以收购但遗憾的是没有收购。
他们真的搞砸了。
我敢肯定我们会搞砸的。
Flash 是什么时候的?
我想是在 IPO 之后。所以大概是 95 年底。
Flash 是 Adobe 的吗?
不,不是。它当时叫做 FutureSplash。是那对兄弟,Jonathan Gay,我想是他的名字。他来敲门,Netscape 的营销人员在筛选技术合作伙伴或潜在收购对象,非常残酷。每个人都想搭上 Netscape 的……你知道,股票盈利列车。他把他们打发走了。他们最终卖给了 Macromedia。Macromedia 是 Flash 的诞生地。Macromedia 的好处是它是一家工具公司,所以它投资于……我认为是最好的想法,这些想法仍然有些被我们遗忘了。Flash 的时间线……动画是某种不可变的函数。他们有围绕它的工具,比如 Dreamweaver。
是的,Flash Builder 是最后一个。这些工具被真正的艺术家、特效人员和设计师使用。2005 年左右,所有的餐厅网站都是用 Flash 做的。那时我们也在尝试做 HTML5,那是 Firefox 的时代。我们试图让 Web 足够强大,你不需要 Flash。但如果你还记得,你去一家餐厅,它就像一个游戏,或者什么东西。它就像 Flash,所有的字体看起来都很小。
你从一开始就不喜欢 Flash,你觉得这不对劲?
不,我实际上很欣赏 Flash 的技术,而且我在这方面很务实。我意识到,无论你拿到一副烂牌(比如 JavaScript 是仓促完成的),还是你有一个 Flash 插件,你可以投资于工具并使其相当不错,你应该为你的用户做得更好,并尽你所能地发展它。
而由于微软的垄断滥用(他们因此被判有罪),以及……即使在那之后,直到 Firefox 和 Chrome 出现之前,人们一直在说:“哦,Web 不能做 X,不能做 Y。我们必须有一个插件,我们必须有一个新的方法,我们必须清理一切,拥有一个新的 Web。”所有说这话的人都失败了。他们失败的原因是 Web 的价值太大了,这个巨大的网络。而“更糟更好”的原则意味着,你不仅可以糟糕地开始(他们都嘲笑这一点),而且可以先上线,获得广泛的分发,获得某种进化优势,在优先顺序上。但你也可以随着时间的推移进行改进。
所以,如果你要改进 Flash,而且由于某种原因 Flash 现在已经失宠了。史蒂夫·乔布斯说 iPhone 上不能有 Flash。那可能是致命一击。把你的精力投入到 JavaScript 上。事情就是这样发生的。所以我们在 Mozilla 和 Adobe 一起做了很多工作来改进……它收购了 Macromedia,以改进 Flash,并改进 Flash 中的 JavaScript 版本。我们试图标准化它。
哦,对了。我太超前了。
是的。是的,就是这样。
我们可以倒带一下吗?
这是一个神奇的……你知道,这是整个计算史上的一个特殊时刻。
我们稍后会谈论它。但可以争辩的是,有可能整个世界最终都会运行在 JavaScript 上。所以,就像那些日子一样。
如果你能描述一下蛋糕是如何烘烤的,从你工作的几天里,你的脑子里在想什么?你喝了多少咖啡?你紧张吗?你惊慌失措吗?
我会尽量回忆起来。我的意思是,你是对的,有一些重要的时刻,从后见之明来看,也许被夸大了。但就像黑格尔看到拿破仑骑马一样,雅娜说:“看,世界精神骑在马上。”马克知道,他是我……你知道,执行赞助人,他是我……你知道,集思广益,JavaScript 应该就在页面中。对他来说,说这一点很重要,因为我也这么想。但很多人说:“你不能在标记中间写编程语言。”事实上,如果你天真地这样做,会有问题。你会看到代码被排成一堆随机的乱码。所以我必须弄清楚如何隐藏它。那是一个挑战。
这是一个突破性的想法吗?我是说,马克想到了这个想法,你把代码注入到标记的中间,网页的中间?
这被认为是有点异端。有一个 SGML 专家,我忘了他的名字,他和我通信过。起初他很生气。“你为什么不使用标记部分?”他说。“我为什么不使用标记部分?”我说:“HTML 的标记部分不是 HTML 的一部分,浏览器也不支持。”所以我做了一些相当于它的黑客行为。随着时间的推移,你可以做到正确的 SGML 事情。但它最终还是来了,而且再次是进化上的必然。这几乎就像……就像……你知道,Liam Argüelles 认为我们必须考虑共生关系。也许线粒体是古代的原核生物,进入了细胞,并以某种方式变得有益。同样的思维方式也适用。你必须将 JavaScript 嵌入到 HTML 中。它将成为一种好的病毒。
它不会。所以代码在某种意义上变成了数据,它只是被携带,它被非常……
但有……所以你当时专注于 Netscape。浏览器不必支持正确地解释 HTML 和任何代码的混合吗?
我必须隐藏它,以防旧浏览器,包括当时占主导地位的 Netscape 1.1。所以我使用了一个 HTML 注释。但注释所在的容器是 `<script>` 标签,这是一个新元素。我可以在 Netscape 2 中设置不同的语义,其中 HTML 注释分隔符不再是多行括号,而是一行或基本上是一行。所以你写的 JavaScript,编程语言,被写成一个注释,对所有浏览器来说都是一个注释,以及一组被忽略的、真正的代码的括号,用于新的浏览器。这是一个双向注释隐藏黑客,我称之为。这是我们能够启动 JavaScript 的绝对必要条件。我们没有从单独的文件加载脚本。Netscape 2 中唯一的脚本是内联在文档中的。
这里的挑战是什么?你输入了什么?你考虑了哪些选择?
垃圾回收。因为我没有时间写垃圾回收器。我一开始就没有。所以这个东西基本上使用了……你知道,内存池,或者 GNU 称之为对象池,它最终会耗尽内存。在 10 天的黑客攻击之后,我匆忙添加了引用计数。所以,在我做了 HTTP/1.1 的服务器团队工作,并思考语言之后,我终于在五月初被调到了客户端团队。那时我得到了 Mark 的“开始”信号。
这就像我们等不及了,因为 Netscape 内部的人甚至 Sun 内部的人都在怀疑。Bill Joy 是支持者,但他是一个……独自一人,他看到了 JavaScript 的作用,正如我所称的,作为“副手”语言。Robin the Boy Wonder,Frank Miller 在《黑暗骑士归来》中这样称呼它。那是一种愚蠢的小语言,将是粘合语言。它可能会随着时间的推移变得重要。而拥有这种互补性,语言的配对,就像微软用 Visual C++ 和 Visual Basic 堆叠起来一样,会更好。
那么,那个“我完成了”的大时刻是什么?
我必须做一个演示。我记不清日期了。我想是为了 Alan Kay 的一本编程语言历史书,他和我一起写了很多。我想那是从星期四晚上到下个星期,整整一周,然后到星期一。
10 天?
不,不是。我真的很快。因为我从本科时就开始使用大量的 C 编译器和前端编译器知识。当我开始作为一名叛逆的物理学专业学生进入计算领域时,人们正在为高效的自下而上语法、解析器进行形式化。LALR(1) 是真正重要的东西。我研究了所有这些,并学会了如何解析它们。最后,如果你做 C 语言,你经常会做 Dennis Ritchie 实际上做的事情,那就是递归下降解析器。你可以手工编写它。我以极快的速度为 JavaScript 编写了它。大部分都对了。我没有……你知道,在版本问题或其他错误方面没有优先顺序。但我从 Java 和 C 复制了很多东西。我试图保持简单。比如,在那些 10 天的冲刺中,两个不同动态类型的对象之间的相等运算符说:“不,它们不相等,它们的类型不同。”然后在那之后,我有内部早期采用者,他们使用 JavaScript 来……比如将一个数字与一个已经被字符串化的数据库字段进行匹配。
他们说:“哦,我们能不能就用隐式转换吧?” 像个白痴一样,我同意了。我给了他们想要的东西。我试图取悦他们,并获得采用。你知道,这破坏了双等号的等价关系。你知道,有一些关于 NaN 的边缘情况会破坏它,但它真的破坏了它。在运算符中加入隐式转换是人们仍然嘲笑我的事情。所以,让我们谈谈两件事。第一,听起来比较运算符,相等运算符是你后悔的事情。也许让它变得草率,让它变得草率。那么,在这 10 天里,你最大的遗憾是什么?你最自豪的是什么?所以,让它变得草率是在这 10 天之后。我从中学到的教训(我已经在推特上发过了)是,当人们来找你说:“请让它变得更草率,添加这个可爱的功能”时,答案应该是“不”。我本应该知道的,因为我认为尼古拉斯·维尔(Nicolas Vere),我崇拜的英雄之一,说过设计的本质就是省略东西。但是在这 10 天里,我也像我说的,我非常匆忙,我省略了垃圾回收,这回来困扰我。但我及时加入了引用计数,这样人们就不会在长期运行的任务中立即耗尽内存。当你没有垃圾回收时会发生什么?你有对象。好吧,你只会耗尽内存。你知道,我一开始很喜欢它。你写一个简短的脚本,页面不会持续很长时间,它不会做很多事情,而且没关系。哦,我明白了,是的,是的。但是如果你在写一个游戏之类的东西,并且你在进行基于事件的分配,你就会耗尽内存。这在 1995 年夏天被注意到了,人们说:“这是怎么回事?” 哦,是的,我得回去做引用计数了。然后引用计数的问题是,你用 C 语言编写语言,用 C 语言编写运行时,这是一个不安全的语言。如果你在进行引用计数,并且计数器溢出,你就会管理失误。它会变得很高,卡住很高,你又会再次泄漏内存,然后耗尽。如果你溢出它,你就会预先分配仍然在使用中的内存。即使在那时,我们也知道所有安全黑客都知道,因此你有一个潜在的远程代码执行漏洞,因为这发生在像不可执行的堆内存和堆栈防御措施出现之前,可以防止内存被接管。所以,如果你能从远程方面编写一些 HTML 和 JavaScript,恰好利用了内存安全中的一个错误,比如导致 JavaScript 溢出引用计数器,而脚本仍然持有该对象的句柄,并且它试图在其上调用一个方法,并且对象中存在某种查找函数表,但你已经设法用字符串填充了堆,这些字符串伪造了它们自己的函数表,你就可以调用其他代码。这立刻就成了一个问题。所以安全,你知道,JavaScript 提高了赌注。Java 也有这个问题,但它是在自己的虚拟机中,这只是太阳公司的一个单独的烦恼。我们在 Netscape 中立刻就遇到了这个问题。所以 Netscape 2 在我这 10 天之后发布了,以及这些后续工作,以便更好地将 JavaScript 嵌入到浏览器中,并通过引用计数添加垃圾回收,我真的称之为引用计数,并将其发布。我们进行了一系列的点发布,我们像疯子一样修复了安全漏洞。但是,当你坐在门廊上,望着夕阳时,你最自豪的是什么?在这 10 天里,我认为头等函数闪耀。我认为,尤其是因为 Java 没有它,而且它有点不寻常。Scheme 在某种程度上做到了。一天结束时,精神上来说,我的意思是,人们抱怨,因为 Scheme 有极简主义,它有六七个特殊形式,它有卫生的宏,它有 call/cc,它有一种漂亮的、完整的形式集,可以使微积分的世界在实践中令人愉快。而 JavaScript 是一种多范式或混乱的语言。只是一个小小的题外话,你提到了马克·安德森。听起来像是比尔·乔伊。但留在马克身上。听起来他给了你很大的影响,因为他似乎相信你在那里所做的事情。你能谈谈马克在你生活中的作用吗?是的,我们会去帕洛阿尔托市中心的半岛奶油店见面。马克刚刚毕业,或者他在做什么。他是个大个子,后来他变得更健康了。他有头发。他会点巨大的奶昔和汉堡。我们会去那里讨论要做什么。因为我们时间不多,所以非常直接。我们没有谈论它,但其含义是微软正在追赶我们。马克在 IPO 前大胆地说:“Netscape 加 Java 就能杀死 Windows。” 这是雄心勃勃的。浏览器可编程,它成为程序的新的运行时,它是元操作系统,或者它是替代操作系统。但他仍然看到了 JavaScript 的价值,是的,即使他这么说,而 Java 是大名鼎鼎的名字,因此有了商标许可。他认为 JavaScript 很重要。他甚至想,如果我们得到了,我在另一次采访中也说过,他想,如果我们得到了我的朋友 Kip Hickman,他从一开始就在 Netscape,当我加入 SGI 时,他是一名内核黑客。在他开始编写自己的 JVM 之前,我们完成了与 Sun 的交易,并获得了他们的代码和 Java 编译器 JavaC,Arthur van Hoff 写的代码非常漂亮,都是用 Java 写的,它是自托管的,或者说是引导的。所以,一旦 Kip 的 Java VM 能够运行 Sun JVM 的字节码,运行自托管编译器来发出字节码,我们就可以使用它了。一旦我们能够在 Kip 的 VM 中引导,我们就需要 Sun 了。马克说:“好吧,也许我们可以就这样……抛弃 Sun 或 Java VM,或者如果你是 JavaScript VM,我们现在需要图形。” 所以马克想得很远,因为他知道你可以用 HTML 和图像做事情,但总有一天你真的想要像电影图形,或者三维的。甚至 SGI 已经开始走下坡路了,因为那里的第一个 VLSI 团队已经去了 3dfx 和所有其他公司,这些公司制造了你 PC 上的显卡。Doom 很流行,Quake 也很流行,所以我们都在玩 Quake。我老了,所以我很糟糕。但是为什么不把这种图形能力放到网上呢?事实上,这最终发生了,在 Mozilla 的 Firefox 时代,Vlad Vukichevic 将 OpenGLES 映射为 WebGL。但 OpenGLES 是 OpenGL 的移动版本,它是一个基于 SGI GL 的标准。所以,所有这些图形库的谱系,或者说是图形语言,对于后来成为 GPU 的东西来说,马克想得很远,他说:“我们也需要图形。” 我想:“好吧,我可以试着找一个我在 SGI 认识的人。” 但他是一名麻省理工学院的研究生,师从 Barbara Liskov。他后来听说这件事时笑了。Andrew Myers,他在康奈尔大学待了很长时间,我认为他是一名全职教授。马克说:“太好了,我们会找到他的。我不确定他会不会来。我们会给他钱,股票期权。” 我们从未这样做,然后我们完成了与 Sun 的交易。所以 Kip 很高尚地放下了他自己的 JVM,我们使用了 Sun 的 JVM。那是一个雄心勃勃的时期,马克非常有创造力,因为他一直在努力,他雄心勃勃,他想让 Netscape 可能控制局面。也许你可以谈谈 Netscape 和 Internet Explorer 之间的这种较量。你在这次谈话中对微软说了一些好话,但这是主题。我的意思是,史蒂夫·乔布斯也有类似的评论,从一个宏大的哲学原则的角度来看。你能评论一下微软从 IE1 到现在的 Edge 所采取的方法吗?你认为他们在这方面做得有价值吗?偶尔的抄袭之类的,或者是因为 Internet Explorer 的存在而让世界变得更糟吗?所以,我将把这个问题分成几个历史时期,因为我认为今天的微软是一家截然不同的公司,他们对 Edge 的做法也不同。但那时,盖茨……他是一个有攻击性的人,在我看来并不真正原创,不是一个原创者。史蒂夫·乔布斯曾经说过,他没有品味。我不是在开玩笑,没有品味。你可以看到当时的苹果有漂亮的排版、连字和字距调整,字体看起来很棒,而 Windows 有这种丑陋的系统字体,它与像素精心对齐,所以它什么都没得到。对不起,我一直在打断,但为什么 Internet Explorer 在这些竞争的历史中一直获胜?分发,分发比任何东西都重要。这就是为什么,即使现在,我们也在浏览器大战中看到 Edge 表现更好,因为它被推广给了 Windows 用户。我们家里有 Windows 10 电脑,我们有一些 Windows 7 电脑,或者笔记本电脑,我们仍然在运行,因为我们通常不连接互联网。但是,一旦你有了那个操作系统,你就可以强制执行,苹果也用 Safari 做到了,这并不微软独有,这很可悲。但分发很重要,这就是为什么我认为 IE 会获胜。这就是为什么 Netscape 的每个人都觉得我们完蛋了。迈克尔·托伊和杰米会说我们完蛋了。但有一段时间,我们有机会,我们在 Netscape 中也进行了创新。我们进行了大规模的平台推广,Java 和 JavaScript,以及插件,更多的插件,以及更多的 HTML 表格功能。我们真的开始将相当静态的 Web 语言变成一个可打印的堆栈。甚至在 Netscape 2 的测试版中,人们就使用 JavaScript 构建了我们现在称之为单页应用程序的东西,比如 Gmail。他们使用本地 JavaScript 进行计算,并在后台的隐藏框架中调用服务器。所以,它预示了后来出现的 Ajax 或动态 JavaScript、动态 HTML 的很多内容。人们看到了这一点。我的意思是,即使他们看到了,从我的角度来看,这似乎相当聪明。你让代码在浏览器中运行,这给我留下了深刻的印象,我后来从 MIT 的 Eric von Hippel 那里了解到,那就是用户创新网络,领先用户的效应。推出 JavaScript,即使我们没有开源,我们也在早期和宽松地进行测试版发布,通过 Netscape 获得早期开发者反馈,这绝对至关重要。我喜欢它。我在 SGI 上也做过一些,在我工作的某些产品上。但它真的在 Netscape 中得到了体现,这最终导致了 Mozilla,在那里你一直在与开发者打交道,以及早期采用者,领先的用户。但领先的用户帮助改进了 JavaScript,即使在那些我几乎无法更改的最后几个测试版中,我也受到了相当严格的变更控制。所以,我们正在谈论一小群人,就像那个名叫 Bill Dortch 的领头人。你仍然可以在 1996 年的网络档案中找到他的作品。这是一个单页应用程序,是一个艺术家的山景艺术画廊。JavaScript 并不完全起作用。他使用本地 JavaScript,使用本地数据库,你现在会想到 JSON,但它都是纯 JavaScript 代码,一堆被构造出来的对象。太酷了。那么,如果你能对 JavaScript 的发展做一个宏观的概述,JavaScript 这些年来是如何变化的?你们中的任何人,从最初的 10 天,加上垃圾回收和安全修复,它是如何演变的,现在它正在占领世界?这是一段颠簸的旅程,因为在微软接管 Web 之后,标准机构就被关闭了,我认为……然后由于微软的反垄断案而受到惩罚。你能谈谈标准机构吗?那也是一段有趣的旅程,因为 Netscape 在 Web 和 HTML 创新方面处于领先地位,比如框架和框架集、表格。而 W3C 当时有点偏离,有点在 SGML 领域,朝着 XML 的方向发展,像拉拉之地。我要对它有点苛刻,因为它是 HTML。抱歉,HTML 是 HTML 的前身标记语言。它有点更具扩展性,标准化的通用标记语言。它有点像 XML,有 20 个括号,但它有各种复杂的语法来做不同的语义。这就是为什么我认为 TBL 和其他人想要做语义网,然后选择了 XML。但是他们有一个奇怪的想法,他们可以用 XML 取代 Web,或者他们会将 Web 升级为 XML。这是不可能做到的。更糟的是更好,有具体的意义。Web 对 HTML 非常宽容,包括一些小的语法错误,这些错误可以被纠正。编程语言通常不会进行纠错,因为 HTML 的另一个惊人之处在于,它更像生物学而不是编程。是的,正是如此。所以,XML 在其标准形式下非常严格,而且永远无法允许用户犯下这些错误。最有趣的部分是微软说:“嘿,我们正在做 XML。” 但他们将其放入 Internet Explorer 的默认媒体类型中,通过 HTML 错误纠正器进行处理。哦,哇。所以他们有点歪曲它,使其流行、可用和易于访问。所以,XML 本身永远不会占据主导地位。而 W3C 有点不完全起作用,因为 Netscape 没有与他们合作。我们考虑了 JavaScript 的发展方向,我们意识到我们的标准大师 Carl Cargill 意识到有一个欧洲标准机构,它已经让微软头疼了,通过标准化 Windows 3.1 API 的部分内容,欧洲政府坚持要求。他们说:“微软,我们不能在没有一些标准的情况下使用你们的操作系统。” 微软说:“这是我们的文档。” 然后政府说:“不,我们需要一个欧洲标准。” 这个机构叫做欧洲计算机制造商协会(ECMA),它最终全球化了,并成为一个专有名词而不是一个缩写。现在它只有一个大写的 E,后面跟着小写的 CMA。一位早期微软的家伙,当我第一次召集一个工作组讨论 JavaScript 时,我遇到了他,他说听起来像一种皮肤病。但它给了 JavaScript 一个名字,ECMAScript。那是标准名称,因为 Java 是 Sun 的商标。他们如此激进,以至于他们向那些中欧血统的人发送了停止和终止信,他们的姓氏是 Javonko,他们称他们的网站为 javanco.com。Sun 发给他们一封信说:“你在域名开头使用了 Java,你必须停止和终止。” 我比世界上任何东西都更喜欢营销。所以,ECMAScript,现在通常被称为 ES 加版本。我想说人们比任何东西都更常使用 JS。人们仍然说 JavaScript。JavaScript 书籍,抱歉,我的意思是,当你指的是它时,通常是 JavaScript。当你想要指代 JavaScript 的一个版本时,你会说 ES6,ES5,是的,或者现在他们已经变成了年号,这有点令人困惑,因为它是 2009 年的偏移量。ES6 是 2016 年。是的,它与年份不完全匹配。是的,是的。那么,做出了哪些选择?JavaScript 是如何在这里演变的?所以,我们采用了这个新的标准机构,我们认为它有一个可靠的记录,可以顶住微软。但微软派了很多人。他们派了一些相当不错的人。然后,当他们意识到我在这里,Netscape 不会就范,他们就派了一个非常厉害的人。他是个聪明人,他做了很多关于规范初稿的工作,Sean Katzenberger。他已经离开了微软。他甚至做了我做的事情,他告诉他的老板:“别再烦我了,我专注于这件事。” 因为创建规范的初稿需要大量的专注工作。我仍然在处理所有的事情。我在某些领域有兼职帮助,在前端集成方面,我有前端人员。但我无法像 Sean 那样花时间写初稿。但我必须参与,因为我基本上是在记录语言的功能,在我们不喜欢它的地方,而微软不同意的地方。我们有时会得到一些小改动。这就是标准的由来。有不同的实现,根据它们的市场力量,它们在有协议的地方和没有协议的地方进行互操作。占主导地位的通常会设定事实上的标准,然后你应该将其反映到法定标准中。JavaScript 随着 Netscape 的衰落和微软的崛起而发生这种情况。我们完成了标准的第一个版本,于 1997 年在法国编纂。我们去尼斯旅行,无论出于何种原因,都非常令人难忘。或者只是因为那里很漂亮。欧洲和 IBM 等公司都在那里。Mike Kalashaw,IBM 的一位研究员,是一位英国人。当时负责 Active 的 John Vandenbelt 是个非常健谈且有趣的人。他带我们去……伟大的……弗里达·梅耶尔,男孩们。标准化过程是美丽的还是痛苦的?在那些早期日子里,你作为世界的设计者。这是痛苦的,因为它很仓促。Guy Steele 是 Sun 贡献的。所以,比 Sean 更重要的是,你有一个巨大的大脑,Guy Steele 帮助带来了 Scheme 的一些魔力。他甚至带来了 Richard Gabriel 来玩。Richard 写了标准的第四条,这是一篇关于 JavaScript 是什么的文章。所以,我们有一些非常优秀的人,我们没有争吵太多。有一些紧张,我正在修复错误,我迟到了一个会议。Sean Katzenberger,微软,实际上很生气,说:“他人在哪里?我们需要他。” 当我到那里时,我看到他只是在规范的某个地方看到了一个偏移一的错误。然后我也看到了,我说:“那里有一个栅栏柱错误。” 然后我们对视一眼,意识到我们在同一页上。他不再生气了。哪些功能被争论、辩论和思考?主要是写下有效的东西,以及我们认为应该有效的东西,在不兼容或看起来错误的地方。但我们已经在为未来的版本奠定基础,我已经在实施了。我仍然试图通过利用主导的市场力量来编写实际发布的实际代码来引领标准。所以,事实上的标准将引领法定标准。我正在加入我没有时间在 10 天内完成的缺失的函数形式。这是工程思维与理论家思维的对比。你不想创造完美的语言,而是想要一种流行的、已发布的语言,以及所有这些。你可以说我站在巨人的肩膀上。这是一个分阶段的过程,我不得不推迟其他语言中其他人设计的优秀的东西。我可以模仿,但我不能在 10 天内完成所有事情。所以它们出现在 1996 年和 1997 年,并进入了标准的第三版,该版本最终于 1999 年定稿。但那时 Netscape 已被卖给了 AOL,考虑到这是一个不错的退出。而且,之前已经被无情地摧毁了。Netscape 正在出售浏览器以及它在 IPO 后收购的服务器软件。而微软则在降价。所以,没有办法与之竞争。微软还将 Internet Explorer 设置为 Windows 中的默认浏览器,这在反垄断法中被称为捆绑。他们还在做更残酷的事情。有一位著名的投资者,他在 Google 上做得很好,所以他是个亿万富翁,Ram Sri Ram。他是 Netscape 的销售人员或销售主管。他挂完电话后,脸色苍白,因为 Compaq 打来电话说:“微软告诉我们,如果我们把 Netscape 作为默认浏览器发布,他们就会撤销我们的 Windows 许可证。” 哇。所以,有一些欺凌行为。在反垄断案中,这确实是实质性的。但是,JavaScript 逃脱了,进入了标准制定,在那里有相当好的合作。微软有一个非常厉害的人在那里,你知道 Guy Steele 曾经在那里工作过。而且,有一些很好的工作。但在反垄断案之后,以及 Netscape 逐渐解散到 AOL,并且没有真正快速发展之后,Mozilla 花了好几年时间才真正推出……标准冻结了。到 2003 年,尽管他们一直在琢磨高级版本,JavaScript 2。我把王国之钥交给了另一位麻省理工学院的毕业生,Baltimore Horowat。他是个大脑袋,现在还在 Google。他赢得了 86 年的普特南奖,所以他是个数学家。他设计了继任语言 JavaScript 2。但它只以变异的形式出现在微软的 ASP.NET 服务器端,并且在那里没有持续下去。它出现在 Flash 中,那就是 ActionScript 3,ActionScript 很有趣。然后,Flash 当然衰落了。那么,我们是如何达到 ES6 的呢?就像有这么多人,每个人都……好吧,JavaScript 的历史是,人们……就像在喝啤酒时抱怨 JavaScript 一样,每个人都喜欢憎恨它。就像结婚的人说:“婚姻太糟糕了”,他们只是想发泄一下,即使每个人都在使用这种语言。但是 ES6 已经变得……声名狼藉。它修复了主要的痛点。我认为它为语言添加了东西,并添加了 ES5 严格模式已经存在的东西,但将其隐式地放入类体和模块体中。这是一个巨大的飞跃,但它积累了一些我们与 Adobe 为我们希望的 ECMAScript 第四版所做的 ES4 设计,这些设计本应包含一些旧的 JavaScript 2 的想法,这些想法已经进入了 ActionScript 3。所以,当你看到家谱时,你会看到这些分支。主要的那些是进入 Adobe Flash(从 Macromedia 收购)的分支,以及进入微软堆栈服务器端的分支,后者已经死亡。然后试图将它们带回标准,但没有完全成功。ES4 被搁置了,但所有人都喜欢的好部分都进入了 ES6。所以,那是一个成功。我之前说过,我记错了年份。我认为是 2015 年。所以,晚了四年。是的,是的。它在 2015 年定稿。比我们希望的要晚一点。因为 ES5 是 2009 年,比 ES3 有了小幅增长。我们再次跳过了 4。我们将其搁置了。委员会出现分裂,一些人说:“ES4 太大了,我们将致力于渐进式改进,特别是没有新语法。” 他们承诺的并非完全属实,但他们添加了许多有趣的 API。Alan Van Spröck,我的那篇论文的合著者,当时在微软。我最终雇佣了他,他想去 Mozilla,继续做 JavaScript 标准(ECMAScript)的编辑工作。当我们完成 ES6 时,它有点晚了,2015 年。我们切换到了年号。所以人们仍然称它为 ES6。我称它为 ES6。但是,如果你还记得……晚了九年加两千。我的意思是,ESX 是一个如此巨大的工程。就像你说的,它们之间有一条线连接着。但是 ES6 是它成为一种语言的时候,它几乎感觉已经准备好完全占领世界了。我们正在进行大规模的编程,更多的功能。大型团队和软件工程所需的功能。微软也做了一些聪明的事情。他们,Anderson 公司,Luke Hoban,也离开了微软,也做了 TypeScript。他们意识到,我认为 Gilad Brock 也推广了这一点,他参与了 Google 的 Dart。如果你不担心类型系统的健全性,你不试图在运行时强制执行类型检查,特别是,只将其用作一种警告系统,一种工具时间类型系统。你仍然可以为开发者带来很多价值,尤其是在大型项目中。所以 TypeScript 对微软来说是一个巨大的成功。你怎么看待类型?你怎么看待 TypeScript?它是在增加混乱,还是最终有益?我认为它现在是有益的。它在技术上是 JavaScript 的超集。所以,当然我喜欢它。最短的 JavaScript 程序仍然是一个 TypeScript 程序。任何 JavaScript 程序都是一个 TypeScript 程序。这很棒,因为然后你可以开始逐步添加类型注解,获得警告,是的,学习如何使用它们。微软不得不绕过标准机构,猜测他们的模块或装饰器版本应该如何工作。然后标准机构可能会改变一些东西。所以我认为他们有义务用 TypeScript 来处理他们自己的版本,或者随着时间的推移,通过不兼容的更改将其带回标准。我认为他们总体上做得公平。有些人认为,为什么他们不标准化 TypeScript?他们已经明确表示不希望这样做。他们拥有专有的投资,它很有价值,他们控制了局面。从某些方面来说,你可以对标准机构中的任何其他大公司说同样的话。为什么 Google 不标准化他们的东西?所以,你认为它会继续成为 JavaScript 的一种舞伴,基础 JavaScript?人们希望,如果他们不断地重新收敛,并且标准不会破坏他们,并且朝着一个好的方向发展,那么我们至少会得到类型注解的语法以及围绕它们的某些语义。因为当你谈论类型注解时,它们通常在参数和返回值以及变量声明上。有类型转换运算符。你希望语法是保留的,并且希望它在所有引擎中都一样。这就是像 Go 的可插拔类型系统这样的想法可能很有用,尽管那样你可能会遇到与 Lisp 和 Scheme 相同的问题,那里有一堆宏库,它们不一致,并且它们之间存在冲突。但是,可插拔类型系统可能是标准化这一问题的一种方式。你怎么看待 JavaScript 框架的庞大生态系统?感觉是因为,我的意思是,这是有多少人使用 JavaScript 的一个副作用。是的,很多创业精神,创造自己的 JavaScript 框架,它们实际上很棒,以它们各自的方式。这是一个关于生物系统和进化等等的哲学问题。你认为这是好事吗?还是应该让其中一些更快地消失?我认为也许现在应该如此。jQuery 是一个非常聪明的库,John Resig 编写了这个库,它有点像查询和执行,并将 CSS 选择器语法与 JavaScript 对象图或 DOM 查询混合在一起,使人们非常容易地完成事情。几乎就像他们正在学习 jQuery 作为自己的语言一样,一种领域特定语言。我认为这在一定程度上反映了使用文档对象模型(DOM)的难度。这些 API 最初是在 90 年代为 Java 和 JavaScript 设计的。它们非常面向对象,甚至过程化。它们非常冗长,需要调用构造函数,进行三次不同的……笨拙的舞蹈才能完成某件事。而在 jQuery 中,只需一行代码。所以,这最终反馈到了标准中。它并没有意味着我们标准化了 jQuery,它并没有那么简洁。但你现在发现,通过我们正在处理的 HTML5 的现代标准,事情变得更简单了。Fetch API 和 Query Selector API,document.querySelector。现在很多事情都可以用原始 JavaScript 完成,而用 jQuery 会更简洁、更简短。但这并不坏,它相当好。而在 15 年前的旧 DOM 中,它太冗长了。所以,也许框架的诞生是因为 JavaScript 缺乏 jQuery 的一些功能。所以,就像,现在 JavaScript 正在吞噬 jQuery 当时所做的事情,框架只会是那些真正有价值的框架会留下来,其他的会消失。这也突显了核心语言 JavaScript 之间的区别,它可以出现在 Node.js 等服务器端以及浏览器特定的 API 或文档对象模型 API 中。文档对象模型 API 甚至由 W3C 管理,也就是我们在进行真正的 JavaScript 标准制定时,在 ECMA 中处于 XML 拉拉之地那个标准机构。你有一个劳动分工、责任分工以及风格和美学的划分,还有速度。所以,文档对象模型在微软有点退出 Web 之后就停滞不前了。微软在匆忙中做了一些事情,本着 Netscape 快速行事并抢先一步的精神,他们称之为 DHTML。他们的一些创新,比如一个替代的文档对象模型,直到 HTML5 才真正标准化,当时我们这些务实主义者,比如 Opera,当时 Ian Hickson 去 Google,Apple 和 Mozilla 说:“好吧,XML 不会取代 HTML。HTML4 太老了。让我们基于所有这些好东西来标准化 HTML5,包括那个 DHTML 变体。” 动态 HTML5。在我看来,也许你可以纠正我,这就像一件漂亮的设计作品。这并不常见,对于 Web 方面的东西,你拥有如此广泛的……哦,做这件事的人,他们修复了吗?这感觉很好。你对 HTML 有什么看法?我是不是太浪漫了?有点,有点。它有根本性的缺陷吗?我不知道的?我的老朋友 Hicksy 做得很棒。他是一名叛逆的物理学学生。他基本上是 Opera 的 QA 人员,但显然他受过物理学训练。并且是一个能写出英国人的人。他开发了测试套件,并开始更公理化地思考它们。这可能是好的,因为你可以系统化,使 HTML 更好。或者你可能会陷入实用主义,说:“我们必须处理这些边缘情况,所以我们只会有一个测试矩阵。如果矩阵很大,很多人会觉得它不漂亮。” 每个人都喜欢沿着他们喜欢的维度最小化,就像 Scheme 中的七个特殊形式,或者其他什么。但现实是,HTML 需要庞大。它有点象征性,它是一种创造性的多范式。Hicksy 做得很棒,我想说,还有很多。其他人也秉承 Ian Hickson 的精神来做 HTML5 工作,并且他们继续了这项工作。所以,这是实用主义的结合,过去的实际标准被某种程度地结合或首次写下来,然后以更简单的语法重新思考,比如 Fetch API 而不是 XMLHttpRequest。视频也是如此。最终,我觉得也许你可以纠正我,这似乎是 Flash 的丧钟。史蒂夫·乔布斯说 iPhone 上没有 Flash,在我看来,这是致命一击。但是,我也不确定你想用什么比喻。Flash 直到今年或者去年才像个僵尸一样?我想去年 Flash 在主流浏览器中结束了。但是乔布斯确实给了致命一击。是的,我们必须让 HTML5 具有竞争力。我仍然认为我们没有得到那个漂亮的动画时间线。你喜欢那个时间线。我从……我过去在 Flash 中制作各种动画。还有编程元素。是的,有点。我不知道你是否能评论一下,但对我来说,它有点像 GOTO 语句,有点太混乱了。它没有……作为一个程序员,我那种强迫症的部分并不满意 Flash。感觉是动画过程中引入了一些我无法轻易调试的错误。我听说过。我没用过,所以我在做“绿草在隔壁”的事情。我喜欢动画模型的是,它是时间的不可变函数。所以你可以时间扭曲,你可以,如果你躲过了这些错误,或者小心地工作,你可以让它真正地闪耀,以一种我认为仍然有点挑战的方式,使用 Web 动画标准,或者只是使用原始 Canvas 和 WebGL。但是现在有这么多工具,也许这并不重要。而且,我们必须做视频,我们必须做 WebGL,然后对其进行演变。我们必须做 Web 音频。但是一旦我们做了所有这些有助于 Flash 灭亡的事情,感谢 Steve Jobs,我们有了一些人们没有意识到的东西。我们有那个愿景,马克和杰森有。这个图形能力到金属的便携式运行时。我们在 Mozilla 意识到这一点。我们看到 JavaScript 是可以编译的东西。Adobe 在 Adobe 实验室也有人在做这个。他有一个叫做 Alchemy 的项目。我们有一个现在在 Google 的 Alon Zakai,他做了自己的基于 LLVM 的编译器,它会接收 C 或 C++,然后发出 JavaScript。你会认为这很疯狂。你从这种机器类型,低级,受控内存分配语言,变成这种垃圾回收的,动态类型的,高级的,更高级的语言。但是 Alon 只是从现象上找到了在 JavaScript 中快速的形态。然后,与 Dave Herman(我从东北大学招募的,他是一名类型理论家)和 Luke Wagner(他仍然在 Mozilla,是编译器和 JIT 的人)一起,他们想出了如何将 Alon 所做的编码成一种称为 asm.js 的 JavaScript 类型子集。这是一个奇怪的想法,因为它没有新的语法。类型是出现在控制流图的支配者位置的类型转换。所以,它有点像 JavaScript 的一个技巧,它是一个子集。它使用我之前提到的从 Java 复制过来的按位运算符,将数值类型(双精度浮点数)转换为整数。所以在 JavaScript 内部,在内核语义中是整数。如果你使用这些运算符,如果编译器在正确的位置发出它们,你就可以将它们视为类型值,类型内存位置。你可以对你的程序进行类型检查。你不仅可以进行类型检查,还可以编译它。这一切都是在线性时间内完成的。哦,你可以编译它以获得确定性的性能。它不接触垃圾回收器。它调用许多来自你正在编译的 C 函数或 C++ 代码的函数。你可以让 Epic Unreal Engine 以每秒 30 帧的速度运行。是的,当我们 2013 年秋天这样做时,蒂姆·斯威尼,我遇到了……他认为不可能这么快完成。我认为需要几年时间。团队去了 Epic 的罗利总部,四天内就移植了 Unreal Engine,只需按一下编译按钮。他们做到了。但他们必须有 WebGL,它来自 OpenGL ES,来自 OpenGL,来自 Silicon Graphics GL。他们必须有 Web 音频,这样他们就可以将 OpenAL(另一个音频库标准)映射到 Web 音频,这有点像 Chrome 的特有东西。但是他们可以使其工作。他们必须有 asm.js 来快速进行 C++ 到 JavaScript 的转换。而且,如果你没有那个快速编译器步骤,你手动编写的用于 Unreal 游戏的 JavaScript 会太大太慢。它会接触垃圾回收器,它无法跟上硬件 2013 年硬件的每秒 30 帧。所以,我们在……这是 2012 年秋天,现在想想,因为我们在 2013 年 GDC(游戏开发者大会)上演示了它。人们惊呆了。就像 Unreal Engine,Unreal Tournament 在我的浏览器窗口中运行。没有插件,没有 Flash,没有 Java。那么,早期……JavaScript 现在基本上可以与许多 C++ 相媲美。是的,甚至在那之前,在 2008 年 Chrome 发布之前不久,Mozilla 的我的朋友 Andreas Gal 和我,以及其他人,我们捣鼓出了 TraceMonkey,我们的基于跟踪的 JIT。Apple 的 SquirrelFish Extreme 团队做了他们的 JIT。我们都在这些疯狂的性能基准上竞争。基准测试有点过于调优了。但是 JavaScript 开始变得快速,开发者也开始注意到它。但它仍然是一种高级语言,带有垃圾回收。asm.js 步骤帮助我们走得更远。直到我们真正证明了概念,人们仍然说:“好吧,JavaScript 还可以,它正在变得更快,这要归功于 V8。每个人都感谢 Google,尤其是 Google。但是我们需要一些东西来杀死 Flash。让我们使用 Google 收购的便携式本地客户端代码,Native Client。这是一个独立的谱系。我们基本上是在获取 C 代码,将其编译成某种软件容错隔离容器,使用某种虚拟化技术。它甚至可能在进程内,并且仍然是内存安全的。那将是太棒了。但他们最终也使用了进程隔离,这削弱了它。最终,它就像便携式本地客户端,好吧,你知道,新老板和旧老板一样。这是 Google 的 Flash,是的。但是,当我们做了 asm.js,我们展示了 Unreal Engine 的工作,我认为 Google 放弃只是时间问题。事实上,2015 年春天,每个人都同意,我们将采用 asm.js 证明的概念,并创建一个新的二进制语法,它高效,并且可以加载到与 JavaScript 加载到同一个 JavaScript VM 中。所以,将有两个源语言,一个 VM,一个垃圾回收器,一个内存管理器,一套编译器阶段。这叫做 WebAssembly。它是 asm.js 的继承者。重要的是它具有二进制语法,因为归根结底,尤其是在移动设备上,如果你下载 JavaScript,即使你在网络上使用了 LZ 压缩,这很酷,但你必须将其解压到内存中,然后解析我当初选择的那个愚蠢的八个字符的函数关键字,而我本可以使用更短的。我选择它是为了 awk,Unix 工具。所以,总之,我没有跟上。我想跟上,但我没有。你对 JavaScript 现在如此之快感到惊讶吗?我的意思是,你经历了整个过程。是的,我一步一步地都知道。但是,它……它感觉难以置信。是的,但我想,有趣的是,计算机科学是一个巨大的业力之轮,命运之轮。在 97 年,Netscape 借调我为 Sun 收购 Anamorphic 进行尽职调查。Anamorphic 是 David Unger 和朋友们,Craig,我忘了他的名字,他去了微软。这些斯坦福语言爱好者,他们接受了 Smalltalk,然后 David 创建了 Self,一种更简单的 Smalltalk 语言,并为它们制作了非常快速的即时编译 VM。他们比 Java HotSpot 或 JavaScript V8 或任何这些现代 VM 都领先一步,他们弄清楚了如何让动态代码快速运行,因为 Smalltalk 是一种动态语言。它有类,它有比 JavaScript 更严格的声明性语法,但它本质上是动态的。你没有声明类型,但你可以在程序运行时添加类型。你开始形成关于哪些类型实际上流经关键操作的想法。你形成所谓的“多态内联缓存”,它们是优化的机器代码。缓存机器代码,假设它进行快速检查以确保类型正确。如果类型不正确,它会回退到解释器。如果类型正确,你就会非常快。那个简短的测试是一个预测分支。所以,事情进展得相当快。所有那些惊人的事情,我知道在 90 年代,我没有时间去做。Anamorphic 被 Sun 收购了,他们做了 HotSpot。你甚至在 Java 中也需要它,因为在规模上,Java 由于 invokeinterface 具有一些动态方面。你可以拥有 Java 代码的集合,你不知道在编译每个模块或包时,具体调用的是什么,调用的是接口的哪个子类或实现。所以,你想使用这种动态多态缓存来优化。他们也这样做了,HotSpot 是一个惊人的野兽。我见过大约 13 个人都声称是他们创造的。我认为其中一个人可能比其他人更值得赞扬。但我没有在 JavaScript 中做到这一点。当我们知道 Google 将要推出自己的浏览器时(我们在 Mozilla 大约在 2006 年就知道这一点),我还遇到了 V8 团队。事实证明,Lars Bach 是 Anamorphic 被 Sun 收购的年轻工程师之一。所以,Lars 是这些虚拟机方面的世界专家。他向我询问 JavaScript。我能感觉到他当时不喜欢它,但他不得不这样做。哦,真的很有趣。是的,2006 年在 Google 的校园里吃午饭。然后我有一个朋友在 Chrome 担任开发人员,他说:“是的,我们不知道他们在做什么。这正在进行中。” 2007 年秋天,快到 2008 年了。我们正试图推出 Chrome,我们不知道 V8 团队的情况。他们经常……丹麦人?他们四次重写他们的引擎,这很好,这是这种开发方式。他们正在学习 JavaScript,包括它所有的怪癖,他们开始憎恨它。一千个太阳的火焰,这也是 Lars 和公司开发 Dart 的原因之一,他们自己的语言。但他们也让语言变得快速。与此同时,我们知道这一切正在发生。所以,我们与 TraceMonkey,我们的跟踪 JIT 在 Mozilla 团结起来。我认为 Apple 也意识到了。所以,他们也在做自己的。所以,2008 年的 JIT 快速 JavaScript 时代有着可以追溯到 Smalltalk 本身和 Anamorphic 的历史。而且,谱系很有趣,因为你有 Lars 和 Anamorphic,然后他最终去了 Google。是的。今天,我们有一种极其快速的语言,就像你说的,仍然……没有憎恨,就没有爱。所以,我认为在这段丰富而复杂的 JavaScript 历史舞蹈中,既有爱也有恨。当然有辩证法。今天,JavaScript 是世界上最流行的语言。是的,根据许多衡量标准。你认为这是为什么?是因为你已经谈到过的一些基本思想,更广泛地说,你认为它是世界上最流行的语言吗?我认为,通过实现头等函数,并采用 C 运算符层级的优点,并保持足够简单,也许可以更简单,但我不得不让它看起来像 Java 并与 Java 互操作。你知道,有……
固有的善良和亚里士多德的品质在那里,人们甚至能透过所有的怪癖和瑕疵感知到。然后随着时间的推移,与标准机构一起努力,不仅作为核心语言,还在 HTML5 的背景下,让浏览器更好,倾听开发者的声音。尼克·汤普森在 Hacker News 上对此写得很精彩,我感到非常荣幸。他说 Java 是那种专家编写代码,然后编译的东西,你必须声明所有类型,而且有些人并不真正关心,你知道的,那些想构建真正的 Web 应用、动态事物的普通程序员。而我当时就在其中,你知道的,做了很多人份的工作,让 JavaScript 在那些早期、岌岌可危的岁月里生存下来。当时 JavaScript 被认为是米老鼠语言,是用来做一些烦人的事情的,比如浏览器底部状态栏的滚动文本。但我一直在倾听开发者的声音,与他们一起工作,并试图让它在那个单线程事件循环中以一种有用的方式运行。我认为这锻造了一些人们现在喜爱的东西。
你并不总是喜欢,你知道的,最好的东西,对吧?我谈到了莎士比亚的十四行诗,关于“嗯,我的尺寸,或者不如太阳”,或者你知道的,乔什·韦登电影《宁静号》结尾的那个场景,实际的乐曲和由大卫·纽曼创作的配乐叫做“爱”,在那里,马尔船长正在教瑞弗·塔姆如何驾驶飞船,她是一个超级天才、超级士兵,她已经知道怎么做了。而他,他基本上在谈论你必须爱这艘船,因为如果你不爱它,它就会杀了你。然后那块东西从船上掉了下来。这有点像 JavaScript,是吧?我爱它。是的,他们爱它,因为现在人们说我们被它困住了,因为它有了这个优先权。但那背后有爱,而且实际上,倾听开发者,这有点美妙。
在这个世界上,大多数成功的产品,无论有多少混乱,有多少缺陷,也许缺陷本身就是实际的功能。但那是关于爱的另一个话题,那是关于爱的讨论。但在它之下,有一些东西就是能与人们产生共鸣,而且它必须继续产生共鸣。如果 JavaScript 走偏了,人们有时会抱怨 ES6。“哦,你在 JavaScript 里加入了类,我讨厌类,你毁了它。”但事实并非如此。它是一种动态语言,Smalltalk 有类,Python 有类,有很多 Lisp 变体有类系统,评论列表。所以,你知道的,那些不基于某种时尚判断而拒绝它的人,确实在使用它,并且确实与标准机构互动。标准机构主要是竞争性的浏览器供应商,但现在也有大量使用 JavaScript 的大公司,比如 PayPal 和其他类似的公司,Salesforce。他们必须迎合 Web 开发者,他们必须雇佣懂 JavaScript 的开发者,他们必须让他们的引擎保持在最新标准。这围绕 JavaScript 创造了所有这些不寻常的社会结构。我的意思是,你会看到 C++ 的爱好者们关注 C++ 的内部运作,你知道的,C++ 现在是什么?21 还是什么?我不知道,我跟不上进度了,但那是一个更稀有的群体,更像是老派语言,你知道的,白发苍苍。而 JavaScript 是一个更年轻、更有活力的大群体。它有一种社区感。也许有一些回响,我不想画太多相似之处,也许你可以评论一下。C++ 就像华尔街,而 JavaScript 就像最近事件中的 Wall Street Bets。就像有一个混乱的群体,而那个分散的人群中也存在一些力量。它更具民主性,更贴近人民。它允许人们进入,而无需这些凭证。我记得在 90 年代末到 90 年代,人们都在获得 Java 凭证,我认识一些人,朋友们认识一些人,他们成为了 Java 程序员,你知道他们真的应该成为自然向导或飞行员,他们讨厌编程,但他们认为我必须赚钱,我要成为一名 Java 程序员。
你有没有一些,因为这是我们当前历史上的一个里程碑式的时刻,作为一个快速的题外话,你对这些巨大的、分散的、众包的金融事件有什么看法,比如 Wall Street Bets?就像没有人能够,好吧,你可以预测,但这种独立方涌现行为的规模和影响,就像我说的,我自己在经济学这个“令人沮丧的科学”方面的经验,让我拒绝了许多糟糕的模型。你知道的,经济学总是被政治、政治经济学所妥协。你也可以争辩说,它曾经是道德哲学的一个分支,所以它关注的是“善”,然后它就脱离了,并以一种近乎牛顿的方式,只是关于一切都在自行运转,别担心。你知道的,这并不是压垮你的 Netscape 公司,但这只是自然。而经济学无法,或者说没有好的模型来解释 Wall Street Bets 的 subreddit。你知道的,他们知道如何“挤压空头”。所以,令人惊叹的是,你有 Robinhood 应用,它再次被认为是为大众服务的,是的,并通过各种“跨式套利”或某种价差操作消除了费用,这帮助他们消除了费用,或者承担了费用。事实上,你知道的,作为当今的经纪人,因为结算需要两天时间,存在对手方风险,正如他们所发现的那样。所以 Wall Street Bets 的人们,你知道的,那些表情包就像终结者机器人,拿着 600 美元的刺激支票,而对冲基金,那个躲在桌子下面的动漫小女孩。有一个问题,我在最近的播客中谈到了,我意识到的,来自 Web 的历史,那就是你可以说它是垄断,在微软被使用了很长时间之后,反垄断法没有得到执行。而这很大程度上是由于金钱利益对政治人物的监视和控制。你知道的,在柏拉图的五种政体中,那就是寡头政治,那就是我们现在所处的境地。而现在我们看到了反对旧政体的斗争。我不知道它是否会奏效,但你肯定看到了。而且它也有点像黑客,是吧?它有一种黑客精神。嘿,Robinhood,没有费用。哦,有意思。嘿,你知道的,我能买下这个东西的一小部分股份,或者我可以用我的刺激支票继续购买。
所以,我提到了黑格尔看到拿破仑骑马。黑格尔也谈到了理性的狡猾,你知道的,上帝看到了历史的全貌,如果你相信上帝,或者你知道的,我们不知道未来,但总会有那么一点瑕疵,那个意想不到的后果,它会扰乱当权者最好的计划。而我们正经历着。我很高兴它不是,你知道的,街头战争或机械化战争,因为它过去曾经是。它更像是软实力,是的,而人们正在反击。
你认为可能吗?JavaScript 过去是 Web 的前端,现在越来越多地用于后端,比如运行幕后的一些东西。它也开始被大量用于像 TensorFlow.js 这样的东西,开始真正使用像神经网络、机器学习等重型应用程序,在浏览器中。在 10 年、20 年、30 年后,是否有可能基本上整个世界都运行在 JavaScript 上?这对一些人来说是一个反乌托邦的噩梦。当我,当我们做了 WebAssembly 时,我会开玩笑,用像《黑客帝国》中尼奥在豆荚中醒来的场景来嘲笑人们,他瘦弱、虚弱、没头发。你知道的,你意识到在未来,你生活在某种模拟中,而这一切都运行在 JavaScript 上,然后你就会永远尖叫。这是可能的。
加里·伯恩哈德会做一些有趣的演讲,他做了 WAT JS,然后他做了那个,JavaScript 的生与死,我想它的名字是,在那里他借鉴了一些巧妙的想法,这些想法实际上有一些可信度。但我提到了早期的软件容错隔离。当我们使用计算机时,我们说我们要使用 Unix 的单体监视器,它是特权程序。这甚至在你拥有硬件保护环之前。一些早期的 60 年代操作系统使用了硬件保护区,但 Unix 是特权的,运行用户代码的程序在一个进程中是被托管的,它是宿主中的客人,你可以暂停它,如果它崩溃了,你可以杀死它,它不会导致整个操作系统崩溃。这是一个绝妙的想法,但进入内核的调用很昂贵,所谓的系统调用。现在甚至已经为获取当前时间等事情进行了优化,所以它实际上并没有进入内核。与此同时,硬件架构和虚拟化技术朝着不同的方向发展,甚至到了你可以非常廉价地进行软件容错隔离,而无需进入操作系统内核。你有独角兽和外核,以及非常轻量级的虚拟机。所以加里采用了这个想法,并说 JavaScript 将接管计算,因为系统调用边界太昂贵了,所以一切都将以 JavaScript 结束,这些更轻量级的隔离执行机制。这并非完全不可信。
WebAssembly 也是。很高兴能向你寻求建议。有这么多人对开始学习编程、进入这个世界感兴趣。你有没有推荐人们学习的三到五门编程语言?或者也许是关于如何开始编程的更广泛的建议?
所以你问了机器学习,你知道的,JavaScript 是一种通用语言,而且它并不是,你知道的,在进行矩阵运算或并行编程方面非常出色。我想说,除非使用一些扩展或一些有魔力的库。所以,如果有人想学习,在 APL 系列中有一些很棒的语言,对于线性代数来说非常有用,这涉及到机器学习中的许多内核。所以 APL 有 J,然后有 K,以及它们的 K 变体,因为做 K 的人还在继续,而且它们是专有的,但他仍在那里创新。有,你知道的,Python 被使用了,所以人们谈论 Vlog JS,嗯,这并不令人惊讶,因为 Python 被大量用于机器学习,而 Python 一直是,你知道的,它们没有这种快速的即时编译器传统。有一些项目尝试过,其中一些很有趣。PyPI 很有趣,但是,Python 的哲学是,哦,你需要更快地运行,写一个 C 插件,然后插入到 C 代码中。所以,我认为人们应该看看多种语言,因为它们是工具带中的不同工具。如果你想做监督学习或快速原型设计,你想要一种动态语言,你想把东西组合在一起看看什么有效。如果你想非常快速地深入底层,嗯,我是一个老派的 C 黑客,但我也曾是 Mozilla 的 Rust 的赞助执行官,而 Rust 现在已经逃离了它诞生的巢穴,被许多有基础的公司所采用。一些关键的核心团队成员现在在亚马逊和其他地方工作。所以看起来 Rust 已经达到了逃逸速度。而 Rust 是一种有趣的语言,因为我们的目标之一,我赞助它的原因之一是,我们都厌倦了看到由于 C 和 C++ 导致的远程代码执行漏洞。我们想知道是否可以通过类型和效果系统或所有权系统来实现一种安全属性。而 Rust 就有这个,而且这个所有权系统很有趣,因为它不仅仅提供了内存安全,还有一个免费的定理,一个双重的好处,可以防止数据竞争。所以 Rust 更适合底层编程,你限制你的不安全代码,在那里你确实需要不安全,并且你可以证明内存安全和避免竞态条件的某些事实。所以,我认为人们应该学习这些新语言。我认为 Go 是一种很棒的语言,我钦佩,你知道的,Unix 的人,那些做过它的人,Ken Thompson 参与了,Rob Pike 当然,Dave,他叫什么名字,还有其他人。Go 取得了巨大的成功,真的在服务器端,任何地方你需要,你知道的,大量的网络连接,而且它是垃圾回收的,但它也非常务实。它有那种 C 的味道。作为一个海外黑客,我无法习惯他们交换了类型和声明符的声明顺序。我没有用过 Rust,但这是目前最受尊敬和喜爱的语言之一。所以,是的,而且它仍然很年轻。你看看这些东西,JavaScript 现在被认为是老的了,它已经经历了如此多的版本,你可以重新爱上它。25 年以上,你知道的,它是一个成年人了,应该离家出走了,但它可能会再存在 25 年,不能排除。所以 Rust 会存在很长时间。你存在的时间越长,你就越有可能 Lindy,而且你身边有很多人问我,比如,我经常在推荐 Python 或 JavaScript 作为第一个玩弄的语言之间犹豫不决,因为,我的意思是,这很难,因为它很容易错误地使用 JavaScript,它现在更容易正确地使用它,或者,嗯,就像学习编程一样。但 JavaScript 的酷之处在于,你可以创造出让你微笑的东西,作为开发者,你可以创造出视觉上看起来像某种东西的东西,而且它会做事情,这让你感觉很好,让你爱上编程。用 Python 也可以做到,它慢一点。而用 C++ 编写一个真正起作用的程序需要五到十年。所以,就像 JavaScript 是正确的起点,还是 Python 是正确的起点之间存在这种张力。我一直在犹豫不决。
我的 Python,它来自 ABC 的血统,ABC 是荷兰的一种教学语言,它也是一种很好的教学语言。我认为它是一种很好的教学语言,而且它稍微更具限制性,如果你以一种 JavaScript 可能会让运行时运行的方式拼写错误,它会在 Python 的语法检查中被阻止。这对初学者来说很好。我认为一些人反对的那种随意性,比如刚学完 JavaScript 的人发推文说,“我可以取一个数字,然后索引它,得到一个未定义的值作为属性,为什么数字不是对象?”我解释了原因,因为,就像 Java 中一样,原始类型(不幸的是不是对象)可以被自动装箱或包装成对象。我在 Java 中使其成为隐式的,它是类型化的,你必须声明事物,你会得到类型错误。但 Java 中也有自动装箱或自动包装的情况,因为你已经声明了你想要它。在 JavaScript 中,它就是这样发生的。所以一旦我解释了,哦,哇,我明白了。但这也意味着你可以犯一个错误,你不会受到惩罚,你不会被发现,而且有一个未定义的值,你不知道它来自哪里。
我最近一直在阅读大量的军事历史,有一种方式可以描绘浏览器,互联网浏览器,通过其历史上的各种战争。我不知道这是否是一种有用的看待方式,但我们已经谈到了一些关于 Netscape 和 Internet Explorer 的早期情况。你能讲述一下 90 年代到今天的不同战争的故事吗?如果这是一种有趣的角度的话。
是的,我提到了微软,你知道的,它被判有罪,滥用了它的垄断地位,但到 IE4 时,他们有一个相当不错的团队。而 Netscape 不幸的是,我像是二楼,我认识所有一楼的人,那些前端的家伙,他们做了 JavaScript 事件连接等等。那个团队相当疲惫。我认为在上市后,高层管理人员想收购很多公司来与微软正面竞争。它没有成功,但收购很多公司通常是行不通的。我认为现代的,粗略地说,就像马克·扎克伯格采取的方法,就是让他们保持距离,让他们做自己的事情。而现在他正在拉拢 WhatsApp,人们正在逃离它,因为它与广告监控联系在一起。但你知道的,有一段时间,让它保持独立确实有效,因为你是为了它的价值而购买它,它是互补的,而且你没有去干扰它。在 Netscape 收购了很多公司时,他们有一些一楼的人或者创始人已经筋疲力尽了。他们有新人想轮流做浏览器,而他们并没有真正做过浏览器,也不理解它们。所以 Netscape 4 最初应该是 3,而且它太晚了,他们重新编号了。当我们发布 3 版本时,Jamie 和其他几个人在内置邮件程序中对 Secure MIME 的支持付出了额外的努力。而 SK4 很晚,而且最初只在 Windows 上。而微软确实开始做得更好了,就像他们所做的那样,他们复制,第一个版本是垃圾,第二个版本你开始感到威胁,第三个版本你可以看出会发生什么,第四个版本很好。而且还有好处,就像你说的,它作为默认浏览器出现。是的,而 Netscape 却搞砸了,而微软确实投入了一些优秀的人才,IE4 在 Windows 上很好,它很好,而且他们做了动态 HTML 的创新。Scott Isaacs,我老朋友,一个前会计,他用 BASIC 编程,后来成为了微软所谓的程序经理,这是一个相当高的职位。你可以走程序员或工程师路线,但你可以转到那里,然后领导很多设计和标准工作。所以 Scott Isaacs 放入了许多那些时髦的 DHTML API,它们与我所做的东西的味道不太一样。而且两者都不像后来那种冗长的、类似 Java 的、W3C 标准化的 DOM。但 IE4 相当不错。我记得我的朋友 Scott Furman 和我被 Scott Isaacs II 邀请,Gordon Bierly 在圣何塞,他们正在预览 IE4。这一定是在 1997 年。Scott 说,“是的,我们有了新的图形内容,我们正在做,我们有类似你们 Netscape 图层的东西,我们有 VML,矢量标记语言,你知道的,我们可以做虚拟现实。”Scott 和我互相看了一眼,说:“我们完蛋了。”微软开始全力以赴了。所以我不得不承认他们的功劳,即使他们滥用了他们的市场力量。也许,我应该不给他们招聘有才华的人的资源,但他们确实在 IE4 上做得很有说服力。真正糟糕的是浏览器战争的那个阶段以垄断告终。也许是由于反垄断案,也许是由于欧洲的监管,也许仅仅是因为微软不喜欢处理标准化,他们就让它烂掉了。他们就放弃了它。I555,I6 后来,但这些都没有得到很好的维护,它们有很多安全漏洞和文件,而且非常封闭和过时。即使它正在更新,它也只是奇怪的浏览器,比如在 Mozilla 和 Firefox 中添加了标签页,Opera 有一个标签页版本,而它们没有添加标签页。而且弹窗拦截,我一开始就应该做的。人们意识到,你可以告诉用户何时点击了某个东西,然后它在 JavaScript 中打开一个小窗口,你可以检查堆栈,看到点击的来源,这可能是可以的。而如果你只是加载一个脚本,它打开一个新窗口,那就是垃圾邮件技术,你应该阻止它。标签页是一个绝妙的创新,就像你说的,Opera 有它。但就像我记得我完全切换到 Firefox 的那一刻,我记得第一次在 Firefox 中使用标签页,一开始不喜欢它,前几分钟。然后,等等,你掌握了窍门。你掌握了窍门,你就明白了。
那个时间是什么时候?所以,因为,作为一个有抱负的网页设计师,我使用了表格,我们没有怎么提到布局或 CSS。还有网站外观和行为方式的变化,以及所有这些东西。CSS 最终,微软在 IE4 中拥抱了它,而 Netscape 并没有真正拥抱它,对吧?CSS 随着时间的推移成为了一种更好的标准,用于表格布局,这让你摆脱了使用所谓的间隔 GIF 的需要。间隔 GIF,对,图片。你会把它们放进表格来填充空间。你知道的,网络的排版能力已经变得更好了,但仍然不如 PDF,而且你无法进行高级排版。但它已经变得非常好了。即使是表格也在变得更好。如果你使用的是 Firefox,那应该是 2004 年,因为它在那年早些时候叫做 Firebird。五,不,是的,我认为不是三。我不记得了。它是 Firebird,它有标签页。我们一直都有标签页。所以,是的,Mozilla/浏览器在 2002 年变成了 Phoenix。有一个 BIOS 嵌入了 IE 的版本,他们说我们叫 Phoenix Technologies,你不能用 Phoenix。所以我们说好吧,我们叫它 Firebird。然后这个澳大利亚中心的开源数据库项目开始,就像真正的《疯狂的麦克斯》风格,对我们大喊大叫,说你不能用 Firebird。我不得不充当大使说,“好吧,我们要改名了,我们不相信你不应该用它,我们恨你。”然后我们把它改名为 Firefox,他们说,“啊,我们爱你。”然后我就再也没听说过他们了。但 Firefox 是一个聪明的名字。我们不得不考虑一些有特色的东西。我们想保持火焰的燃烧。结果发现有一种红熊猫,它是它的昵称。所以,这是第二套问题。第二款浏览器。
Firefox 是如何诞生的?Mozilla 是如何诞生的?那里也有一个很长的故事。所以 Netscape 被 AOL 收购了,正如我所说,这对很多人来说是一个相当不错的结局,因为否则 Netscape 就会破产,因为微软正在扼杀它的市场。没有办法为浏览器收费,Windows 自带 IE,IE4 相当不错,而 Netscape 4 并不那么好,它需要一段时间才能变得更好。但 Netscape 的高管说,“让我们做一个开源的逃生舱吧。”你知道的,就像《星球大战:新希望》中的炮手不会开火,因为上面没有生命体,它不是威胁。所以我们在 1998 年做了 Mozilla,起初它似乎只是给了世界一个开源浏览器。但要让人们在这个被四年来被 hack 过的“毛球”上工作,真的很困难。它也不能有加密模块,用于安全套接字层,或者现在称为传输层安全。那是电子弹药,我们不允许发布具有完整 1024 位密钥强度的。然而,有人,其中一位我碰巧之前在 SGI 遇到过,当时我去澳大利亚布里斯班进行销售支持工程旅行,Tim Hudson,以及 Eric Young,他们做了后来成为 OpenSSL 的东西,它叫做 SSL-EA-Y,以 Eric 的首字母命名。Tim 和 Eric 把他们的 OpenSSL 移出了 NSA 和商务部的管辖范围,并将它植入了 Mozilla 的代码中。这也许是我们在浏览器开源后的头几个月里完成的最好的 hack。我们还有其他问题。Netscape 内部的政治是由这些收购驱动的。那个搞砸了 Netscape 4 的收购也想继续做一个专有的邮件和群件程序,而不是 Jamie Zelinski 的邮件程序,那是 Netscape 2 和 3。他们把它从开源中排除。我们没有邮件程序,只有一个浏览器。我们不知道 AOL 会对我们做什么。事实证明,他们很长时间都没有干涉我们。但 Netscape 并不是 Mozilla 的最佳管理者。我们把 Mozilla 当作一艘没有法律实体的海盗船。所以我们大多数人在 Netscape 工作,在一个独立的组织下。起初,Netscape 的第一位工程经理 Tom Paquin 是 Mozilla 的创始经理。但他很快就离开了,他把我留在了代理经理的位置上,在我这里更像是方法派表演。这是我的第一次管理经历。然后,写了许可证的人,Mitchell Baker,她是 Netscape 的一名律师,她参与了开源许可证的决策和实际编写和构建这些许可证。那是 Mitchell 的工作,Netscape 公共许可证和真正的开放的 Mozilla 公共许可证。有两个,因为 Netscape 需要,由于一些未覆盖的代码,需要一些特殊的权利,但随着时间的推移,这种情况消失了。Mitchell 对 Mozilla 几乎感兴趣,她休完产假回来后说,“如果你愿意,我来当经理。”Jamie 和我说,“当然。”然后 Jamie 辞职了。他一年后辞职了,他说:“这没用,我很抱歉。”他表现得像是完全失败了,因为 Mozilla 没有重新启动浏览器市场。但它不可能做到,对吧?Netscape 还在发布基于旧代码的 Netscape 4 的变体。Mozilla 试图对代码做出反应,为开发者创造一个全新的领域。所以这是我的一个大目标,它不是一个技术目标,而是一个社会目标。人们想要一个更标准的浏览器,他们想要一个不再是四年前由研究生 hack 出来的“毛球”。所以我们说,“我们要创建一个模块化的代码库,我们要使用微软组件对象模型的一个变体或开源版本,作为引用计数和标准化 vtable,C++ 中的虚拟调用。我们要使用 JavaScript,我们要在这两者之间建立一个桥梁,这样你就可以像脚本化 Java 组件一样脚本化这些组件。我们要用一种用户界面标记语言创建一个可移植的前端,而不是表格,不是 HTML,而是自定义的菜单、下拉菜单和工具栏。而这被称为 ZUL,XML 用户界面语言。Netscape 的一些真正有才华的人实现了它,Dave Hyatt,他在 ZUL 中起到了关键作用,Chris Waterson,Joe Hewitt,Blake Ross,而 Blake 是一个实习生,他就像一个高中生实习生。在某个时候,我们在 Mozilla 世界中快速创新,而 Netscape 仍然陷入了这些收购带来的管理混乱中,而且它没有交付。每年他们都在想 AOL 是否会来砍掉高管的头,因为它没有做任何有用的事情。有人认为你应该把 Netscape 浏览器引擎放进 Windows AOL 客户端,那是拨号客户端,AOL 越来越多老龄化的用户正在使用。这从未发生过,它会是太大的改变。所以不清楚为什么 AOL 收购了 Netscape,但正如我所说,他们放任不管。但 Netscape 没有放任 Mozilla 不管。
所以,在 2001 年,Mitchell 打电话给我说,“我不再受雇了。”我说,“什么?你辞职了?”不,不,这不是我的选择。而且有一次裁员,也许是意外地或有意地,把 Mitchell 弄走了。但有趣的是,我们有一个开源项目,我们有很多工程师在我们这边。而且我们雇佣了 Mozilla 社区的顶尖人才,他们已经崛起,你知道的,他们进来时质量很高,他们了解代码,而且他们实际上比 Netscape 的平均或中等水平的招聘者要好。所以有趣的是,那个认为在裁员中摆脱了 Mitchell 的高管,在下周的 Mozilla 社区电话会议上,关于 Mozilla 和该做什么,Mitchell 在那里。所以这表明,如果你有一个项目,即使是付费员工也有足够的忠诚度,因为我们有外部人士贡献,有 Red Hat 和其他一些地方的人,但大多数黑客是由 Netscape 雇佣的,但当时很多人都来自社区,其他人也加入了社区,并想与之合作。这确实是 Netscape 中最弱的工程师,他们不喜欢 Mozilla,也不喜欢与更好的程序员竞争的熔炉。所以,如果项目足够好,它就会崛起,凤凰将从那里崛起。
这正是如此。所以我们有了这个 Mozilla 代码库,它正在变得更好。事实上,我认为在 2002 年的某个时候,当我们宣布 Mozilla 1.0 时,我设计了一个路线图,通过类似的六周、五周发布,就像我们现在所有的浏览器发布一样,Chrome 和 Firefox,Braves 三周。我们达到了一个可以说,“你知道吗,它不那么糟糕。”这是你想要发布的 1.0 版本,因为如果你再推迟打磨它,你就剥夺了他人使用的能力。所以,比如 Pro Engineer,机械 CAD 工具,嵌入了代码,嵌入了布局引擎,而 Mozilla 1.0 就像一个 Netscape 通信套件。那时我们已经让邮件人员重新整合了邮件和新闻,我们有一个 HTML 编辑器。它感觉像一个 90 年代的套件,感觉有点臃肿。而那些采用 Mozilla 开源并添加 Netscape 风味的人并没有发号施令。而且他们也有一点 AOL 的控制,他们说,“我们应该在工具栏上放 AOL 即时通讯的图标,我们应该放 ICQ,AOL 收购的其他消息。我们应该在工具栏上放 ICQ 的按钮。”很快,Netscape 就看起来像一个带有 Nascar 徽章的 Mozilla 版本。这也让 Mozilla 更受欢迎。然而,他们设法解雇或裁掉了领导者。而我们继续进行开源结构,Mitchell 仍然在进行项目级别的管理,而我在进行技术层面的管理。我们有一个受欢迎的套件,但我们想,“为什么不做成一个浏览器呢?因为它会更简单,它会做好一件事。即使那样,我们也可以通过扩展来精简它。”所以 Dave Hyatt 和 Blake Ross,那个高中生实习生,做了第一个版本,叫做 Mozilla/Browser。我们一小群人,Ian Hicks,Asa Dotzler,我,Joe Hewitt,Hyatt 和 Blake,我们都非常投入。而 Hyatt 是真正的高级黑客,他做了所有这些事情,比如通过用户界面标记语言实现的惊人的跨平台菜单。他知道如何进行标签浏览,他在 Mac OS 上原生实现它,当时是在 Camino 中,最初叫做 Chimera。他写了多个实现,我认为程序员应该这样做。就像 V8 团队在 Chrome 团队的那些缺失的年份里所做的那样。事实上,Dave 的妻子 Rebecca 告诉我一个故事,当他们在 UIUC,他们也是伊利诺伊大学的毕业研究生时,有一个作业,是学期末的编程作业。Dave 的朋友说,“我要去思考,我要设计,我要创造这个,你知道的,柏拉图式的完美程序形式,然后我要在截止日期前写出来。”而 Hyatt 只是去了那里,开始 hack。他写了一个版本,写了第二个版本,第三个版本。学期末到了,朋友做得不太好,它不完美,也没有写出来。我不确定那个故事对他来说是如何结束的。但 Dave 的版本是第五次迭代,很棒。所以他把所有标签浏览所需的东西都做到了。这在 Phoenix 中得到了很好的体现,我们称之为 Phoenix,而且不得不改名三次。你知道的,Blake 去斯坦福大学,成为了一个斯坦福学生,不能继续做。Dave Hyatt 于 2001 年去了苹果,他是 Safari 团队的创始成员之一。有趣。但他仍然在这里写关于标签浏览的博客。我想苹果公司在某个时候说,“是的,我们已经有了标签浏览。”是的,这是因为 Hyatt。这确实是他们的一个亮点。Don Melton,Safari 从一开始的工程经理,也曾在 Netscape 工作过。所以这是人才的流散。然而,Hyatt 仍然在写关于如何正确进行标签浏览的博客。在某个时候,苹果公司说,“别再写那个了,那是我们的专有标签技术。”你知道的,“不,不是,它在 Opera,而且我改进了它。”所以我们不得不替换人。我们雇佣了 Ben Goodyear,一个新西兰人,在 Netscape 工作,他成为了 Firefox 的负责人。而且我们还面临一个奇怪的情况,AOL 终于注意到 Netscape 像一个累赘。他们买下它,但没有任何特别的好处。即使是 AOL 的政治也像东海岸的政治一样糟糕。我记得去了两次,因为我是一名首席工程师,所以我们首席工程师被带出去在弗吉尼亚州达勒斯进行推销。而 AOL 的高层管理人员非常有东海岸风格。他们当时正在与时代华纳合并,这不会有好结果。所以有一年我们去了那里,我们都在做推销,那里有一些像市场营销人员一样的人物,其中一个戴着领带,他叫 Reggie。他们非常,你知道的,非你即我,他们就像,是什么,Stoneman's Metropolitan Film... Urban... 他们很有趣,而且有点没用,有点像预科生。然后第二年我们又去了,我说,“Reggie 呢?”“哦,Richie 不在了,因为时代华纳意识到合并也不符合他们的利益。”然后刀子就拔出来了。这些合并真的有效,对吧?这非常困难。你得到这些大公司,他们认为会有协同效应。那是 90 年代末的口号。而 AOL 和 Netscape 之间没有协同效应,时代华纳和 AOL 之间也没有协同效应。
AOL 真的奏效过吗?它有过像 Firefox 最终创造的那种火焰和兴奋吗?AOL 是做拨号服务的合适时机,它通过基本上在全国各地散发光盘来获得分发。他们击败了 CompuServe 和其他公司,Prodigy。然后 Web 出现了。所以你几乎就像一个孤立的大陆,就像我关注的一些进化生物学家嘲笑澳大利亚那些有趣的、大型的有袋类哺乳动物一样,它们有多么愚蠢。所以 AOL 就像澳大利亚,你随着时间的推移看到了它,因为它们一直在老化,而且它们正在使用 AOL 上网,而且它们真的无法使用 Web 浏览器。它变成了一个有价值的群体,因为它们仍然具有相对较高的社会经济地位,而且它们有孙子孙女。但它正在消失,它正在走向死亡。
在那个十年的末期,然后是 2010 年之后,Firefox 变得令人难以置信。我忘了 Chrome 是什么时候出来的,但 2008 年 9 月。但 Firefox 是性感的、酷的东西,代表了许多尖端技术和所有那些东西。它很棒。Tim O'Reilly 和 John Patel 举办了第一次 Web 2 会议,后来变得非常庞大,他们将其分开。但那是在 2004 年,就在 Firefox 出来的时候。Craigslist 很大,它正在扼杀报纸的分类广告收入。但当时有一种发酵,人们开始创建维基百科,Gmail 已经完成了,而且它是一个令人印象深刻的 Webmail。之前有 Hotmail 等,但 Gmail 从 Google 出来,非常令人印象深刻。还有 Google Maps。人们开始看到可以做什么。他们想,“如何拖动地图?你知道的,它是如何工作的?”这一切都是 JavaScript、图像和。所以 Gmail 是 2003 年的。所以,是的,它实际上很早就开始了。可能是 2002 年或 3 年。但当我们开始与 Google 和 Firefox 合作以获得搜索交易时,这是 Mozilla 的主要收入来源,现在仍然是。2004 年,Sergey Brin 的一位值得信赖的工程师,Fred Schneider,与我在 Mozilla 取得了联系,我们开始交谈。我们意识到搜索和浏览器是相互需要的。这确实是深刻的,这仍然是真的。这就是为什么许多搜索引擎都有自己的浏览器。
所以,以防万一人们不知道,浏览器的主要收入来源是默认搜索引擎。这真是令人难以置信,那是一个收入来源。这有点令人难过。它导致了捕获或杀死效应,你拥有自己的浏览器上的搜索引擎,而其他浏览器可能难以获得分发,就像我们之前讨论过的。
所以,你说你发现 Google 在某个时候(2006 年)也在开发自己的浏览器。你认为 Firefox 对比 Internet Explorer 是这场战争的一部分吗?还是 Firefox 对比 Chrome?
Firefox 并未完全促使微软重新集结。他们确实做了 IE7。我记得在一次从西雅图到雷德蒙德的标准会议(JavaScript 标准会议)回来的飞机上,我前面有一个微软的家伙。结果我妻子认识他,在她嫁给我之前。他是一个留着大胡子的壮汉,他说,“我们本应该在摇篮里就扼杀 Firefox。我们只需要添加弹窗拦截和标签页,我们就能让它变得有趣。扼杀 Firefox。”就像,“早该如此,本该如此,伙计。”我当时就在他后面听着。但他们没有。他们很慢,IE7 并不那么好。我认为真正让他们开始的是 Chrome。你知道的,我曾与 Larry Page 交谈过,大概在 2005 年。我记得我们正在谈论 Firefox 的关系,但他也在说,“Webkit 怎么样?”这是苹果公司对 Linux KDE 的旧 KHTML 引擎的那个版本,它也用于 Konqueror 浏览器。Apple 在 2005 年的时候,包括 Dave Hyatt,Matches T. Kovacic,我的一些朋友还在那里,他们说,“我们必须停止修补这个可怜的 KDE HTML 项目,我们应该创建一个像 Mozilla 一样的组织,Webkit.org。”现在它不是一个独立的非营利组织,它仍然是苹果公司,它是苹果公司控制的,但他们让他们的分支成为一等公民,让他们在那里工作和生活。这发生在 Chrome 之前。然后 Chrome,Larry Page 说,“Webkit 怎么样?”我说,“是的,很好。我有一些朋友在那里工作。如果你自己做浏览器,你可能会用它。为什么不做自己的浏览器?别担心 Firefox,你应该做自己的浏览器,你可以有自己的观点,它应该如何运作。”果然,他们做到了。
所以到 2006 年,我们知道他们一直在开发它。我的一些朋友,他们曾在 Netscape 工作过,做了最初的演示。演示并不像你想象的那样,它还没有快速的 JavaScript。那还在丹麦的农场里。它有标签页吗?它有标签页,因为那时所有浏览器都有标签页。而且它有我提到的软件容错隔离,是通过进程隔离实现的。所以理论上,每个标签页都有自己的操作系统进程。那么什么会让你崩溃呢?Webkit 有可能导致崩溃的 bug,但 Flash 当时仍然很强大。还记得所有那些餐馆网站吗?Flash 经常崩溃。所以,我听说的关于我朋友们(前 Netscape 人)在 Google 内部做的演示是“悲伤的标签页”。他们展示了 Chrome 的早期版本,那只是一个极其简陋的标签页浏览器。他们加载了一个有已知 Flash 漏洞的网站,然后突然 Flash 崩溃了。每个人都期望整个浏览器都会崩溃,但取而代之的是,你在标签页里得到了一个笑脸,你可以重新加载它,它又出现了。所以这是一个改进。这是一个真正的安全举措。它基于,你知道的,一家名为 GreenBorder 的公司,他们有一些非常聪明的人,Olfar Erlingston 我认为参与了,他们做了一些非常规的安全工作。但他们最终将其简化为这种进程隔离。而且它很好,而 Firefox 当时没有。所以我们仍然在努力解决安全漏洞。所以我们知道 Chrome 即将到来,但它花了两年时间才出来。而且当时我们仍然获得 Google 搜索收入,而且我们仍然将 Google 作为默认引擎。Firefox 还在增长。我认为 Firefox 一直增长到 2011 年。那时是它的顶峰。而且它开始下滑是因为 Chrome。Chrome 于 2008 年问世,它是一个意外泄露的漫画书,展示了其中一些工作的人,Lars Bak 在里面等等。它有点像软启动,因为他们没有大力宣传它,没有推动分发。但 Google 有理由担心分发,因为微软自 2007 年以来一直在做搜索引擎 Bing。事实上,当他们推出 Bing 时,Google 担心微软会直接将 Internet Explorer 或甚至 Windows 上的 Firefox 的默认浏览器从 Google 切换到 Bing。而微软当时我认为还没有准备好冒着反垄断的风险,即使他们已经睡着了。而且我认为 Bing 也还没有准备好。但以防万一发生这种情况,Sundar Pichai,他在这项工作中取得了非常好的发展,他负责获取分发协议。他获得了 Google 工具栏和 Google 桌面搜索的分发。还记得那些软件吗?它们就像桌面扩展,工具栏或操作系统扩展,用于进行桌面搜索,搜索你的本地文件,有点像 Mac OS Spotlight,对吧?不幸的是,它已经死了。而且有一些我们仍然怀念的功能没有进入 Chrome。但 Sundar 让 OEM 厂商捆绑了这些。然后他获得了足够多的交易,以至于到 2007 年或 8 年,Google 认为,嗯,如果微软做得最坏,并试图强制 Bing,我们可以通过那个存在点来干预并重置它。所以这对 Sundar 的职业生涯来说是好的,对 Google 来说也是好的。但这种情况从未发生。微软仍然,你知道的,很慢。而当他们看到 Chrome 出现时,他们就做了 IE9,然后他们说,“我们要有一个快速的 JavaScript 引擎,Chakra,Chakra Core。”他们做得不错。他们是另一个进程隔离的快速 JavaScript 浏览器,标签页浏览器。
所以听起来搜索引擎和浏览器之间存在着一种深刻的基本耦合,这使得整个事情变得复杂。
向上,显然 Firefox 没有一个搜索引擎,我的意思是,你是在和某个搜索引擎合作,是的,和雅虎或者,是的,和谷歌等等。他们尝试了雅虎,那很不幸,因为我认为,即使玛丽莎·梅耶尔谈论过它,她也从未成功过,也从未恢复过被裁掉的搜索团队。我相信卡罗尔·巴茨在雅虎任职时,卡罗尔说我必须摆脱三件昂贵的东西之一,我要摆脱搜索,那些研究人员去了谷歌和微软,雅虎搜索再也无法重组了。所以当 Firefox 在 2014 年 12 月中旬尝试将所有坚持默认设置的用户从谷歌切换到雅虎时,很多用户说我的 Firefox 怎么了,而另一些用户则没有立即注意到,但随着时间的推移,他们注意到了。因此,在接下来的一年里,雅虎的流量就消失了,尽管他们有义务,我理解,我没有内部消息,但这些信息已经泄露,丹尼·沙利文也写过关于搜索引擎林的事情,我认为这笔交易是固定支付给 Mozilla 的,所以 Mozilla 收到了一大笔钱,但流量却留不住,因为用户正在重置他们的默认设置。这表明了默认设置的重要性,但它们必须足够好,用户才不会覆盖它们。你知道,很多流行应用中的商业价值在于默认设置是什么,默认搜索是什么,但很多时候,就像你说的,如果有什么引人注目的东西也能击败默认设置,比如标签浏览等等。是的,这就是我们要谈论 Brave 浏览器的地方,感觉我们现在正处于第三阶段,有 Chrome、Firefox、Edge,我猜它叫这个名字,还有 Brave,这些似乎都是非常令人兴奋的,我不知道,创新的浏览器,它们都在互相模仿,吸收好的东西。再次出现进化,尤其是在跟踪保护方面,所以隐私是一个全球性的浪潮正在兴起。我喜欢称之为浪潮,因为它是一个庞大、有些混乱的结构,它不是一个单一的、好的东西,你不能说我为你花了三美元买隐私,我付了三美元买隐私。有些人认为 VPN 可以做到这一点,当它让他们失望时,他们会感到失望,但人们经常使用 VPN 来解锁地区视频或获取美国 Netflix。正是如此,但隐私不是一个单一的、好的东西,它很复杂,人们需要时间才能理解它,而且当他们被伤害时。但有一个精灵不会回到瓶子里了,人们已经受够了。苹果已经对此做出了回应,我认为苹果一直以来都在将 Safari 打造成一个更具隐私品牌形象的浏览器。我认为这可能是史蒂夫·乔布斯,Safari 比 Firefox 更早拥有隐私窗口和隐私标签。这些只是在不留下本地痕迹的意义上是私密的,如果你不想的话。事实证明,Safari 在关闭后仍然会保留它们,但规范模型是在关闭隐私窗口后不留下本地痕迹,不留下你访问过某个让你尴尬的网站或为某人购买礼物而你想保密的网站的痕迹。但仍然存在某种程度的跟踪,存在网络跟踪,网络隐私根本无法保证,因为你使用的是与公共窗口、非私有窗口相同的互联网和 ISP。但 Safari 早在很久以前就有了,它还有一个 cookie 阻止策略,这可能需要一点解释,如果你知道 cookie 是什么的话,它是在浏览器中存储的一小部分数据,由网站名称索引,而且它实际上只是网站的主名称,比如 bfa.com 或者 npr.org。每个网站都可以将一些信息存储在 cookie 中,每次浏览器联系它时,都会发送之前的版本,并在服务器的响应中更新 cookie。所以这是浏览器中一小部分存储的数据,网站可以不断更新它,它可以存储你登录凭据的加密版本以及时间戳,这样你就可以保持登录状态,而无需每次导航时都重新输入密码,如果没有 cookie,情况就会是这样。网络协议,尤其是在 90 年代,是所谓的无状态协议,所以你访问你的银行,你登录,你从登录确认页面到你的账户视图,如果没有 cookie,你每次输入时都要重新登录。所以这是 cookie 的一个很棒的功能。Lumon 确实是在 1994 年匆忙完成的,在我加入 Escape 之前,他确实是为了保存那种凭据而做的。但即使在那时,页面中也嵌入了图像元素,并且图像可能会从不同的服务器获取,该请求会携带可能为空的最后一个 cookie,并且响应会携带更新的 cookie。所以仅仅通过拥有图像和 cookie,你就有了跟踪,因为那个图像服务器可以提供一个一像素的图像,它们仍然在广告技术中使用“像素”这个词,而那个像素可以从同一个服务器提供,以不同的方式嵌入,具有不同的 URL 拼写,在《纽约时报》和 ESPN 上,当你从一个网站切换到另一个网站时,图像服务器可以告诉你,我没有你的 cookie,它最初是空的,我将为你分配用户编号 1234,我将在数据库中创建一个条目,顺便说一句,我总是获取我所在的 URL 的路径部分,即《纽约时报》,所以你是一个《纽约时报》的读者,然后你访问 ESPN,情况也是如此,数据库会更新,用户编号 1234 在数据库中索引到你的个人资料,你被跟踪了。这并非有意为之,当我进入 Netscape 时,已经太晚了。我认为 Lou 想做一些叫做“Twinkies”的东西,他试图解决几个问题,他想让它们更大,因为最初 cookie 有大小限制,我认为他想解决第三方问题,但工程师经理 Tom Pake 说不,没有 Twinkies,只有 cookie,我们完成了,你完成了,儿子。这就是很多事情的运作方式,这就是 JavaScript 在某种程度上被冻结,就像琥珀中的飞虫一样,因为那个粗糙的相等运算符是我因为早期采用者而造成的,而 cookie 则陷入了这种跟踪的危险。然后因为 JavaScript 就像图像一样,它们被嵌入到页面中,到了 Netscape 3,我让它工作了,你可以得到一个带有最后一个 cookie 值的请求,并且响应会更新它。这是一个跟踪机制,这就是为什么你现在甚至不需要图像来跟踪,你只需要使用脚本。所以整个跟踪经济就发展起来了,它依赖于 90 年代的这些意外事故,这些非预期的后果。它创造了一些世界上最富有的公司,对吧?我的意思是,社交媒体,我只得到了 T 恤,我只得到了这件破 T 恤。是的,我的意思是,这是世界现在面临的根本问题。他们正在看着社交媒体创造的东西,他们正在看着,世界正在照镜子,发现隐私实际上是一种“有就好”的东西,它实际上应该是我们与世界互动方式的基础,是我们工具的一部分。而这正是 Brave 浏览器发挥作用的地方,我想还有其他浏览器也在玩这个想法,但 Brave 走在了最前沿。所以也许你能描述一下 Brave 是什么?是的,它的关键原则是什么?什么坏了?Brave 试图修复什么?所以当我意识到这些意外,比如第三方 cookie、跟踪你的图像或脚本,或者那些现在可以隐形地做到这一点的 JavaScript,所有这些东西都不是故意的,而且 Firefox 支持阻止其中一些东西的扩展时,我想我们应该让浏览器默认阻止其中一些东西。这些都不是故意的,而且现在不安全了,它们在跟踪你,可能存在数据泄露、恶意软件分发、网络欺凌和心理战以及其他攻击。阻止那些东西,阻止那些 JavaScript。我,我是弗兰肯斯坦和他的怪物,但显然你去 Gmail,那里有一堆脚本来制作那个令人惊叹的 Web 客户端,那没关系,那是第一方 JavaScript。那么你如何区分第一方和第三方呢?这并不容易,这不仅仅是关于什么来自不同的服务器,因为很多发布商使用来自不相关域或明显不相关域的良性脚本。所以你最终必须开发一种人类和机器学习的实践来阻止,而在 Brave,我们从一开始就这么做了,并建立了一个研究团队来帮助推动和自动化它。我们意识到保护人们需要机器学习,大约在 2017 年春天,我也和我在苹果的朋友谈过,他们也在做他们称之为智能跟踪预防的东西,它使用浏览器中的本地机器学习。有趣的是,我们,伟大的头脑思考,我们当时正在使用 Safari 中从旧时代就有的第三方 cookie 阻止程序,并使其不再有大的漏洞,因为他们在 2003 年 Safari 发布时就说,我们将阻止那些来自你从未访问过的第三方嵌入元素的 cookie。所以,我将选择一个被卖给 AT&T 的广告公司,所以我没有不公平地针对任何人,appnexus.com。你有没有去过 appnexus.com?不,我从未去过那里,但我保证,10 年前,如果你使用 Firefox,你很可能有一个第三方 cookie,因为你在被他们跟踪,他们正在使用那个 cookie 来建立你的个人资料。在 Safari 中,只要用户从未访问过 app nexus,就不会设置那个 cookie,这在早期是一个真正的隐私举措,当 Jobs 还在世时,在 Safari 中。但它有一个漏洞,如果你确实访问了 app nexus,那么为什么第三方 cookie 可以呢?所以 app nexus 做了一些非常不好的事情,他们让他们的广告合作伙伴在实际的广告上加上一个小的脚本,你点击广告,在它到达你的登陆页面之前,会重定向到 app nexus,然后我们会重定向到登陆页面,通过这样做,他们设置了一个第一方 cookie,并且被列入了白名单。所以作为一个漏洞,他们利用了 Safari 中足够复杂的智能跟踪预防来抵消这一点,它还做了其他事情,而且自从他们这样做以来,它一直在发展,我们也一直在发展 Brave。所以当我提到机器学习和人工学习时,这里有一套真正的技术,它们必须应对令人着迷的问题,指纹识别,对吧?任何时候你在浏览器中有一点与网站相关的存储,如果坏人可以获得 32 个网站,每个网站都有一点存储,那就是 32 位,你可以打开或关闭位,你可以制作 40 亿个数字,你可以制作一个标识符。它有时被称为超级 cookie。有一些更弱的统计方法,它们被称为指纹识别。你必须阻止所有这些,而且你不仅要自动化,你还想在 Web 标准机构中工作,从一开始就默认地、设计地将隐私纳入其中,而不是事后添加,或者,你知道,疯狂地使用新的 Web API,添加更多的本地存储或指纹识别表面积。这也很艰难,因为你知道,标准机构中的新微软是谁?是谷歌,而且他们不倾向于隐私优先。他们想以自己的方式处理隐私,只有在,我想说,市场压力下,但随着苹果和 Brave 的引领,我们几乎无一例外地阻止了第三方 cookie。所以我们只是阻止了它们,这给了我们非常强的隐私优势,但这也意味着一些网站无法正常工作,嵌入的 YouTube 视频可能无法正常工作。所以我们正在以与苹果的 ITP 类似的方式进行调整,以阻止第三方 cookie,但要模拟一个看起来像工作正常的第三方 cookie,它基本上会尝试将每个网站及其第三方划分到自己的 cookie 罐中。明白了。所以,就像你说的,这是人类的微调问题,也是机器学习问题吗?所以人类学习,然后他们训练机器学习。但是,你知道,也许谷歌方面,包括谷歌,有数百万甚至数十亿美元可以从与 Brave 的方式作斗争中赚取。没错,这与我们开始的 2015 年相比是一个有趣的变化,当时我们开始,你知道,广告拦截扩展,adblock plus 是其中之一,它于 2006 年在 Firefox 上推出,我相信它在全球范围内已经达到了一定的使用水平,而像 UC Web、UC 浏览器在亚洲也有一些内置的广告拦截功能。所以 PageFair 是一家初创公司,他们衡量了广告拦截的采用情况,他们试图说,嘿,发布商,你网站的访问者中有 30% 使用广告拦截器,如果我们能以某种方式说服他们降低对你网站的广告拦截,这可能会带来 43% 的提升,对吧?而 3/7,嗯,这说起来容易做起来难,PageFair 和其他 SourcePoint 以及许多其他公司试图偷偷插入广告或哄骗用户允许广告出现,但并没有真正奏效。与此同时,广告拦截的采用仍在继续。Safari 中的智能跟踪预防(2017 年),Brave(2016 年至今)具有非常强的 cookie 阻止和其他保护措施。这不会消失。发布商过去常常对此大发雷 M,就像我们试图说我们可以帮助你,你正在与已经阻止你所有广告的用户打交道,我们可以尝试重新引入一些经济学来帮助你和用户。这导致了我们最初与比特币一起推出的基本注意力代币。我们可以成为你的朋友,不要只是将我们识别为广告拦截器,并将我们视为敌人。但在 2015 年或 16 年,就像啊,你是个广告拦截器,滚出去,我恨你。到了 2017 年或 18 年,就像有些事情正在发生,广告拦截并没有停止,我们都通过 AMP(加速移动页面)被拉到了谷歌的种植园,或者我们被谷歌的广告系统所摧毁,因为它占用了所有收入,或者它允许或我们使用的其他供应商允许广告欺诈,所以一个假的《纽约时报》通过一个机器人点击的广告获得了营销商的付款,而本应获得付款的真正的《纽约时报》却得不到。这种系统存在严重问题,而且这种欺诈是通过谷歌的广告交易所进行的,这是最大的交易所。谷歌从中收取费用。还有另一面,那就是恶意软件分发广告,虚假广告商将恶意软件载荷或漏洞利用工具加载器嵌入到 JavaScript 中,并将它们通过广告偷偷地放到真实的发布商页面上。广告交易所收取费用。现在我不是律师,我不会说这是敲诈勒索的先决条件,但为什么广告交易所会促进欺诈和恶意软件分发并收取费用?这不对。与仅仅战斗不同的是,Brave 最有趣的地方在于,它不像仅仅战斗并被视为广告拦截器,它提供了一个替代方案。这里有一个哲学思想,可能会改变互联网的性质,通过基本注意力代币。是的,也许什么是基本注意力代币 BAT?它是如何工作的?好的,我先讲故事,然后告诉你我是怎么来的。我意识到,在 Firefox 工作了很长时间,我们依赖于谷歌的搜索交易。我想,现在 Chrome 已经出来了,也许那会消失,然后他们会在某个时候说,你知道,Firefox,就像老黄狗一样,你从疯狗那里救了我,现在你必须射杀它。是的,你的工作完成了,悲伤但真实,再见。我们能做什么?我想 Mozilla 不知道该怎么办。这是我无法解决的问题,我认为他们也无法解决。但我想,为什么浏览器是这些大科技公司被动的仆人?为什么它是广告技术 JavaScript 的盲目运行时,包括来自谷歌的?为什么它不阻止一些东西?如果它阻止了一些东西,为什么它不能将用户、读者、粉丝与发布商、创作者、网站重新联系起来?为什么它不能帮助人们进行直接支付,甚至可能为放置在浏览器中的私有广告获得广告收入分成?所有的广告都放置在浏览器中。有些人认为服务器将广告绘制成某种,你知道,Flash 组合包或某种巨大的图像,然后所有东西都被发送下来。事实并非如此。你在网上看到的所有广告都是通过调用各种广告技术合作伙伴(包括谷歌)放置在你的浏览器中的。所以,如果你阻止了这些脚本,你就打破了品牌及其代理商与发布商之间的金钱流动。如果你想直接与用户重新连接,你的选择有限。用户通常不会注册 ACH 银行连接或信用卡。发布商也不会注册用户,除了订阅者,然后他们会向你收取过高的费用,因为他们希望你交叉补贴所有内容,并购买比你阅读的更多的内容。有多少人做得很好,像《纽约时报》和《华盛顿邮报》这样的大公司?但你作为用户要支付多少订阅费?这就是为什么像 Tony Hale 的 Scroll 这样的初创公司试图做一个便携式订阅系统。顺便说一句,只是一个小小的注意,即使是《纽约时报》也真的很烦人,订阅有多难,点击太多了,他们不让它变得容易。几年前我有一些朋友,我认为他们已经解决了这个问题,他们会为报纸付费,然后他们会上网,他们会为数字版支付额外费用,而且没有折扣,没有联系。是的,但发布商的技术水平不高,他们无法让你订阅,你不能有上千个订阅。所以很长一段时间以来,人们都在谈论微支付,有 Glendale 和 Netherlands,它们进入了美国但没有增长。我想,如果你只有一个浏览器,它通过阻止所有这些广告技术跟踪垃圾来保护你,它就可以提供一个选项,使用加密货币让你支持你喜欢的网站,甚至 YouTube 频道。所以用比特币进行原型开发,这意味着用户必须有能力做出贡献并愿意做出贡献。但它可以在比特币区块链上完成,而且可能相当有效,尽管在我们运行原型开发 2016 年到 2017 年期间,比特币非常拥挤,确认速度非常慢,而且费用非常高。而且很多用户不是比特币最大主义者,甚至不是有经验的用户,我们通过嵌入 Coinbase 的购买小部件来帮助他们,他们有收入可以购买,但很困难。就像,我每月买五美元,但费用是 4.50 美元,我最好批量购买。然后他们说,我不想拥有那么多比特币。所以这变成了一件痛苦的事情。而我关于私人广告向用户支付收入份额的真正想法,在这种加密货币系统中,尤其是在区块链上,是无法单独实现的。我们切换到以太坊,你可以有智能合约。比特币系统不是图灵完备的,所以你可以用脚本做的事情更有限,但你仍然可以做一些巧妙的事情,即使是比特币脚本。我们想做一个三方生态系统,我们想要用户、创作者或发布商和广告商。我们希望广告商像今天一样投入资金,但不是通过谷歌、AppNexus 和所有其他广告技术公司,因为那些公司会收取巨额费用。英国的《卫报》曾经做过一个月的实验,他们买了自己的广告空间,投入了一英镑,他们收到了 30 便士,70 便士流向了他们使用的中间商。哇,这与应用商店的做法相反,应用商店收取 30%,发布商获得 70%。所以很糟糕。在过去,超级站 TBS,媒体所有者会获得 85%。所以这些分成变得非常不平衡,中间的参与者,广告技术供应商,拿走了太多的钱,而且他们做得更糟,这已经引起了注意。他们允许的不仅仅是恶意软件供应商,还有广告欺诈方,他们欺骗发布商和点击诱饵商人,并窃取好网站的流量,因为一旦你在一个网站上识别出了一定的受众,Jason Calcan 告诉我关于他运行的网站的经验,我猜是 Engadget,一旦他开始使用一个广告合作伙伴,该合作伙伴在多个网站上共享他的受众信息,他就看到了他的竞争对手窃取了他所有的流量。然后更糟糕的是,那些费率便宜得多的点击诱饵网站窃取了所有流量,这促进了欺诈,促进了假新闻,以及各种问题。所以 Brave 会阻止它,然后我们让用户能够回馈。因为我们发明了基本注意力代币和以太坊,我们可以进行这种三方分割,我们可以给用户收入分成,如果他们想提取,他们可以。现在不幸的是,对我们和所有区块链来说,监管机构说我们将不得不知道你是谁。有财政部的 FinCEN 机构,有 OFAC(外国资产控制办公室),有联邦政府的其他监管机构,他们对洗钱和向奥萨马·本·拉登这样的人汇款等事情持非常负面的看法。所以合规性就开始了,甚至现在他们威胁说,对于纯粹的比特币发送到某个地址,如果你是 Coinbase,你将不得不知道谁是那个地址的拥有者,你将不得不了解涉及人员的真实身份。现在,通过 Coinbase 会员,你注册了,他们知道你,他们遵守法规,他们是受监管的货币服务业务。但是,如果有人使用他们自己的自我托管钱包,他们拥有硬件私钥,他们没有名字,并且想发送到那个地址,我们的联邦政府的朋友正在讨论要求在某个阈值下知道那是谁,所以一个不合理的阈值,不是那么大。是的,我不知道这会如何发展。我认为加密货币会留下来。我认为能够点对点发送而无需银行介入,无需巨额电汇费用和两天延迟以及所有这些废话的美妙之处在于它很美妙,我用过它,我喜欢它。但我们对加密货币很务实,我们意识到,任何像收入分成这样的事情,我们都无法在没有某种许可的情况下促进,而且需要知道用户是谁。所以我们的默认模式不知道用户是谁,而是将部分收入归因于用户的浏览器,并允许该浏览器将其引导回创作者。我们确实需要识别创作者。但随着事情的改进,而且谁知道会如何发展,应该有一天,这个完整的愿景可以在区块链上更充分地实现。但监管和当今区块链的实际情况,它们不是那么快,而且随着时间的推移不是匿名的,你随着时间的推移会进行指纹识别。我们通过浏览器做了一些这样的事情。所以基本注意力代币的一个想法是创建一个比单独的区块链更强大的混合系统。它是浏览器和区块链,而浏览器是这个受信任的端点软件,它是这个通用的应用程序,每个人都使用浏览器。屏幕越大,你越在浏览器中,你安装的 fat 客户端就越少。我在 macOS 上使用 Slack,它就像一个浏览器,它基于我们以前使用的 Electron 框架,而且它不太好。Brave 的一些人在 Brave 中使用 Slack,在浏览器中。是的,我经常使用它。我注意到在 iPad 上,我使用的应用程序更少。屏幕越小,你知道,浏览器被苹果和安卓都阉割了,而且它也可能更慢,或者没有正确的用户界面来处理安全限制的 API。但原则上,通过正确的权限设置,你可以让 Web 浏览器和任何应用程序一样好。你可以让它成为一个超级应用程序,这也是我们 Brave 的使命的一部分。所以我们想要那些被这些大科技公司通过跟踪和社交网络捕获的经济学。我们想为了你的安全而阻止它,然后让你选择一个更清洁的世界,在那里你保护你的数据在你的浏览器中,并且你可以从中获得价值。所以我们的广告系统是如何工作的?我提到它是私有的,但它是如何工作的?我们根本看不到你的数据。所有浏览器都是数据源的母体,你的历史记录,你在所有搜索引擎上的所有搜索。每个搜索引擎都能看到你发送给它的查询,但它看不到其他的。但浏览器可以看到所有这些。你可以选择加入的浏览器中的机器学习可以以一种非常完整的方式研究所有这些,并且做得比谷歌更好。谷歌拥有,你知道,来自收购 DoubleClick 的 cookie 和脚本,它拥有 YouTube,它拥有 Android,它拥有搜索,这仍然是它的大收入来源。但它看不到所有东西。浏览器看到所有东西。如果它能在本地做得很好,这不是高级机器学习,这不是 TensorFlow,这是像 SVM 和朴素贝叶斯。然后你可以匹配这些信号,来自数据源的意图信号,搜索,查询,历史记录,你向下滚动页面的程度,你重复搜索的次数。这是一个盲目的浏览器算法。我们看不到这些数据,然后从每天的固定目录中选择最佳广告。目录是固定的,覆盖了大量人群,每天一次。它只在一天更新一次,因为新的优惠进来,旧的过期,有时每周或每月一次。那个目录,可能有很多这样的目录,由我们的直销团队销售。所以我们向广告商提供匿名的受众,而广告商却无法跟踪他们。相反,每个浏览器都是一个小型机器学习系统,它正在从目录中选择最佳广告。目录不是广告,那些很大,对吧?它是视频或网页。它只是指向边缘缓存的链接。有许多这样的边缘缓存。我们不试图保护它们免受你的 IP 地址的侵害,这实际上是不可行的。我们可以使用 Tor,但我们还没有。以及一些关于广告的关键词。所以它基本上就像元数据和一个链接,这就是目录的组成部分,也是机器学习选择的内容。机器学习正在你自己的本地学习,以便从不同的广告目录中进行选择。这会不会可能是一个数十亿美元的,这是在挑战谷歌广告吗?所以,我的意思是,一个问题是,这里似乎有一些非常深刻的想法,与互联网的成长方式不同。如果 Brave 或类似 Brave 的想法,其根本的哲学思想在 Brave 背后获胜,并运行 95% 的互联网,这会如何改变互联网?所以社交网络和创作者,比如 YouTube 创作者等等。所以我们先来谈谈这个。首先,如果 Brave 占有 95%,我将要求重新计票,因为我不会相信。我不知道,我认为我们正在将事物纳入 Web 标准,这些标准可以在浏览器之间进行标准化。所以 Brave 的主要价值将是用户对我们的信任,以及我们为用户提供最佳交易的能力。所以我们给予用户 70% 的总广告收入。如果他们通过了 KYC 流程,我提到的,他们可以提取,他们也可以回馈。他们可以提取一部分,回馈一部分。他们可以添加基本注意力代币来回馈一部分。他们关闭了广告,因为他们就是不喜欢广告。但他们每月投入 20 美元。我认为 Zuko(Zcash 的创始人)就是这样做的,这非常慷慨,因为浏览器只是匿名地根据他的浏览习惯来记分,他在这个视频上花了多少时间,在那个网站上花了多少时间。如果那些网站以一种类似获取域名证书的方式进行验证,他们就可以获得报酬,他们可以获得他每月 20 美元的一部分。这个愿景可能会变得很大。如果它真的很大,我希望它能跨越多个浏览器。我不知道它们是否都会在广告质量、广告拦截和跟踪保护方面进行竞争。这些是竞争的对象。标准化它们需要一段时间,但我认为那将是一个更好的世界。它将具有更少的交易对手风险,更少的中间费用收取者,基本上只有浏览器。我们收取 30%,就像应用商店的分成一样。如果我们变得更大,我们甚至可以收取更少。社交网络,创作者。如果你看看 YouTube 用户,很多独立用户,那些有一定规模的,正在获得赞助交易。他们正在使用 Patreon,他们鼓励人们通过 Patreon 订阅并定期给他们钱。但那是中心化的,Patreon。所以有审查的风险,有 5% 的费用。如果那成为 Web 标准呢?如果 Brave 首先开创了它,我们收取 3%,并且我们以一种通过你的浏览器的方式来做,所以我们无法审查它。是的,这太棒了。你认为它可以标准化到所有浏览器吗?像 Internet Explorer 可能会再次出现,然后,是的,协议很容易复制,而且它们是为了互操作性而设计的。所以存在风险,忠诚的用户可能会被欺骗离开你,或者因为那种分发能力,你可能会被压垮。我不知道,我无法预测未来。我认为反垄断终于在美国重新启动了,当然在欧洲也是如此。GG Comp 正在做它的事情。所以我希望我们将迎来一个创新的时期。你知道,人们在谈论,就像伊丽莎白·沃伦在谈论拆分科技公司一样,非常清楚。现在她没有赢,我猜那不会发生。但我也猜谷歌可能会足够聪明,认为他们应该做一些比给 Chrome 涂上隐私香水更多的事情。他们应该摆脱 DoubleClick 或者剥离一些东西。我不知道,这可能会发生。所以 Brave 可能会启发谷歌彻底改变他们的做事方式。他们已经在做一些你可能读过的事情,叫做隐私沙盒,或者 Flock,他们有一个鸟类比喻,Turtledove,Fledge。但这些系统一直都是非常谷歌式的,过度工程化,但又依赖于差分隐私,而差分隐私随着时间的推移有弱点,如果你知道它是如何工作的,就像注入噪音来隐藏你在人群中,但随着时间的推移,对手可以把你从人群中拉出来。这看起来不会成为一个标准,就像 Apple、Brave、Mozilla 一样。我们不会说,哦,谷歌,你救了我们,你发明了隐私沙盒,所以我们都会采用它。这不会那么容易。这更像是我们在 Brave 中所做的一些事情,例如匿名广告匹配或我们用于确认广告展示的盲签名加密技术,这是 David Chum 的发明,它可以标准化。事实上,其中一些正在标准化,即使谷歌也支持所谓的信任令牌,它们是 Xiaomi 和盲签名证书。但他们没有将它们用于广告确认,因为他们不想炸毁自己的业务,而且他们需要让一些他们服务的发布商在页面上拥有其他广告技术脚本。所以他们陷入了困境。这是我做 Brave 时意识到的。我想,除了成熟并难以创新之外,谷歌的创新者困境是什么?那就是他们已经依赖于这个广告技术系统,这个系统有所有这些供应商,发布商依赖于它们,因为发布商的技术水平不够高。我同情发布商,但我意识到用户必须放在第一位。如果你给用户一个更好的浏览器,它更快,那么你就会获得足够的用户来回馈或支持发布商。速度、电池节省和数据计划节省非常显著。广告技术涉及太多糟糕的 JavaScript。如果你阻止它,并且你切断了所谓的程序化瀑布流,它会链接一系列请求。是的,这是 Brave 的一项了不起的成就。我猜你是说,你应该归功于那个混乱的 JavaScript,没有冒犯,我的意思是,Brave 感觉更快。即使是那样,我的意思是 Chrome 很快,令人印象深刻的一件事是,它表明浏览器可以非常快,而 Brave 比那更快,因为它阻止了这么多,它节省了网络,这意味着数据计划。它节省了电池,因为无线电在运行时会消耗你的电池,以完成更多请求。而且令人震惊的是有多少,我的一些谷歌朋友说,哦,那只是个坏网站,他们会修复的。你实际上对网页进行了调查,大多数都是这样的。我知道谷歌或谷歌工程师可以使一切都超级高效,但他们不能,尤其是在反垄断法庭上。他们不能接管所有发布商并做到这一点。他们正在尝试使用加速移动页面 AMP,他们正在尝试吸引发布商。他们说,哦,可怜的发布商,不知道如何让你的页面变快,把它们放到我们的 AMP 系统上,我们会在搜索轮播中给你额外的展示位置。这本身就是一个反垄断问题,但发布商们也讨厌它,因为它损害了他们的品牌。现在他们看起来像一个自由撰稿人写了一篇带有谷歌的框架和 AMP URL 的文章,他们也在试图修复它。但这看起来就像谷歌正在将所有发布商变成博格,他们不想被插入博格的立方体。他们想建立自己的品牌,拥有忠实的读者。所以,我支持赋予用户权力来帮助所有发布商、小团体和创作者。所以我们谈到了 Patreon,社交网络呢?它们本质上就像搜索一样,是一个全球算法。你试图找到朋友的朋友,你正在进行由这种朋友关系引起的图的传递闭包。但你应该拥有你的朋友关系,你应该拥有你的帖子,它们不应该被别人拥有,他们可以删除或审查它们。你应该能够找到你在其他网络上的朋友。所以我发过推文,我还没有建立它。如果浏览器可以为你跟踪这些呢?如果浏览器可以结合 Facebook 和 Twitter,你可以在两者上找到你的朋友,并且你可以拥有那种关系,而不是由 Facebook 或 Twitter 拥有,而是由你拥有。他们仍然有服务条款,他们会说他们拥有它。但如果他们在其中一个上把你踢出去,而你还在另一个上,你的朋友就能找到你,浏览器可以保存一个组合视图,你可以几乎跨网络复活。这是我想快速问你的一个问题。在这方面,有很多中心化的,我们谈到了 Wall Street Bets,然后 Robinhood 被中心化地禁止了不同的账户,比如从 AWS 中移除 Parler。这种中心化控制的过度行为,你的希望是能够,你对这种情况有什么看法?它有可能创造工具来赋予个人力量来反击这种控制的过度行为吗?所以我们正在谈论寡头政治。我认为,如果它控制了一个国家,那是强大的。它拥有税收、警察权、军事力量。这意味着你可能拥有中国的防火墙,你可能在中国有人因为他们的推文而被监禁。这是一个严重的威胁。我不能轻描淡写或说我们会赢。我不知道会如何发展。但我确实认为,就像我之前说的,关于理性思维的削减,人们会找到绕过事情的方法。互联网会绕过审查。这并不是要支持任何特定的坏派别。发生的一件事是,当你试图过度挥舞言论自由的旗帜时,你说我不会审查任何东西,然后你就被可怕的人所殖民。是的,我不在乎你是否称他们为新纳粹。有些人可能在做违法的事情。而且你不想让他们殖民,因为它会毁掉你的声誉并摧毁你的生意。所以你真正想要的是那种用户至上、从属的、主观性。我希望我的社交网络能够在一个多社交用户界面中组合起来,这样我就不会在网络之间失去对人的追踪。如果他们离开一个,或者被一个禁止,我可以在另一个上找到他们。我仍然可以把它们串联起来。是的,这太棒了。而且这种情况没有发生,因为浏览器被中央权力所捕获。为什么它们被捕获?主要是因为搜索,而搜索是一个中央算法。所以,你知道,拉里·佩奇也说过,很多年前,他说,通过搜索,你牺牲了一点隐私,把查询交给我们,我们会纠正它。艾伦·尤斯蒂斯曾经是谷歌的谷歌高管,他说,哦,是的,我们过去会笑,他们都会犯错,他们会输入错误的词,就像,不,笨蛋,输入那个查询。就像,好吧,谷歌,你可能需要稍微收敛一下你的自负,但是的,你确实看到了所有的查询,你可以改进它们,你可以找到最好的结果。这就是谷歌的专长。当我们 2004 年与 Firefox 达成交易时,谷歌真的很棒。随着时间的推移,SEO 是一种对抗性游戏,谷歌本身也在收购所有这些公司,并将自己的结果页面塞满自己的相关内容。YouTube。当你有控制权时,就会发生滑坡,就像,当你有控制权时,这些非常重要的机制。垄断资本主义或卡特尔。你在 Robin Hood 和对冲基金那里也会遇到这种情况。就是说,资金利益接管并滥用权力,耗尽了他们的欢迎度。那么你如何绕过它?你必须有新的土地可以去,你知道,有些人(不是我的祖先)去那里建立了国家。主要是爱尔兰和德国。你必须有新的虚拟空间,人们可以去,这需要 ISP 或托管中心或亚马逊来托管你。需要一个域名注册商,他们不会罢免你。所以当 Parler 被移除时,你知道,我认为这是过分的。Parler,它设计得很糟糕,我尝试过,因为我尝试了所有这些东西。但我没有使用它。而且我也觉得他们因为没有进行内容审核而被不公平地评分,因为你至今仍然可以找到那些可怕的、威胁各种暴力的推文。Twitter 在哪里?为什么 Twitter 没有被移除?所以这是非常有选择性的。是那些拥有权力的内部人士要干掉新来者。这看起来很糟糕,就像对冲基金在处理 GameStop 时看起来很糟糕一样。你知道,本周你在《时代》杂志上看到一篇文章,基本上说,是的,我们干预了选举,但它很棒,我们很棒。我不知道你是否看过这篇文章?还没有。如果你在 11 月选举后作为特朗普的支持者试图这样说,你就会被 Twitter 禁止。但现在《时代》杂志在它的 Twitter 账户上说,你知道,我们拯救了这一天。AFL-CIO 和大企业,更好的商业局联合起来,阻止了特朗普传播假新闻。所以国家有点坏了。我不知道如何解决。在我看来,寡头们已经横行无阻了,而大科技公司正处于反垄断的困境中。会发生什么?我认为他们不会摆脱。我认为一些司法部,当然还有州级案件,因为它们是独立的案件,不会因为某人当选不同而消失。这些都是职业检察官,他们有很强的案子。微软几乎被拆分了,对吧?法官托马斯·彭菲尔德·杰克逊,他越权了,他没有就补救措施举行听证会,他只是说,我要把你们拆散。微软上诉了,更高一级的法院说,回去弄清楚,你们不能拆散,你们甚至没有举行听证会。当他们回来时,微软说,让我们和解吧。我们想和解,因为杰克逊要把操作系统公司和办公软件(如 Word 和 Excel)拆开。那将是对微软的巨大打击。但最终,我不知道。你对拆分大科技公司的可能性是乐观还是悲观?对我来说,我乐观地认为像 Brave 这样的工具,我喜欢拥有友谊的想法,是的,用户越来越多地拥有东西是唯一真正的方式。不幸的是,这就像 Wall Street Bets 的 subreddit 是对抗中心化权力的唯一真正方式。你无法拆散它们,监管非常困难。当然,我想等待法律。Netscape 早已死亡,或被 AOL 收购并实际上死亡。只有 Mozilla 将 Firefox 带回市场。到了 USB 微软案件最终解决,并实施了处罚。尽管如此,反垄断仍然发挥着作用。那些处罚导致微软转向了 Web。他们做了 Windows Vista,他们认为 Web 太痛苦了,我们在法庭上受到了惩罚,我们不得不与那些 IG 标准化。所以他们又回到了专有锁定,而 Windows Vista 失败了。它很晚,它很臃肿。还记得 Longhorn 吗?现在谷歌,我本来要说的,但谷歌很聪明,他们不会被拆散,他们会剥离一些东西来摆脱困境。我认为这是一个复杂的主题。但我自己,我决定从麻省理工学院研究员的世界中走出来,并可能自己创办一家初创公司。我一直在想,我想来硅谷这样做,因为它是创业者的土地。有很多我的朋友,他们中的许多人自己就是成功的企业家,他们都说不要来硅谷。你已经开始了,你领导了出色的工程师团队,你创办了许多成功的企业。我想知道你是否可以评论一下为什么很多人离开加州?加州有什么可以修复的吗?如果你今天开始创业,你会考虑其他地方,比如奥斯汀或其他地方,还是硅谷仍然是?大家是不是都对今年的冠状病毒等事情反应过度了?我认为,你知道,即使是奥斯汀的
我听说它过热了,嗯,是的,在过去的几个月里,我的亲戚和朋友搬到了德克萨斯州,所以,嗯,德克萨斯州作为一个整体是一个很大的地方,嗯,你知道人们正在搬到佛罗里达州,有一大批人正涌向迈阿密,嗯,彼得·蒂尔,凯斯,这些人都会去哪里,嗯,市长对此非常友好,我认为这只是好的政治,嗯,美国本质上是一个商业共和国,所以你会认为这是长期以来一直在发生的事情,加利福尼亚州曾是黄金州,我是在76年底来到这里的,那时我还是个十几岁的少年,由于封锁,它负债累累,税收最高,这肯定会产生影响,人们会因为高税收而逃离,嗯,由于枯死,每年都有可能发生火灾,这不是全球变暖,而是因为森林没有像20世纪初那样得到管理,嗯,我只想说,各级都存在腐败,尤其是对州长,你知道他曾有名地在法国洗衣房吃饭,是的,声称外面是里面,他们摘下了口罩,这太棒了,嗯,照我说的做,不是照我做的,嗯,规则是给你的,但不是给我的,当你看到领导层出现这种情况时,人们要么逃跑,要么他们会摆脱领导层,所以有一个罢免运动即将达到门槛,或者在过去,他们会拿起枪,你不能容忍这种垃圾,但最终,让硅谷成为一个特殊地方的东西是它给了像年轻的创业者、年轻的心灵、勇敢的心灵去大胆思考、尝试不同事物的自由,我的意思是,即使税收很高,所以除了财务方面,除了所有这些,住房,非常昂贵的住房,是的,所以这很难,关于这一切都很狭隘,他们没有规划好道路,是的,他们取消了洛杉矶的公共交通,就像《谁陷害了罗杰兔》的卡通片一样,他们以前在波特兰也有电车,是的,石油公司和国防部合谋修建高速公路,让汽车占据主导地位,而且通行权早已消失,就像埃隆要去地下冲刺一样,嗯,那可能是现在唯一的办法,是的,但它仍然是一个地方,你认为硅谷仍然是一个奇迹发生的地方吗?下一个谷歌在那里诞生,或者下一个,我的意思是,Brave在那里诞生,嗯,我认为所有美好的事物都有终结,我认为问题是硅谷通过斯坦福大学,通过天使投资人网络和财富效应产生了强大的网络效应,最初你必须归功于联邦政府,比如ARPANET是一个政府项目,我们不要自欺欺人,这不是狂野的自由市场,你知道的自由主义资本主义,这都是冷战时期的东西,嗯,你从学术界走出来,有肖克利,然后是叛徒艾德和费尔柴尔德以及英特尔,但现在,你知道,硅谷最后一家晶圆厂是什么时候建的?微统一可能是最后一家,我不知道,我没有关注,但我们在森尼韦尔建造了一家晶圆厂,嗯,在微统一,从90年代初开始,现在晶圆厂都在海外,嗯,我想说的一件事是,两党中的寡头们故意通过去劳动力更便宜、环境法不严格的地方来利用劳动力和环境保护法的套利,你知道这污染了中国的部分地区,但它使得你可以制造更便宜的垃圾,嗯,这,这个故事还没有结束,那么现在硅谷是做什么的?它是为了网络效应,你知道的智囊团,派对,斯坦福大学,嗯,那种网络也很脆弱,我担心,斯坦福大学有很多好教授,我喜欢他们仍然在过滤,你知道,主要是基于社会经济地位,但它有点像一个滑板学校,我有一个朋友,20年前在网景公司被哈佛大学录用,我们谈论了哈佛大学,他说,是的,教授们在曲线上仍然很棒,我说,哦,是的,我认为他们在斯坦福大学没有这样做,他说,哦,令人震惊的是,一些学生得了C和D,他们哭了,是的,没错,那些珍贵的鹿受不了,所以在斯坦福大学,他们得了A和B,是的,现在你看看中国,人们说你对中国有什么看法,他们也改进了俄罗斯,很多数学科学培训,很多工程学,很多人都在完成他们的课程以获得A和B,所以,嗯,我是一个美国人,我出生在七月四日,我是七月初,是的,哇,正如我所说,美国本质上是一个商业共和国,你可以试着让它变成别的东西,你可以说它是新亚特兰蒂斯,并把它神秘化,你可以,你可以更正确地谈论它,那就是13个殖民地发展起来,然后有很多地方性或原始设计,总之,联邦主义者论文谈到了这一点,有很多地方性,但随着时间的推移,这一点已经被侵蚀了,就像我说的那样,很多离岸外包都造成了损害,那么冠状病毒发生了什么?人们在家工作,起初很有趣,因为我在谷歌有朋友,他们以前抱怨说,他们不仅要来办公室,如果他们加入了另一个团队,而这个团队在另一个办公室,他们不得不搬家,或者你知道,如果V8团队在慕尼黑重组,而它确实是,在Lars Bach厌倦了JavaScript之后,他们在慕尼黑招聘,或者他们在德国招聘了博士,并将他们调到慕尼黑,嗯,随着冠状病毒,每个人都在家工作,这是一种解脱,我可以在家为谷歌工作,但然后又出现了几个,人们开始问马克·扎克伯格,嘿,我能搬到中西部的家乡吗?是的,他说,好的,他们说,哦,我能继续拿硅谷的工资吗?不,我们会弄清楚你那里的生活成本是多少,然后我们会相应地调整你的工资,嗯,这些殖民地和这些小的迷你实验都结合成了这个巨大的实验,我有一个,我不知道,我有一个,我有一个关于美国的愿景,就像我说的,我出生的国家俄罗斯,就像我在这里说的,这是一个真正美好的国家,我不是在七月四日出生的,人们仍然,我仍然,而且我是一个血统纯正的美国人,我有一种感觉,我们以某种方式解决了这个问题,如果硅谷烧毁了,另一个地方就会出现,这个地方会有更多的创新,人们会搬过来,远程工作可能会从根本上改变我们的工作方式,也可能不会,它可能只会让你有自由去创造许多其他小的硅谷,包括奥斯汀,但也有其他地方,我们以某种方式解决了这个问题,嗯,我认为会有更多的流动性,也许会有新的地方出现,我不知道硅谷是否,你知道,已经过了某个保质期,因为它确实受到了伤害,冠状病毒受到了伤害,封锁受到了伤害,而且,从某种意义上说,让事情继续下去的一部分是社交,所以很多年轻人,甚至在冠状病毒爆发之前,就搬到了旧金山,这非常奇怪,因为在80年代,我们都住在硅谷,旧金山的居民区人口较少,它更脏,更像70年代的《肮脏的哈利》,是的,但到了90年代,嗯,杰米经营着一家夜总会,他谈到了这一点,你有一些富有的科技人士搬到了市场以南,建造了豪华的联排别墅,嗯,这种情况一直在继续,以至于几乎就像南非导演尼尔·布洛姆坎普的电影,朱迪·福斯特在太空殖民地,马特·达蒙是地球上必须上去的人,总之,这是关于分层,这是关于巨大的不平等,太空站里的人拥有惊人的医疗自动医生,可以延长他们的生命,治愈癌症,地球上的人们都在贫困中挣扎,嗯,你知道,这种情况在我在这里的时候发生了,你看到很多钱推高了狭窄半岛的价格,单身人士想要夜生活,所以他们住在城里,城里的公寓变得非常昂贵,我知道即使是谷歌的朋友,他们也,你知道,有社会责任感,说我们应该建造更多的住房,我们应该,是的,在我家后院,不是在我家后院,但据我所知,这种情况并没有发生,从政府到在任的,你知道的房东和租房者,这种情况就是没有发生,这必然会把人们赶走,我,我,我欣赏人们来到这里,你应该等待价格上涨,是的,他们会,但,但很多人会去价格较低的地方,你,嗯,抱歉,这里有一些设施问题,但只是回顾一下,你创造了,你参与创造了改变世界的东西,技术世界,也许比其他任何东西都多,嗯,但你仍然是一个人,嗯,不幸的是,这趟旅程即将结束,你有没有想过自己的死亡?不是太多,我的意思是,我,我是一个罗马天主教徒,所以我并不害怕死亡,我认为很多人,嗯,对死亡有问题的人,是因为缺乏对死亡的超越的信仰,或者他们可能没有孩子,或者他们觉得,你知道,他们到了晚年,他们觉得他们错过了做一些能流传下去的事情,我非常同情,因为我老了,我结婚得很晚,所以,我理解这一切,特伦斯说,没有什么人类的东西对我来说是陌生的,但是,嗯,我不害怕,那么你希望你的遗产是什么?我想会是JavaScript,不,我想,你知道,我的遗产更多地与我的孩子和他们的孩子有关,我认为它也与,嗯,网络标准有关,它与Brave这样的东西有关,我们和Firefox一起做的事情,我们做了,嗯,你知道,我不会过度解决强奸问题,但我认为Brave很重要,我们将继续以一种有意义的方式证明这一点,持续数十年,但即使是Firefox,无论它未来的命运如何,都表明你可以重新启动浏览器市场,你刚才说的关于人们选择退出和绕过的事情,你不必让每个人都这样做,更像是顽固的少数人这样做,这是领先用户,埃里克·希普尔的领先用户,你可以占几个百分点,你可以影响市场,即使那些不支持你所做的事情的现有势力,有钱的利益,也可以做到这一点,所以我认为我们对Firefox所做的事情不会被遗忘,而且需要做得更多,我们正在Brave上这样做,你可以说其他项目在某种程度上也在这样做,区块链也在这样做,Robinhood的,嗯,被华尔街退伍军人使用的Robinhood,是的,类似,所以,是的,那种精神得以延续,我认为,嗯,在某种程度上,这是美国的,它不是激进的革命,它不是试图烧毁过去,摧毁一切,它更像是我们拥有这些,比如说,权利,我们也有义务,所以关于哪一个优先,在美国的法学和建国文献中存在一些争论,但只要事情在运转,我们就会,我们就会像德·托克维尔在他的著作中所描述的那样,成为务实的美国人,但是,如果事情因为这样或那样的原因变得太失衡,太不平等,太寡头化和滥用,我们将开始行使我们的权利,即使我们中的几个人也能做到,即使在美国革命中,也是少数人进行了战斗,并将他们的,你知道,生命、财富和神圣的荣誉置于危险之中,有一群人去了,我想叫安大略省,是的,那很美,我的意思是,那就是你的工作核心所在,那就是几个人可以用几个激进的想法,用一点点代码来改变社会,改变世界,必须这样做,这很有力量,这就是美国的方式,这就是为什么我相信这个国家是地球上最伟大的国家,这不是罗梅茨说得太多了,但是,我认为这个国家已经发生了一些特别的事情,而且还会继续发生,而且这种精神可以继续下去,无论,你知道,谁来到这里,他们可以,他们可以采纳那些民间习俗和那种精神,布兰登,我说我无法告诉你我有多么紧张,多么荣幸能和你交谈,你是一个不可思议的人,这是我最喜欢的谈话之一,非常感谢你花这么多时间和我在一起,我真的很感激,哦,这似乎像一阵风,我的荣幸,感谢你收听与布兰登·耐克的谈话,也感谢我们的赞助商乔丹·哈宾格的节目,Sun Basket 膳食配送服务,BetterHelp 在线治疗,以及 Eight Sleep 自冷床垫,点击赞助商链接即可获得折扣并支持此播客,现在,让我用杰夫·阿特伍德的话来结束,任何可以用JavaScript编写的应用程序,最终都会用JavaScript编写,感谢你的收听,希望下次再见。