Loading...

黑客与画家

Original

2003年5月

(这篇文章源于哈佛大学的一次客座讲座,其中包含了早期在东北大学的演讲。)

当我完成计算机科学的研究生学业后,我去艺术学校学习绘画。很多人似乎对一个对计算机感兴趣的人也对绘画感兴趣感到惊讶。他们似乎认为黑客和画家是两种截然不同的工作——黑客是冷静、精确和有条理的,而绘画则是某种原始冲动的狂热表达。

这两种形象都是错误的。黑客和画家有很多共同点。事实上,在我认识的所有不同类型的人中,黑客和画家是最相似的。

黑客和画家共同之处在于他们都是创造者。与作曲家、建筑师和作家一样,黑客和画家试图创造好的东西。他们并不是在进行研究,尽管在试图创造好东西的过程中,如果他们发现了一些新技术,那就更好了。

我从来不喜欢“计算机科学”这个术语。我不喜欢它的主要原因是根本没有这样的东西。计算机科学是一个由历史偶然性拼凑在一起的松散相关领域的杂烩,就像南斯拉夫一样。在一端,你有一些真正的数学家,但他们称自己所做的为计算机科学,以便获得DARPA的资助。在中间,你有一些人正在研究计算机的自然历史——例如,研究算法在网络中路由数据的行为。而在另一端,你有黑客,他们试图编写有趣的软件,对他们来说,计算机只是表达的媒介,就像混凝土对建筑师或颜料对画家一样。就好像数学家、物理学家和建筑师都必须在同一个部门。

有时黑客所做的被称为“软件工程”,但这个术语同样具有误导性。优秀的软件设计师并不比建筑师更像工程师。建筑与工程之间的界限并不明确,但它确实存在。它落在“做什么”和“怎么做”之间:建筑师决定做什么,而工程师则想出怎么做。

“做什么”和“怎么做”不应过于分开。如果你试图在不理解如何做的情况下决定做什么,那就是在自找麻烦。但黑客当然可以不仅仅是决定如何实现某个规范。在最佳情况下,它是创造规范——尽管事实证明,做到这一点的最好方法是实现它。

也许有一天,“计算机科学”会像南斯拉夫一样被拆分成其组成部分。那可能是件好事。特别是如果这意味着我祖国黑客的独立。

将所有这些不同类型的工作捆绑在一个部门中,可能在行政上很方便,但在智力上却令人困惑。这是我不喜欢“计算机科学”这个名称的另一个原因。可以说,中间的人正在做一些类似实验科学的事情。但两端的人,黑客和数学家,实际上并没有在做科学。

数学家似乎对此并不在意。他们愉快地开始证明定理,就像数学系的其他数学家一样,可能很快就不再注意他们工作的建筑外面写着“计算机科学”。但对黑客来说,这个标签是个问题。如果他们所做的被称为科学,这让他们觉得自己应该以科学的方式行事。因此,大学和研究实验室的黑客感到他们应该在写研究论文,而不是做他们真正想做的事情,即设计美丽的软件。

在最好的情况下,这些论文只是形式。黑客编写酷炫的软件,然后写一篇关于它的论文,而这篇论文成为软件所代表成就的代理。但这种不匹配往往会导致问题。很容易从构建美丽的事物漂移到构建丑陋的事物,这些丑陋的事物更适合成为研究论文的主题。

不幸的是,美丽的事物并不总是最适合论文的主题。第一,研究必须是原创的——任何写过博士论文的人都知道,确保你在探索处女地的办法就是占据一块没人想要的土地。第二,研究必须是实质性的——而尴尬的系统会产生更丰富的论文,因为你可以写出你必须克服的障碍,以便完成事情。没有什么比从错误的假设开始更能产生丰富的问题了。人工智能的大部分就是这个规则的一个例子;如果你假设知识可以表示为一系列谓词逻辑表达式,其参数代表抽象概念,你将有很多论文要写,关于如何使其工作。正如里基·里卡多曾经说过的:“露西,你有很多解释要做。”

创造美丽事物的方法往往是对已经存在的事物进行微妙的调整,或以稍微新的方式结合现有的想法。这种工作在研究论文中很难传达。

那么,为什么大学和研究实验室继续通过出版物来评判黑客呢?原因与“学业能力”通过简单的标准化测试来衡量是一样的,或者程序员的生产力通过代码行数来衡量。这些测试很容易应用,没有什么比一种看似有效的简单测试更具诱惑力。

