黑客与画家
原文:Hackers and Painters
作者:Paul Graham 发表:2003-05
译者:Claude(baoyu-translate)
我读完计算机科学的研究生之后,跑去美院学画。很多人似乎都觉得意外——一个对计算机感兴趣的人怎么会同时对绘画感兴趣?他们好像觉得做黑客和绘画是两种截然不同的工作:做黑客这件事冷峻、精确、按部就班,而绘画是某种原始冲动的狂热宣泄。
这两种印象都不对。做黑客和绘画其实有很多共通之处。事实上,在我认识的各种各样的人里,黑客和画家是最像的两类人之一。
黑客和画家的共同点是:他们都是创造者(makers)。和作曲家、建筑师、作家一样,黑客和画家想做的事情就是做出好东西。他们做的并不严格算作研究——尽管在尝试做出好东西的过程中,如果碰巧发现了什么新技术,那当然是再好不过。
我从来不喜欢“计算机科学“这个说法。我不喜欢的主要原因是:根本就没有这种东西。计算机科学是一袋松散关联的领域,因为历史的偶然被胡乱凑在一起,就像南斯拉夫(由六个加盟共和国拼凑而成的联邦国家)。一头是一些其实是数学家的人,他们把自己做的事叫“计算机科学“,这样就能拿到 DARPA(美国国防部高级研究计划局)的经费。中间是一些研究“计算机的博物学“的人——比如研究在网络中路由数据的算法行为。另一头是黑客,他们想写出有意思的软件,对他们来说,计算机不过是一种表达媒介——就像混凝土对于建筑师、颜料对于画家。这就好比数学家、物理学家和建筑师非要被塞进同一个系。
有时候黑客做的事会被称为“软件工程“,但这个词同样是误导。好的软件设计师不比建筑师更像工程师。建筑学和工程学之间的边界并不分明,但确实存在。这条边界落在“做什么“和“怎么做“之间:建筑师决定做什么,工程师琢磨怎么做。
“做什么“和“怎么做“也不应该被分得太开。如果你想脱离“怎么做“去决定“做什么”,多半要出问题。但做黑客这件事当然可以远不止“决定怎么实现某个规格说明“。在最理想的情况下,它本身就是在创造规格说明——只不过事实证明,做这件事最好的办法就是把它实现出来。
也许有一天,“计算机科学“也会像南斯拉夫那样解体成它的各个组成部分。这可能是件好事,尤其是如果这意味着我的故乡——黑客这片土地——能独立出来。
把这么多不同类型的工作打包塞进一个系,行政上也许方便,但智识上是混乱的。这是我不喜欢“计算机科学“这个名字的另一个原因。位于中间的那批人,勉强可以说是在做某种实验科学。但两端的人——黑客和数学家——其实并没有在做科学。
数学家似乎并不为此困扰。他们高高兴兴地证明定理,跟数学系隔壁的同行们没什么两样,大概很快就不再注意自己工作的那栋楼外墙上写着“计算机科学“了。但对黑客来说,这个标签就是个问题。如果他们做的事被叫做“科学“,他们就会觉得自己应该表现得“科学“一点。于是,大学和研究实验室里的黑客没去做他们真正想做的事——设计漂亮的软件——反而觉得自己应该写研究论文。
最好的情况下,论文只是个形式。黑客写出酷的软件,再就这软件写一篇论文,论文就成了那软件所代表成就的代理。但这种错位经常带来麻烦。人很容易从“做漂亮的东西“漂移到“做适合写论文的丑东西“。
不幸的是,漂亮的东西并不总适合做论文题目。第一,研究必须原创——任何写过博士论文的人都知道,要确保自己探索的是处女地,最稳妥的办法就是圈一块没人想要的地。第二,研究必须分量足——别扭的系统才能写出更“有料“的论文,因为你可以大谈为了把事情做成,你不得不克服多少障碍。要让问题“有料“,没有比“从错误的前提出发“更好的办法了。AI 的大部分研究就是这个规则的例证;如果你假定知识可以被表示为一系列谓词逻辑表达式(其参数代表抽象概念),那你将有一大堆论文要写——讲这条路怎么才能走通。正如里基·里卡多常说的那句话:“露西,你得给我好好解释一下。”(1950 年代美国情景喜剧《我爱露西》经典台词)
创造美的东西,常常靠的是对已有事物做细微的调整,或者用稍微新颖的方式把已有的想法组合起来。这种工作很难用一篇研究论文讲清楚。
那为什么大学和研究实验室还在以发表论文的多少来评判黑客?同样的原因解释了为什么“学业能力“要用头脑简单的标准化考试来度量,为什么程序员的生产力要用代码行数来度量。这些测试容易实施,而世上没有什么比“一个差不多能用的简单测试“更让人难以抗拒。
要去衡量黑客真正想做的事——设计漂亮的软件——会困难得多。要判断好设计,你自己得有一种好的设计感。而人识别好设计的能力,与他们自信能识别好设计的程度之间,几乎没有正相关——或许还有点负相关。
唯一的外部检验是时间。随着时间推移,漂亮的东西往往会繁荣,丑陋的东西往往会被丢弃。不幸的是,这其中涉及的时间可能比一个人的寿命还长。塞缪尔·约翰逊(18 世纪英国文学家)说过,一个作家的声誉要花一百年才能收敛。你得等到那个作家有影响力的朋友都死光,再等到他们的追随者也都死光。
我觉得黑客只能认命:他们的声誉里会有很大一部分随机成分。在这一点上他们和其他创造者没什么两样。事实上,比起来他们已经算幸运的了。做黑客这一行里,时尚的影响远没有在绘画里那么大。
比“被人误解“更糟的事是有的。更糟的危险是:你自己误解了自己的工作。相邻的领域是你寻找想法的地方。如果你身处计算机科学系,就有一种自然的诱惑去相信——比方说——做黑客这件事是理论计算机科学所对应的“应用版本“。我读研期间,心里始终隐隐有种不安的感觉:我应该多懂点理论,期末考试三周之后就把那些东西忘光了,实在是我的失职。
现在我意识到我当时错了。黑客需要懂多少计算理论,跟画家需要懂多少颜料化学差不多。你需要知道怎么算时间和空间复杂度,知道图灵完备性。你或许还想至少记住状态机的概念,万一你哪天得写个解析器或正则表达式库。事实上,画家要记住的颜料化学知识远不止这点。
我发现,最好的想法来源不是名字里带“计算机“的那些领域,而是其他由创造者居住的领域。在我看来,绘画带来的想法远比计算理论丰富。
举个例子,我在大学被教导:写程序应该先在纸上把整个程序想清楚,然后才能靠近计算机。我发现自己不是这样写程序的。我发现我喜欢坐在电脑前编程,而不是坐在一张纸前。更糟糕的是,我并不是耐心地把一个完整的程序写出来、确认它正确无误,而是倾向于先吐出一堆漏洞百出的代码,然后逐渐把它捶打成形。学校里教我的是:调试只是最后一道工序,用来抓那些拼写错误和疏漏。可按我那种工作方式,编程似乎本身就是由调试构成的。
为这件事我心里难受过很久——就像我曾经为自己没有按小学老师教的方式握铅笔而难受过一样。如果我那时候朝其他创造者那边看一眼——画家或建筑师——我就会发现:其实我在做的事是有名字的:打草稿(sketching)。在我看来,他们在大学里教我编程的方式完全不对。你应该在写程序的过程中把程序想清楚,就像作家、画家和建筑师做的那样。
意识到这一点对软件设计有实际的含义。这意味着:编程语言首先必须有可塑性。编程语言是用来思考程序的,不是用来表达你已经想清楚的程序的。它应该是一支铅笔,而不是一支钢笔。如果人们真的按学校教的那种方式写程序,那么静态类型会是个不错的主意。但我认识的所有黑客都不是那样写程序的。我们需要的是一种允许我们涂涂改改、抹抹擦擦的语言,而不是那种你必须膝盖上端着一杯类型的茶、和一位严苛老姑妈似的编译器礼貌交谈的语言。
既然说到了静态类型,与“创造者“认同还能让我们避开困扰各门科学的另一个毛病:数学嫉妒(math envy)。各门科学里的每一个人,心底都偷偷相信数学家比自己聪明。我觉得数学家自己也这么相信。无论如何,结果就是:科学家倾向于让自己的工作看起来尽量“数学化“。在物理这种领域,这大概不会造成多少损害;但你离自然科学越远,问题就越严重。
满满一页公式看着就是那么唬人。(小贴士:要更唬人,就用希腊字母变量。)于是有一种巨大的诱惑——去做那些可以被形式化处理的问题,而不是那些其实重要的问题。
如果黑客认同的是其他创造者——比如作家和画家——他们就不会受这种诱惑。作家和画家不患数学嫉妒。他们觉得自己在做的事和数学完全无关。我觉得,黑客其实也是。
如果大学和研究实验室不让黑客做他们想做的工作,那也许公司才是他们的去处。不幸的是,大多数公司也不会让黑客做他们想做的事。大学和研究实验室逼着黑客当科学家,公司则逼着他们当工程师。
这一点我自己也是很晚才发现的。雅虎收购 Viaweb(PG 1995 创立的电商建站公司,后被 Yahoo 收购)之后,他们问我想做什么。我向来不太喜欢业务那一面,就说我只想 hack。等我到了雅虎才发现,在他们那里,“hacking“这件事的意思是实现软件,而不是设计软件。程序员被看作技术工——把产品经理们的“愿景”(如果这也叫愿景的话)翻译成代码。
这似乎是大公司里的默认方案。他们这么做,是因为这能降低产出的标准差。真正能设计软件的黑客只占很小比例,而管理公司的人很难把这些人挑出来。所以,与其把软件的未来托付给某一个聪明的黑客,大多数公司宁可这样安排:让一个委员会去做设计,而黑客只负责把设计实现出来。
如果你将来想赚钱,记住这一点,因为这正是创业公司能赢的原因之一。大公司想把设计产出的标准差压低,是因为它们想避免灾难。但当你抑制振荡的时候,你既丢掉了低点,也丢掉了高点。这对大公司不构成问题,因为它们靠的不是做出伟大的产品来赢。大公司赢的方式是比别的大公司更不烂。
所以,如果你能找到一种方式,跟一家“软件由产品经理来设计“的大公司打一场设计战,那它们永远追不上你。但这种机会并不容易找。要把一家大公司拖进设计战是很难的,就像要在一座城堡里跟对手肉搏一样难。比方说,要写出一个比 Microsoft Word 更好的字处理器并不难,但 Microsoft 安坐在他们的操作系统垄断这座城堡里,多半根本不会注意到你做出来了。
打设计战的地方应该是新市场——那里还没有人筑起任何防御工事。在那里,你可以靠对设计采取大胆的路线、并让同一批人既负责设计又负责实现产品,赢得大胜。Microsoft 自己一开始就是这么做的。Apple 也是。惠普也是。我猜几乎每一家成功的创业公司都是。
所以,做出伟大软件的一种方式是:自己开一家创业公司。但这有两个问题。一是在创业公司里,除了写软件之外你还得做太多别的事。在 Viaweb,我能有四分之一的时间用来 hack 就算自己走运了。剩下四分之三的时间里我得做的事,从乏味到吓人都有。我有个基准——有一次我开董事会开到一半,得离场去补牙。我记得自己躺回牙科椅上,等着电钻下来,感觉就像在度假。
创业公司的另一个问题是:能赚钱的那种软件和写起来有意思的那种软件,重叠得不多。编程语言写起来有意思——事实上 Microsoft 的第一个产品就是一种编程语言——但今天没人会为编程语言付钱。如果你想赚钱,你往往会被逼着去做那些“恶心到没人愿意免费解决“的问题。
所有的创造者都面对这个问题。价格由供求决定,而“做起来有意思的事“的需求,远不及“为某个客户解决琐碎问题“的需求大。在外百老汇剧目(纽约非主流剧场)里演戏,挣的钱就是不如在行业展会的某个公司展位里穿着大猩猩服装。写小说挣的钱不如给厨房水槽搅拌机写广告文案。Hack 编程语言挣的钱也不如琢磨怎么把某公司的遗留数据库连到他们的 Web 服务器。
我觉得这个问题的答案——就软件而言——是几乎所有创造者都熟悉的一个概念:“白天的工作”(day job — 为赚钱所做的工作,相对于晚上的志业)。这个说法最早来自音乐家——他们晚上演出。更一般地说,它的意思是:你有一种工作是为了钱去做的,另一种是为了爱去做的。
几乎所有创造者在职业早期都有“白天的工作“。画家和作家这样做是出了名的。如果你够幸运,你可以找一份和你真正的工作密切相关的“白天的工作“。音乐家似乎常常在唱片店上班。一个在搞某种编程语言或操作系统的黑客,同样可能找到一份用得上它的“白天的工作“。
当我说“答案是黑客白天打工,业余时间做漂亮的软件“,我并不是在提一个新主意。这就是开源运动一直以来在做的事。我想说的是:开源大概就是正确的模式,因为它已经被所有别的创造者独立地验证过了。
让我吃惊的是:竟然会有雇主不愿意让黑客做开源项目。在 Viaweb,我们要是面试一个不做开源的程序员,会很犹豫要不要雇。我们面试程序员时最在意的事情是:他们在业余时间写什么样的软件。任何一件事,你不爱它就不可能真做好;如果你爱 hack,你不可避免会有自己手上在做的项目。
因为黑客是创造者而不是科学家,所以寻找隐喻的合适地方不是科学,而是其他类型的创造者那里。绘画还能教做黑客这件事什么?
我们可以从绘画的例子里学到——或者至少印证——一件事:怎么学做黑客。学画画主要靠画。做黑客也是。大多数黑客不是靠上大学的编程课学会做黑客的。他们是十三岁靠自己写程序学会的。哪怕是在大学课堂上,你学做黑客主要也是靠 hack。
因为画家身后会留下一串作品的轨迹,你可以观察他们在“做“中学的过程。如果你按时间顺序看一个画家的作品,会发现每幅画都建立在之前那些画里学到的东西之上。一幅画里有什么处理得特别好的地方,你通常都能在更早的某幅画里找到它的“1.0 版“——以一种更小的形式存在。
我觉得大多数创造者都是这样工作的。作家和建筑师似乎也是。也许黑客学画家更好——定期推倒重来,而不是在一个项目上一年又一年地干下去,并试图把后来想到的所有想法都作为修订塞进去。
黑客靠“做“来学做黑客这件事,是它与各门科学差异的另一个标志。科学家不是靠“做科学“来学科学的,他们靠的是做实验和写习题集。科学家一开始做的工作是“完美“的——意思是他们只是在重做别人已经替他们做过一遍的工作。最终他们会到达可以做原创工作的那一步。而黑客从一开始就在做原创工作;只不过做得很糟。所以黑客一开始原创、后来变好;科学家一开始好、后来变原创。
创造者学习的另一种方式是看例子。对画家来说,博物馆是技法的参考资料库。几百年来,临摹大师之作一直是画家传统教育的一部分,因为临摹会逼着你仔细观察一幅画是怎么被画出来的。
作家也这么干。本杰明·富兰克林学写作的方法是:先把艾迪生与斯蒂尔(18 世纪英国散文家)的散文要点总结出来,然后试着照样写一遍。雷蒙德·钱德勒(美国硬汉派侦探小说家)对侦探小说做过同样的事。
同样地,黑客也可以通过看好的程序来学编程——不只是看它们做了什么,还要看源代码。开源运动有一个不太被宣传的好处:它让学习编程变得更容易。我学编程的时候,我们主要只能依赖书里的示例。当时唯一一大块可读的代码是 Unix,但即便这个也不开源。读源代码的人大多读的是 John Lions(1977 年写《Lions’ Commentary on UNIX》的澳大利亚教授)那本书的非法复印本——那本书虽然 1977 年就写好了,却直到 1996 年才被允许出版。
我们可以从绘画那里借来的另一个例子是:画作是通过逐步润色而被创造出来的。绘画通常从一幅速写开始。细节逐渐被填进去。但这不仅仅是“填空“。有时候最初的设想被证明是错的。无数画作在 X 光分析下,会显示某个肢体被挪过位置,或者某个面部特征被重新调整过。
这正是我们可以从绘画那里学到的一个例子。我觉得做黑客也应该是这样的。指望一个程序的规格说明能完美无缺,是不切实际的。你最好提前承认这一点,并且以一种允许规格说明随时变化的方式去写程序。
(大公司的结构使得它们很难做到这一点,所以这又是一个创业公司占优的地方。)
如今大概所有人都知道过早优化的危险。我觉得我们应该同样担心过早设计——过早决定一个程序应该做什么。
合适的工具能帮我们避开这种危险。一种好的编程语言应该像油画颜料那样,让你能轻松改主意。在这一点上动态类型是个胜利,因为你不必预先承诺某种具体的数据表示。但灵活性的关键——我觉得——是让语言非常抽象。最容易改的程序,是非常短的程序。
这听起来像悖论,不过:一幅伟大的画作必须比“它需要做到的“更好。比如,列奥纳多画华盛顿国家美术馆里那幅《吉尼薇拉·德·本琪》(列奥纳多 1474 年作品)的肖像时,他在她头后面画了一丛杜松灌木。在那丛灌木里,他一片一片仔细地画了每一片叶子。许多画家可能会想:这只是用来衬托她头部的背景而已,没人会凑那么近去看。
列奥纳多不是这样。他在一幅画的某个部分上下了多大功夫,跟他预期会有多少人凑近去看,半点关系都没有。他像迈克尔·乔丹。永不松懈。
永不松懈之所以能赢,是因为加在一起,那些“看不见的细节“反而变得可见。当人们走过《吉尼薇拉·德·本琪》那幅肖像时,他们的注意力常常立刻被它攫住——甚至是在他们看到旁边的标签上写着“列奥纳多·达·芬奇“之前。所有那些看不见的细节叠加在一起,产生了一种令人惊叹的东西,就像上千个细微到几乎听不见的声音齐声合唱。
伟大的软件同样需要狂热到几乎走火入魔的对美的执着。如果你打开一份好的软件看里面,你会发现连那些本来没人会看到的部分也是漂亮的。我并不是说自己写的是伟大的软件,但我知道:在面对代码的时候我的行为方式,如果用在日常生活里,估计够格去开处方药。看到代码缩进糟糕,或者用了丑陋的变量名,我就会发疯。
如果一个黑客只是个实现者——把规格说明翻成代码——那他大可以像挖沟的人那样,从一头一路推到另一头。但如果黑客是创造者,我们就得把灵感纳入考虑。
做黑客这件事跟绘画一样,工作是周期性来的。有时候你会被某个新项目兴奋到想一天工作十六个小时。其他时候,什么都提不起兴趣。
要做出好工作,你必须把这些周期纳入考虑,因为它们会被你对它们的反应影响。当你开着一辆手动挡的车在坡上的时候,你有时候得松一下离合器,免得熄火。同样地,“松一下“也能防止野心熄火。在绘画和做黑客这两件事里都有一些任务是吓死人地野心勃勃的,另一些则是令人安慰地例行公事的。聪明的做法是给自己留几样轻松的任务,留到那些你本来会熄火的时刻去做。
在做黑客这件事里,这甚至可以字面上意味着“攒 bug“。我喜欢调试:那是黑客活儿里唯一像人们以为的那么直白的时刻。你有一个完全被约束住的问题,你只需要去解决它。你的程序本来应该做 x,结果它做了 y。它在哪儿出错了?你知道你最终一定会赢。这就跟刷一面墙一样让人放松。
绘画的例子不仅能教我们怎么管理自己的工作,还能教我们怎么协作。过去许多伟大的艺术作品都是多人之手的合作,尽管美术馆里那幅画旁边的牌子上可能只有一个名字。列奥纳多曾经是韦罗基奥(佛罗伦萨画家,列奥纳多的师傅)画室的学徒,他在韦罗基奥的《基督受洗》里画过其中一个天使。这种事是惯例,不是例外。米开朗琪罗被认为格外执着,因为他坚持要自己一个人画完西斯廷礼拜堂天顶上所有的人物。
据我所知,画家合作画一幅画时,从来不会两个人画同一个部分。常见的做法是:大师画主体人物,助手画其他人物和背景。但你绝不会看到一个人在另一个人画过的地方再涂一遍。
我觉得这也是软件里协作的正确模式。不要做得太过。当一段代码同时被三四个人 hack,没有谁真正“拥有“它时,它最后就会变得像个公共活动室(英式:无人专属的共享房间)。它会显得荒凉、被遗弃,并且堆积起一堆垃圾代码。我觉得正确的协作方式是:把项目划分成边界清晰的模块,每个模块都有一个明确的所有者,模块之间的接口要被精心设计——并且如果可能,要像编程语言那样被明确地表述出来。
跟绘画一样,大多数软件是为人类受众而做的。所以黑客和画家一样,要做出真正伟大的工作就必须有同理心。你必须能从用户的视角看事情。
我小时候经常被告诫要从别人的视角看事情。这话在实践中的意思总是:去做别人想要的事,而不是我想要的事。这当然让“同理心“背上了坏名声,于是我刻意不去培养它。
哦,我大错特错。事实证明,从别人的视角看事情几乎就是成功的秘诀。这不一定意味着自我牺牲,远非如此。理解别人怎么看事情,并不意味着你必须按对方的利益行动;在某些情况下——比如战争——你想做的恰恰是相反的事。
大多数创造者是为人类受众做东西的。而要打动一个受众,你就得理解他们需要什么。比方说,几乎所有最伟大的画作都是画人的——因为人感兴趣的就是人。
同理心大概是好的黑客和伟大的黑客之间最重要的那个区别。有些黑客非常聪明,但在同理心方面几乎是唯我论者。这种人很难设计出伟大的软件,因为他们没办法从用户的视角看事情。
判断一个人同理心好坏的一种方法,是看他向一个没有技术背景的人解释技术问题时表现如何。我们大概都认识那种人——其他方面都挺聪明,但在这件事上可笑地差。如果有人在饭桌上问他们“什么是编程语言“,他们会说:「哦,高级语言就是编译器拿来作为输入、用来生成目标代码的东西。」高级语言?编译器?目标代码?连“编程语言是什么“都不知道的人,显然也不会知道这些东西是什么。
软件要做的事情之一就是解释它自己。所以,要写出好软件,你必须理解用户懂得有多么少。他们会毫无准备地走到这个软件面前,那它最好就是他们猜它会做的事——因为他们不会去读使用手册。在这一点上我见过的最好的系统是 1985 年最初的 Macintosh。它做了一件软件几乎从来不做的事:它就是能用。
源代码也应该解释它自己。如果只能让人记住一句关于编程的话,我希望那是《计算机程序的构造与解释》(SICP,MIT 经典教材)开篇的那一句。
程序首先是写给人读的,只是顺带让机器能执行。
你必须有同理心,对象不仅是你的用户,还有你的读者。这符合你自己的利益,因为你也会成为他们当中的一员。许多黑客写完一个程序,半年之后回头一看,已经完全不知道它是怎么运作的了。我认识好几个人因为这种经历,从此发誓不再碰 Perl。
缺乏同理心常被与聪明联系在一起,到了某些地方甚至成了一种风尚。但我并不认为两者之间有什么相关性。你完全可以在数学和自然科学上做得很好,而不必学会同理心,而这些领域里的人通常又都很聪明,于是这两种特质就被关联了起来。可笨的人里面,也有大把不善于同理的。听听那些打电话上电话访谈节目问问题的人就知道了。他们想问的事情绕了一大圈才说出来,主持人常常得替他们把问题重新组织一遍。
那么,如果黑客这件事和绘画、写作的运作方式一样,它有它们那么酷吗?毕竟你只有一辈子,你不如把它花在做点伟大的事上。
不幸的是,这个问题很难回答。声望从来都有很大的时间滞后。它就像来自遥远星辰的光。绘画今天之所以有声望,是因为五百年前有人做出了伟大的作品。在当时,没人觉得这些画像我们今天所认为的那么重要。对当时的人来说,会觉得这事很怪:费德里科·达·蒙特费尔特罗——乌尔比诺公爵——有一天会被记住,主要是作为皮耶罗·德拉·弗朗切斯卡(15 世纪意大利画家)画里那个鼻子奇怪的人。
所以,虽然我承认现在黑客这件事看起来没有绘画那么酷,但我们应该记得:绘画在它自己的黄金时代,看起来也不像它今天这么酷。
我们可以相当有把握地说:这是黑客的黄金时代。在大多数领域里,伟大的工作都是在早期完成的。1430 到 1500 年之间创作的绘画作品,至今无人超越。莎士比亚出现的时候,职业剧场正刚刚诞生,他把这一媒介推得如此之远,以至于此后的每一个剧作家都不得不活在他的阴影里。阿尔布雷希特·丢勒在版画上做了同样的事,简·奥斯汀在小说上也是。
我们一次又一次地看到同样的模式。一种新媒介出现,人们对它兴奋到要在头几代人手里就把它的大部分可能性探索完。黑客这件事,看起来正处在这个阶段。
绘画在列奥纳多的年代,远没有他的作品后来让它显得那么酷。黑客最终能有多酷,取决于我们能用这个新媒介做出什么。