衡量黑客实际上试图做的事情,设计美丽的软件,将会困难得多。你需要有良好的设计感来判断好的设计。而且,除了可能存在的负相关之外,人们识别良好设计的能力与他们的信心之间没有相关性。

唯一的外部测试是时间。随着时间的推移,美丽的事物往往会繁荣,而丑陋的事物往往会被抛弃。不幸的是,涉及的时间可能比人类的寿命还要长。塞缪尔·约翰逊曾说,一个作家的声誉需要一百年才能趋于一致。你必须等到作家的有影响力的朋友去世,然后再等他们所有的追随者去世。

我认为黑客只能接受他们的声誉中有很大随机成分。在这方面,他们与其他创造者并没有什么不同。事实上,与其他人相比,他们是幸运的。时尚的影响在黑客中并没有绘画中那么大。

被人误解你的工作并不是最糟糕的事情。更糟糕的危险是你自己会误解你的工作。相关领域是你寻找想法的地方。如果你发现自己在计算机科学系,自然会有一种诱惑,认为黑客是理论计算机科学的应用版本。在我读研究生期间,我总是有一种不舒服的感觉,觉得我应该知道更多的理论,而我在期末考试后三周就忘记了所有这些东西,这实在是太失职了。

现在我意识到我错了。黑客需要理解计算理论的程度大约和画家需要理解颜料化学的程度一样。你需要知道如何计算时间和空间复杂度,以及图灵完备性。你可能还想记住至少状态机的概念,以防你需要编写解析器或正则表达式库。事实上,画家需要记住的关于颜料化学的知识要多得多。

我发现,最好的想法来源并不是那些名字中带有“计算机”的其他领域,而是其他创造者所居住的领域。绘画比计算理论更丰富的想法来源。

例如,我在大学时被教导,应该在接触计算机之前完全在纸上完成一个程序。我发现我并不是这样编程的。我发现我喜欢坐在计算机前编程,而不是在纸上。更糟糕的是,我往往不是耐心地写出完整的程序并确保它是正确的,而是倾向于随意输出一些无可救药的破代码,然后逐渐将其修整成型。调试,我被教导,是一种最终的过程,在这个过程中你捕捉到错别字和疏漏。按照我的工作方式,编程似乎就是调试。

很长一段时间我对此感到不安,就像我曾经感到不安,因为我没有按照小学教我的方式握住铅笔。如果我当时只看看其他创造者,画家或建筑师,我就会意识到我所做的有一个名字:素描。就我所知,他们教我在大学编程的方式完全是错误的。你应该在写程序时弄清楚程序,就像作家、画家和建筑师一样。

意识到这一点对软件设计有实际的影响。这意味着编程语言应该首先是可塑的。编程语言是用来思考程序的,而不是用来表达你已经想好的程序。它应该是一支铅笔,而不是一支钢笔。如果人们真的按照他们在大学教我的方式编写程序,那么静态类型将是个好主意。但我认识的黑客并不是这样写程序的。我们需要一种让我们可以涂抹、模糊和涂抹的语言,而不是一种让你必须坐在膝盖上平衡着一杯类型的茶,与严格的编译器进行礼貌交谈的语言。

在谈到静态类型时,认同创造者将使我们免于另一个困扰科学的问题:数学嫉妒。科学界的每个人都暗自相信数学家比他们聪明。我认为数学家也相信这一点。无论如何,结果是科学家往往会让他们的工作看起来尽可能数学化。在物理学这样的领域,这可能不会造成太大伤害,但离自然科学越远,这就越成问题。

一页公式看起来总是那么令人印象深刻。(提示:为了额外的印象深刻,使用希腊变量。)因此,有一种巨大的诱惑去处理你可以正式对待的问题,而不是那些重要的问题。

如果黑客认同其他创造者,比如作家和画家,他们就不会感到这样做的诱惑。作家和画家并不受数学嫉妒的困扰。他们觉得自己在做一些完全无关的事情。我认为黑客也是如此。

如果大学和研究实验室阻止黑客做他们想做的工作,也许他们的去处是在公司。不幸的是,大多数公司也不允许黑客做他们想做的事情。大学和研究实验室迫使黑客成为科学家,而公司则迫使他们成为工程师。

我自己最近才发现这一点。当雅虎收购Viaweb时,他们问我想做什么。我从来不太喜欢商业方面,并说我只想黑客。当我到达雅虎时,我发现对他们来说,黑客意味着实现软件,而不是设计软件。程序员被视为技术人员,他们将产品经理的愿景(如果可以这样称呼的话)转化为代码。

这似乎是大公司的默认计划。他们这样做是因为这减少了结果的标准差。只有一小部分黑客实际上能够设计软件,而公司管理者很难挑选出这些人。因此,大多数公司设置的方式是由委员会设计软件,而黑客仅仅实现设计。

如果你想在某个时候赚钱,请记住这一点,因为这也是初创公司获胜的原因之一。大公司希望减少设计结果的标准差,因为他们想避免灾难。但当你抑制振荡时,你会失去高点和低点。这对大公司来说不是问题,因为他们并不是通过制造伟大的产品来获胜。大公司通过比其他大公司表现得更差来获胜。

因此,如果你能找到一种方法与一家足够大的公司进行设计战争,使其软件由产品经理设计,他们将永远无法跟上你。不过,这些机会并不容易找到。与大公司进行设计战争很困难,就像在城堡内与对手进行近身战斗一样。例如,写出比微软Word更好的文字处理器是相对容易的,但微软在其操作系统垄断的城堡内,可能根本不会注意到你这样做。

进行设计战争的地方是在新市场,在那里没有人设法建立任何防御工事。在那里,你可以通过采取大胆的设计方法赢得巨大的胜利,并让同一批人同时设计和实现产品。微软自己在开始时就是这样做的。苹果也是如此。惠普也是如此。我怀疑几乎每个成功的初创公司都是如此。

因此,构建伟大软件的一种方法是创办自己的初创公司。不过,这有两个问题。其一是在初创公司中,你必须做很多除了编写软件以外的事情。在Viaweb,我觉得如果我有四分之一的时间可以黑客,我就算幸运了。而我在其他三分之三的时间里必须做的事情从乏味到可怕。我对此有一个基准,因为我曾经不得不离开董事会会议去填补一些蛀牙。我记得坐在牙医的椅子上,等待钻头,感觉就像在度假。

初创公司的另一个问题是,赚钱的软件和有趣的软件之间的重叠不多。编程语言是有趣的,实际上微软的第一个产品就是一个,但现在没有人会为编程语言付费。如果你想赚钱,你往往被迫处理那些没人愿意免费解决的棘手问题。

所有创造者都面临这个问题。价格由供需决定,而对有趣的工作需求并没有解决个人客户平凡问题的工作那么大。参加小百老汇剧的收入远不如在某个展会上穿着大猩猩服装的收入高。写小说的收入也不如为垃圾处理器撰写广告文案的收入高。而黑客编程语言的收入也不如弄清楚如何将某公司的遗留数据库连接到他们的Web服务器的收入高。

我认为在软件的情况下,这个问题的答案是一个几乎所有创造者都知道的概念:日常工作。这个短语起源于音乐家,他们在晚上演出。更一般地说,这意味着你有一种工作是为了赚钱,另一种是出于热爱。

几乎所有的创造者在职业生涯早期都有日常工作。画家和作家尤其如此。如果你幸运的话,你可以找到一份与你真正工作密切相关的日常工作。音乐家似乎经常在唱片店工作。一个正在研究某种编程语言或操作系统的黑客也可能能够找到一份使用它的日常工作。[1]

当我说黑客的答案是拥有日常工作,并在业余时间从事美丽的软件时,我并不是将其作为一个新想法提出。这正是开源黑客的全部意义。我所说的是,开源可能是正确的模型,因为它得到了所有其他创造者的独立确认。

让我感到惊讶的是,任何雇主都不愿意让黑客参与开源项目。在Viaweb,我们会不愿意雇佣任何不参与开源项目的人。当我们面试程序员时,我们最关心的就是他们在业余时间编写了什么样的软件。你不能真正做好任何事情,除非你热爱它,如果你热爱黑客,你不可避免地会在自己的项目上工作。[2]

因为黑客是创造者而不是科学家,所以寻找隐喻的正确地方不是在科学中,而是在其他类型的创造者中。绘画还能教我们关于黑客的什么?

我们可以从绘画的例子中学到的一件事,或者至少确认的一件事是如何学习黑客。你主要是通过实践来学习绘画。黑客也是如此。大多数黑客并不是通过参加大学的编程课程来学习黑客的。他们是在十三岁时通过编写自己的程序来学习黑客的。即使在大学课程中,你主要也是通过黑客来学习。[3]

因为画家留下了他们工作的痕迹,你可以通过实践观察他们的学习。如果你按时间顺序查看一位画家的作品,你会发现每幅画都建立在之前作品中学到的东西上。当一幅画中有某个部分表现得非常好时,你通常可以在某幅早期的画作中找到它的第一个版本。

我认为大多数创造者都是这样工作的。作家和建筑师似乎也是如此。也许黑客应该更像画家,定期从头开始,而不是在一个项目上工作多年,试图将所有后来的想法作为修订纳入其中。

黑客通过实践学习黑客的事实是黑客与科学之间差异的另一个标志。科学家并不是通过实践来学习科学,而是通过做实验和解决问题集。科学家开始时做的工作是完美的,因为他们只是试图重现别人已经为他们完成的工作。最终,他们会达到能够进行原创工作的程度。而黑客从一开始就是在做原创工作;只是非常糟糕。因此,黑客从原创开始,变得优秀,而科学家从优秀开始,变得原创。

创造者学习的另一种方式是通过例子。对于画家来说,博物馆是技术的参考图书馆。几个世纪以来,复制伟大大师的作品一直是画家传统教育的一部分,因为复制迫使你仔细观察一幅画是如何制作的。

作家也是这样做的。本杰明·富兰克林通过总结艾迪生和斯蒂尔的文章中的要点,然后尝试重现它们来学习写作。雷蒙德·钱德勒在侦探故事中也做了同样的事情。

同样,黑客也可以通过查看优秀程序来学习编程——不仅仅是它们的功能,还有源代码。开源运动的一个不太被宣传的好处是,它使学习编程变得更容易。当我学习编程时,我们主要依赖书中的例子。当时唯一一大块可用的代码是Unix,但即使这也不是开源的。大多数阅读源代码的人都是在约翰·莱昂斯的书的非法复印件中阅读的,尽管这本书是1977年写的,但直到1996年才被允许出版。

我们可以从绘画中得到的另一个例子是绘画是通过逐步完善来创作的。绘画通常从素描开始。细节逐渐被填充。但这不仅仅是填充的过程。有时,原始计划被证明是错误的。无数的画作,当你用X光查看时,发现它们的肢体被移动或面部特征被重新调整。

在这里,我们可以从绘画中学习。我认为黑客也应该这样工作。期望程序的规范是完美的并不现实。你最好在一开始就承认这一点,并以允许规范动态变化的方式编写程序。

(大公司的结构使他们很难做到这一点,因此这是初创公司的另一个优势。)

到现在为止,大家可能都知道过早优化的危险。我认为我们也应该同样担心过早设计——过早决定程序应该做什么。

正确的工具可以帮助我们避免这种危险。一个好的编程语言应该像油画一样,容易改变主意。动态类型在这里是一个胜利,因为你不必在一开始就承诺特定的数据表示。但我认为灵活性的关键是使语言非常抽象。最容易改变的程序是非常短的程序。

这听起来像是一个悖论,但一幅伟大的画作必须比它必须的更好。例如,当达·芬奇在国家美术馆绘制吉内芙拉·德·本奇的肖像时,他在她的头后面放了一棵杜松树。他仔细地画了每一片叶子。许多画家可能会认为,这只是用来作为背景框住她的头。没有人会那么仔细地看它。

达·芬奇不是。一个画作的某部分他工作得多么努力,完全不取决于他预期任何人会多么仔细地看它。他就像迈克尔·乔丹一样。无情。

无情的努力获胜,因为在整体上,未被看到的细节变得可见。当人们走过吉内芙拉·德·本奇的肖像时,他们的注意力往往会立即被吸引,甚至在他们查看标签并注意到上面写着“列奥纳多·达·芬奇”之前。所有那些未被看到的细节结合在一起,产生了令人惊叹的效果,就像一千个几乎听不见的声音齐声歌唱。

同样,伟大的软件也需要对美的狂热追求。如果你查看优秀的软件,你会发现没有人应该看到的部分也是美丽的。我并不是说我写出伟大的软件,但我知道当涉及到代码时,我的行为方式会让我在日常生活中以同样的方式接近时需要处方药。看到代码缩进不当,或者使用丑陋的变量名让我发疯。

如果一个黑客只是一个简单的实现者,将规范转化为代码,那么他可以像挖沟一样从一端工作到另一端。但如果黑客是一个创造者,我们就必须考虑灵感。

在黑客中,像绘画一样,工作是周期性的。有时你会对某个新项目感到兴奋,想要每天工作十六个小时。其他时候,什么都显得不有趣。

要做好工作,你必须考虑这些周期,因为它们会影响你对它们的反应。当你在山坡上驾驶手动变速车时,你有时必须放松离合器以避免熄火。放松同样可以防止雄心熄火。在绘画和黑客中,有些任务是令人恐惧的雄心勃勃,而另一些则是令人安心的例行公事。为那些你否则会停滞的时刻保存一些简单的任务是个好主意。

在黑客中,这可以字面上意味着保存错误。我喜欢调试:这是黑客唯一一次像人们认为的那样简单。你有一个完全受限的问题,你所要做的就是解决它。你的程序应该做x。结果却是y。它哪里出错了?你知道你最终会赢。这就像涂墙一样放松。

绘画的例子不仅可以教我们如何管理自己的工作,还可以教我们如何合作。过去许多伟大的艺术作品都是多个人的作品,尽管在博物馆的墙上可能只有一个名字。达·芬奇曾是维罗基奥工作室的学徒,并在他的基督受洗中画了一个天使。这种事情是规则,而不是例外。米开朗基罗因坚持自己绘制西斯廷教堂天花板上的所有人物而被认为特别敬业。

据我所知,当画家们共同创作一幅画时,他们从不在同一部分工作。通常是大师绘制主要人物,而助手绘制其他人物和背景。但你从来不会看到一个人覆盖另一个人的作品。

我认为这也是软件协作的正确模型。不要推得太远。当一段代码被三到四个不同的人黑客时,没有一个人真正拥有它,它最终会变得像一个公共房间。它往往会显得阴郁和被遗弃,并积累杂物。我认为协作的正确方式是将项目划分为明确的模块,每个模块都有明确的所有者,并且它们之间的接口设计得尽可能仔细,并且如果可能的话,像编程语言一样清晰。

像绘画一样,大多数软件是为人类观众而设计的。因此,黑客,像画家一样,必须具备同理心才能做出真正伟大的作品。你必须能够从用户的角度看问题。

当我还是个孩子时,总是被告知要从别人的角度看问题。这在实践中总是意味着做别人想要的,而不是我想要的。当然,这让同理心名声不好,我特意不去培养它。

我错得离谱。事实证明,从他人的角度看问题几乎是成功的秘诀。这并不一定意味着要自我牺牲。远非如此。理解别人如何看待事物并不意味着你会以他的利益为重;在某些情况下——例如在战争中——你希望恰恰相反。[4]

大多数创造者为人类观众创造事物。要吸引观众,你必须理解他们的需求。例如,几乎所有伟大的画作都是人物画,因为人们对人感兴趣。

同理心可能是优秀黑客与伟大黑客之间最重要的区别。一些黑客相当聪明,但在同理心方面几乎是自我中心的。这样的人很难设计出伟大的软件[5],因为他们无法从用户的角度看问题。

判断一个人在同理心方面有多优秀的一种方法是观察他们如何向没有技术背景的人解释技术问题。我们可能都知道一些人,尽管其他方面聪明,但在这方面却显得滑稽可笑。如果在晚宴上有人问他们什么是编程语言,他们会说:“哦,高级语言是编译器用来生成目标代码的输入。”高级语言?编译器?目标代码?显然,不知道什么是编程语言的人也不知道这些东西。

软件必须自我解释。因此,要编写好的软件,你必须理解用户理解得有多少。他们会毫无准备地走向软件,软件最好能按照他们的猜测运行,因为他们不会去读手册。在这方面,我见过的最好的系统是1985年的原版Macintosh。它做了软件几乎从未做到的事情:它就是好用。[6]

源代码也应该自我解释。如果我能让人们记住关于编程的一个引用,那就是《计算机程序的结构与解释》开头的那句。

程序应该为人类阅读而编写,仅仅偶尔为机器执行。

你需要对你的用户和读者都有同理心。这对你有利,因为你将成为他们中的一员。许多黑客编写程序后,六个月后再回去时发现自己完全不知道它是如何工作的。我知道几个在经历过这样的事情后发誓不再使用Perl的人。[7]

缺乏同理心与智力相关,甚至在某些地方有些时尚。但我认为没有任何相关性。你可以在数学和自然科学中表现良好,而不必学习同理心,而这些领域的人往往很聪明,因此这两种品质被联系在一起。但也有很多愚蠢的人在同理心方面表现得很糟糕。只需听听那些在脱口秀中打电话提问的人。他们以如此迂回的方式提出问题,以至于主持人常常不得不为他们重新表述问题。

那么,如果黑客的工作像绘画和写作一样,它是否同样酷呢?毕竟,你只有一生。你不妨花时间去做一些伟大的事情。

不幸的是,这个问题很难回答。声望总是有很大的时间滞后。这就像来自遥远星星的光。绘画现在有声望,因为人们在五百年前做了伟大的工作。在那个时候,没有人认为这些画作像我们今天认为的那样重要。对于当时的人们来说,费德里科·达·蒙特费尔特罗,乌尔比诺公爵,未来会被称为皮耶罗·德拉·弗朗西斯卡的一幅画作中那个奇怪的鼻子的人,这似乎是非常奇怪的。

因此,虽然我承认黑客现在似乎没有绘画那么酷,但我们应该记住,绘画在其辉煌时期也并没有像现在这样显得酷。

我们可以相对自信地说,这些是黑客的辉煌时代。在大多数领域,伟大的工作是在早期完成的。1430年至1500年间创作的画作至今无人能及。莎士比亚出现在专业戏剧刚刚诞生的时候,并推动这一媒介发展到每位剧作家都不得不生活在他的阴影之下。阿尔布雷希特·丢勒在雕刻方面做了同样的事情,简·奥斯汀在小说方面也是如此。

我们一次又一次地看到同样的模式。一个新媒介出现,人们对此感到如此兴奋,以至于在最初的几代人中探索了它的大部分可能性。黑客似乎正处于这个阶段。

在达·芬奇的时代,绘画并没有像他的作品所帮助的那样酷。黑客的酷程度将取决于我们能用这个新媒介做些什么。

注释

[1] 摄影对绘画造成的最大伤害可能是它扼杀了最好的日常工作。历史上大多数伟大的画家都是通过绘制肖像来养活自己的。

[2] 我被告知微软不鼓励员工参与开源项目,即使是在业余时间。但现在许多优秀的黑客都在参与开源项目,因此这一政策的主要效果可能是确保他们无法雇佣到任何一流的程序员。

[3] 你在大学学到的编程知识就像你学到的关于书籍、衣服或约会的知识:你在高中时的糟糕品味。

[4] 这是一个应用同理心的例子。在Viaweb,如果我们无法在两个选择之间做出决定,我们会问,竞争对手最讨厌什么?有一次,一个竞争对手在他们的软件中添加了一个基本上无用的功能,但由于这是他们拥有的少数几个功能之一,我们没有,因此他们在行业媒体中大肆宣传。我们本可以试图解释这个功能是无用的,但我们决定如果我们自己实现它,竞争对手会更恼火,因此我们那天下午就黑客出自己的版本。

[5] 除了文本编辑器和编译器。黑客在设计这些时不需要同理心,因为他们本身就是典型用户。

[6] 嗯,几乎是这样。他们在可用的RAM上超出了预期,导致了许多不便的磁盘交换,但这可以在几个月内通过购买额外的磁盘驱动器来解决。

[7] 使程序易于阅读的方法不是用注释填充它们。我会将阿贝尔森和萨斯曼的引用更进一步。编程语言应该被设计成表达算法,而仅仅偶尔告诉计算机如何执行它们。一个好的编程语言应该比英语更适合解释软件。你只应该在有某种需要警告读者的权宜之计时才需要注释,就像在道路上,只有在意外急转弯的地方才有箭头。

感谢特雷弗·布莱克威尔、罗伯特·莫里斯、丹·吉芬和丽莎·兰德尔阅读这篇文章的草稿,以及亨利·莱特纳和拉里·芬克尔斯坦邀请我发言。