我们的时代是程序员主导的时代,而伟大的程序员就是黑客,行为怪异的人和愤世嫉俗的人比普通人更可能成为黑客。如果你想理解我们目前的世界以及它的未来动向,本书就是帮助你了解黑客、从而理解这个时代的一把钥匙。
文/阮一峰 (本书译者)
前言
这本书尝试解释计算机世界里发生了什么事,所以,它不仅仅是写给程序员看的,也适合所有人。比如,第6章讲如何致富,我相信这是所有读者普遍感兴趣的内容。
你可能注意到了,过去三十年中,很多赚到大钱的人都是程序员,比如比尔·盖茨、史蒂夫·乔布斯、拉里·埃里森。为什么?为什么是程序员,而不是土木工程师,或者摄影师,或者精算师?第6章将告诉你答案。
软件带来财富,仅仅代表了大趋势的一面而已。这种大趋势就是本书的主题。我们的时代是计算机时代。以前,人们曾经认定这个时代应该是太空时代或者原子时代。但是事实证明,它们只是公关公司发明的概念。计算机对人类生活的影响远远超过了太空航行或者原子技术的影响。
我们生活中的一切,都正在成为计算机。打字机被计算机取代了,电话也变成了计算机,照相机亦是如此。很快,电视机也将变成计算机。当今小轿车所具备的计算能力比1970年占满一间屋子的大型计算机还要强。信件、百科全书、报纸,甚至本地的小店,都正在被互联网取代。所以,如果你想理解我们目前的世界以及它的未来动向,那么多了解一些黑客的想法会对你有帮助。
黑客?那不是侵入他人计算机的人吗?在外行人看来,这个词的意思就是这样。但是在计算机世界中,黑客指的是专家级程序员。因为本书的目的是解释真实的计算机世界是怎么一回事,所以我决定冒着被误解的风险,按照行业内的定义使用这个词。
本书的前几章回答了一些大家可能都想过的问题。怎样创业才会成功?技术是否造成了技术人员与普通人之间的隔阂?程序员到底在做些什么?为什么那些读高中时普普通通的学生,最终却摇身一变成为世界上最有影响力的人士?微软公司会控制互联网吗?怎样才能对付垃圾邮件?
《黑客与画家:硅谷创业之父Paul Graham文集》后面几章谈的是大多数非计算机行业的人士没有想过的问题——编程语言。为什么普通人要去关心编程语言?因为如果你想了解黑客,就必须懂一点编程语言。这就好比回到1880年,如果你想理解技术发展,就必须懂一点蒸汽机。
计算机程序只是文本而已。你选择什么语言,决定了你能说什么话。编程语言就是程序员的思维方式。
因此很自然,编程语言对程序员的思想有巨大的影响。你从他们写的软件中就可以看出来。旅游网站Orbitz成功打入了竞争激烈的网络订房订票市场。该市场原先被两大巨头主宰,一个是微软公司,另一个是拥有数十年电子预定服务经验的Sabre。Orbitz是怎么从它们手中抢到市场的?最主要的原因就是它使用了一种更好的编程语言。
根据使用的语言不同,程序员往往会被分成不同的派别。人们区分程序员甚至不是看他们写了什么程序,而是看他们使用什么语言。所以,声称一种语言优于另一种语言被认为是不礼貌的行为。但是,没有一个编程语言的设计者会相信“不同的语言各有千秋”这种文绉绉的客套话。我将直言不讳地说出自己对于编程语言的看法,这也许会令很多人不快,但是如果想要理解黑客,我真的觉得没有其他更好的方法。
有些读者可能不理解第3章的内容。这一章与计算机有什么关系?事实是黑客很在乎言论自由。Slashdot(它是黑客世界的《纽约时报》)有一个专栏讨论这个问题。我想Slashdot的大多数读者都认为重视言论自由是天经地义的事情。不过《飞机与飞行员》(Plane & Pilot)杂志就肯定不会有一个这样的栏目。
为什么黑客那么在乎言论自由?我认为,部分原因在于,革新对于软件行业实在是太重要了,而革新和异端实际上是同一件事。优秀的黑客养成了一种质疑一切的习惯。这是肯定的,因为如果你不得不同一台机器打交道,而这台机器全部由文字组成,像机械式手表一样复杂,并且规模大出1000倍,那么你也会养成这种习惯的。
此外,我还认为,行为怪异的人和愤世嫉俗的人比普通人更可能成为黑客。计算机世界就像是智力世界的大西部,在那里没有你不敢想的事情,只要你愿意承担冒险后果。
如果我成功实现了自己对这本书的设想,那么它也将是一片智力的大西部。我不希望你带着某种压迫感来阅读此书,心里想着:“没办法,这些书呆子看上去正在接管世界。我最好能懂一点他们正在干的事情,这样就不会被他们整出来的下一个东西唬到了。”如果你喜欢思考,阅读此书应该会带给你很多乐趣。虽然黑客从外表看上去一般都是呆呆的,但是他们的大脑内部却是一个有趣得让你吃惊的地方。
写于马萨诸塞州坎布里奇
2004年4月
个人视角终有局限,如有非虚构类好书新书推荐,还望投稿或微博私信@潘乱兄
阮一峰:黑客的含义
文/阮一峰 (本书译者)
一、
您现在拿在手里的,是一本非常重要、也非常独特的书籍。
它的作者是美国互联网界举足轻重、有"创业教父"之称的哈佛大学计算机博士Paul Graham。 本书是他的文集。
这本书的内容并不深奥,不仅仅是写给程序员和创业者的,更是写给普通读者的。Paul Graham最大的目的,就是通过这本书,让普通读者理解我们所处的这个计算机时代。
1968年--1972年期间,美国出版过一本叫做《地球商品目录》(Whole Earth Catalog)的杂志,内容从植物种子到电子仪器,无所不包,出版目的据说是要帮助读者"理解整个系统"(Understanding Whole Systems)。多年后,苹果公司的总裁乔布斯盛赞它"有点像印刷版的Google"。从某种意义上说,《黑客与画家》也是如此,这本书试图从许许多多不同的方面,解释这个时代的内在脉络,揭示它的发展轨迹,帮助你看清我们现在的位置和将来的方向。
二、
电子技术的发展,使得计算机日益成为人类社会必不可少的一部分。
每个人的日常生活,很大一部分都在与计算机打交道。家用电表是智能的,通信网络是程控的,信用卡是联网的,就连点菜都会用到电子菜单。越来越多的迹象表明,未来的人类生活不仅是人与人的互动,更多的将是人与计算机的互动。
想要把握这个时代,就必须理解计算机。理解计算机的关键,则是要理解计算机背后的人。表面上,这是一个机器的时代。但是实际上,机器的设计者决定了我们的时代。程序员的审美,决定了你看到的软件界面;程序员的爱好,决定了你有什么样的软件可以使用。
我们的时代是程序员主导的时代,而伟大的程序员,就是黑客。
《黑客与画家》这本书,就是帮助你了解黑客、从而理解这个时代的一把钥匙。
三、
在媒体和普通人的眼里,"黑客"就是入侵计算机的人,就是"计算机犯罪"的同义词。但是,这并不是它的真正含义(至少不是原意),更不是本书所使用的含义。
要想读懂这本书,首先就必须正确理解什么是"黑客"。
为了把这个问题说清楚,有必要从源头上讲起。1946年,第一台电子计算机ENIAC在美国诞生,从此世界上一些最聪明、最有创造力的人,开始进入这个行业,在他们身上,逐渐地形成了一种独特的技术文化。在这种文化的发展过程中,涌现了很多"行话"(jargon)。60年代初,麻省理工学院有一个学生团体,叫做"铁路模型技术俱乐部"(Tech Model Railroad Club,简称TMRC),他们把难题的解决方法称为hack。
在这里,hack作为名词,有两个意思,既可以指很巧妙或很便捷的解决方法,也可以指比较笨拙、不那么优雅的解决方法。两者都能称为hack,不同的是,前者是漂亮的解决方法(cool hack或neat hack),后者是丑陋的解决方法(ugly hack或quick hack)。hack的字典解释是砍(木头),在这些学生看来,解决一个计算机难题,就好像在砍下一棵大树。那么相应地,完成这种hack的过程就被称为动词hacking,而从事hacking的人就是hacker,也就是黑客。
从这个意思出发,hack还有一个引申义,指对某个程序或设备进行修改,使其完成原来不可用的功能(或者禁止外部使用者接触到的功能)。在这种意义上,hacking可以与盗窃信息、信用卡欺诈或其他计算机犯罪联系一起,这也是后来"黑客"(hacker)被当计算机入侵者的称呼的原因。
但是,在六十年代这个词被发明的时候,"黑客"完全是正面意义上的称呼。TMRC使用这个词,带有敬意,因为在他们看来,如果要完成一个hack,就必然包含着高度的革新、独树一帜的风格、精湛的技艺。最能干的人会自豪地称自己为黑客。
这时,"黑客"这个词不仅是第一流能力的象征,还包含着追求解决问题过程中产生的精神愉悦或享受。也就是说,从一开始,黑客就是有精神追求的。自由软件基金会创始人Richard Stallman说:
"出于兴趣,解决某个难题,不管它有没有用,这就是黑客。" (Playfully doing something difficult, whether useful or not, that is hacking.)
四、
根据Richard Stallman的说法,黑客行为必须包含三个特点:好玩(playful)、高智商(cleverness)、探索精神(exploration)。只有行为同时满足这三个标准,才能被称为"黑客"。另一方面,它们也构成了黑客的价值观,黑客追求的就是这三种价值,而不是实用性或金钱。
1984年,《新闻周刊》的记者Steven Levy出版了历史上第一本介绍黑客的著作《黑客:计算机革命的英雄》(Hackers: Heroes of the Computer Revolution)。
在该书中,他进一步将黑客的价值观,总结为六条"黑客伦理"(hacker ethic),直到今天都被视为这方面的最佳论述:
1.使用计算机,不应受到任何限制。任何事情都应该亲手尝试。(Access to computers--and anything that might teach you something about the way the world works--should be unlimited and total. Always yield to the Hands-On Imperative!)
2.信息应该全部免费。(All information should be free.)
3.不信任权威,提倡去中心化。(Mistrust Authority--Promote Decentralization.)
4.判断一个人应该看他的技术能力,而不是看其他标准。(Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.)
5.你可以用计算机创造美和艺术。(You can create art and beauty on a computer.)
6.计算机使生活更美好。(Computers can change your life for the better.)
根据这六条"黑客伦理",黑客价值观的核心原则可以概况成这样几点:分享(Sharing)、开放(Openness)、民主(Decentralization)、计算机的自由使用(Free access to computers)、进步(World Improvement)。
所以,"黑客"这个词的原始含义,就是指那些信奉"黑客伦理"、而且能力高超的程序员。历史上一些最优秀的程序员,都是"黑客"。除了上文提到的Richard Stallman,还包括Unix操作系统创始人Dennis Ritchie和Ken Thompson、经典巨著《计算机程序设计的艺术》的作者斯坦福大学计算机教授Donald Knuth、Linux操作系统创始人Linus Torvalds、"开源运动"创始人Eric S. Raymond、微软公司创始人Bill Gates等等。正是黑客把计算机工业推向了更高的高度。
五、
"黑客伦理"的一个必然推论,就是黑客不服从管教,具有叛逆精神。
黑客通常对管理者强加的、限制他们行为的愚蠢规定不屑一顾,会找出规避的方法。一部分原因是为了自由使用计算机,另一部分原因是为了显现自己的聪明。比如,计算机设备的各种安全措施,就是最常被黑客破解的东西。Steven Levy对这一点,有过一段生动的描述:
"对于黑客来说,关着的门就是一种挑衅,而锁着的门则是一种侮辱。......黑客相信,只要有助于改进现状、探索未知,人们就应该被允许自由地使用各种工具和信息。当一个黑客需要一样东西,来帮助自己创造、探索、或者改正某种设备时,他不会自找麻烦,接受那些财产专有权的荒谬概念。"
这就是黑客有时会入侵计算机系统的原因,他们的主要目的并不是侵犯别人的利益,这与那些计算机罪犯是不同的。
但是,上个世纪80年代初,事情发生了变化。
1983年,一帮密尔沃基州的青少年黑客入侵了美国和加拿大的一些计算机系统,这件事被广泛报道,同年9月5日的《新闻周刊》(Newsweek)封面报道的标题就是"小心:黑客在行动"(Beware: Hackers at play),这是历史上主流媒体第一次使用"黑客"这个词。在报道的时候,媒体只注意和强调黑客行为一个很窄的方面:入侵系统。(可能因为这种行为容易引起公众的注意,提升报道的关注度。)他们把黑客简单定义为:入侵系统、破坏安全设施的人。从此,大多数人对于黑客有了错误的看法。同时,那些入侵计算机的程序员也自称"黑客",使得这个问题进一步变得复杂。
杂志、电视剧、电影、小说都对黑客的这种形象大肆渲染。黑客成了反社会的技术高手的代名词,仿佛只要他坐在键盘前,就有一种从事犯罪活动的魔力,可以操纵任何与网络相连的机器,从核弹到车库大门,都在黑客敲打键盘的操作之中被控制。根据这种观点,黑客在最好的情况下是一个没有认识到自己能力的清白的人,在最坏的情况下则是一个恐怖分子。在过去几年中,随着计算机病毒的泛滥,黑客在大众心目中已经成了一种有害的人群。
那些传统意义上的黑客,不认同这样使用"黑客"这个词。他们认为,历史上确实有一些正直的黑客,为了亲自动手了解系统,做过违反法规的入侵举动。但是,那些人并没有恶意,而且从一开始,恶作剧就是黑客文化的一部分,仅仅由此推断入侵和破坏系统就是黑客文化的实质,完全是错误的观点。真正的黑客,致力于改变世界,让世界运转得美好。媒体对黑客的定义,未免过于片面。
为了澄清"黑客"这个概念,他们提出只有传统意义上的黑客,才能被称为hacker,而那些恶意入侵计算机系统的人,应该被称为cracker(入侵者)。这个观点已经在程序员社区中,得到普通认同。
《黑客与画家》正是在这个意义上,使用"黑客"这个词。在本书中,"黑客"就是指最优秀的程序员,而不是入侵计算机系统的人。
六、
为了帮助读者理解黑客,全书十五章可以大致分成三个部分。
第一部分:从第一章到第四章,解释了黑客是如何成长的,以及他们看待世界的一些观点。
第二部分:从第五章到第九章,解释了黑客怎样做出自己的成果,这些成果又是怎样对全世界产生了影响。
第三部分:从第十章到第十五章,解释了黑客的工具(编程语言)和工作方法,这是黑客文化的基础和核心。
Paul Graham想让公众了解,黑客并不神秘,更不是技术怪人。《黑客与画家》这个书名,就是在提示应该把黑客与画家当作同一种人看待。和画家一样,黑客只是怀有一门特殊手艺、有创造天赋的普通人。这个书名还有另一层含义,提出编程是一种艺术创作,黑客就是艺术家,开发软件与画家作画、雕塑家雕刻、建筑师设计房屋并没有本质不同。
总之,这是一本帮助你理解这个时代的书。Paul Graham想教给你的,其实是新思想。读完以后,你看待世界的眼光,很可能会完全不同。如果你想在21世纪立足,理解这一次新的技术革命,做一个掌握自己命运的成功者,我建议你读这本书。
师北宸:数字时代的手工艺人
文/ 师北宸 (科技专栏作者)
《黑客与画家》是一本为黑客正名的技术散文集。一提到“熊猫烧香”、网络游戏盗号木马以及某某公司网站系统被人入侵的消息,人们总会联想到是“黑客”干的。实际上,黑客的本意并非如此。在计算机世界中,“黑客”(hacker)指专家级程序员,“黑客”象征着第一流的能力,以及求解问题过程中产生的精神愉悦或享受。他们崇尚分享、开放、民主、计算机的自由使用和进步。而那些恶意入侵计算机系统的人更应该被称为cracker(骇客)。
1984年,《新闻周刊》记者史蒂文·列维(Steve Levy)出版了历史上第一本介绍黑客的著作——《黑客:计算机革命的英雄》(Hackers: Heroes of the Computer Revolution),在该书中,他将黑客的价值观总结为六条「黑客伦理」(hacker ethic):
1)使用计算机以及所有有助于了解这个世界本质的事物都不应受到任何限制。任何事情都应该亲手尝试。
2)信息应该全部免费。
3)不信任权威,提倡去中心化。
4)判断一名黑客的水平应该看他的技术能力,而不是看他的学历、年龄或地位等其他标准。
5)你可以用计算机创造美和艺术。
6)计算机使生活更美好。
因为作者初衷并非写给纯技术人员阅读,所以书中谈论了包括如何学习、编程与艺术的关系、言论自由、创造财富、创业、品味和技术等众多话题,他希望除了帮助对编程有兴趣的人成为黑客以外,还能引起更多非技术读者的思考。
保罗·格雷厄姆在哈佛大学一拿到计算机科学博士,就到罗德岛设计学院和佛罗伦萨学习绘画,以期有朝一日实现自己的画家梦,中学写小说以及大学研修哲学的经历,使得他对编程和创业有着与其他黑客不一样的见解。在他看来,仅仅精通编程语言和会开发软件并不能作一名合格的黑客,真正的黑客必须重视言论自由,拥有设计师的品味,通过创造而非掠夺来积累财富,坦然接受自己某些诸如可能因不善交际而不受欢迎的特点。
在罗德岛设计学院和佛罗伦萨美术学院学习绘画的保罗·格雷厄姆(Paul Graham)或许从来没有想过,有一天他会因画画无法维生而只好去作程序员。因为他成功的创业经历和对创业的思考,以及在他随后开办的创业训练营培育出众多成功创业公司而使他逐渐成为一位硅谷的创业教父。他将黑客比作“手工艺人”,让人们对黑客是否能称为伟大艺术家一类的职业有了更多的期望。
为什么创业公司比大公司更有优势
到目前为止,从 Y Combinator “毕业”的创业公司已有200多家,已经失败的公司不到20%,而互联网创业的平均失败率是90%。《福布斯》杂志据此将保罗·格雷厄姆视为“撼动硅谷的人”。为什么格雷厄姆的 Y Combinator 能如此高效地孵化出成功的创业公司?
他给创业公司的内部运作和管理提了很多建议。比如,大公司内部最好的内部网(intranet)其实就是互联网(internet)。想一想吧,国内很多企业开发自己的内部邮箱系统,不仅速度慢,容量小,体验差,还要花不少钱和人力去开发和维护,而Gmail可以直接拿过来用。什么事情可以外包,什么事情不能外包?格雷厄姆提供的一个可能的答案是:公司内部所有不直接感受竞争压力的部门都应该外包出去,让它们暴露在竞争压力之下。
大的软件公司可以雇到能干的人,让他们去干轻松的事情,也可以雇到不能干的人,让他们去干艰苦的事情,但是无法雇到非常能干的人,让他们去干非常艰苦的事情。由于大公司会使得每个员工的贡献平均化,导致员工即使再努力工作也很难准确估量自己的工作成绩,这使得优秀员工更容易懈怠,从而拖慢整个公司的效率。而这是创业公司的机会。
在面对大公司的正面竞争和挑战的时候,创业公司应该如何制胜?格雷厄姆提出了“更上一层楼”法则:
假定你是一个身手敏捷的小男孩,身后有一条壮硕的大狗正在追你,你跑到楼梯口,这时应该上楼还是下楼?应该上楼。如果下楼的话,大狗可能跑得跟你一样快。上楼的话,大狗的庞大身躯就将成为劣势。不错,跑上楼你会比较吃力,但是大狗会感到更加吃力。
在实际操作中,这就意味着我们故意选择那些很困难的技术问题。假定软件有两个候选的新功能,它们创造的商业价值完全相同,那么我们总是选择比较困难的那个功能。不是因为这个功能能带来更多的收入,而是因为它比较难。我们很乐于迫使那些又大又慢的竞争对手跟着我们一起走进沼泽地。创业公司就像游击队一样,喜欢选择不易生存的深山老林作为根据地,政府的正规军无法追到那种地方。
黑客:数字时代的手工艺人
程序员因为常常埋头于编程,而没有更多的时间精力去与学习如何与别人相处。这常常导致他们看起来有点“呆”——就像书呆子经常只和书打交道一样,程序员大部分时间只对着计算机屏幕。——这往往导致他们在学校的时候不受同龄人欢迎。在保罗·格雷厄姆看来,书呆子们并非不想让自己不受欢迎,他们只是更愿意让自己聪明。在他们看来,聪明远远比受欢迎更重要。
在一本谈论黑客的书里,格雷厄姆花了大篇幅谈论公民自由的重要性。为什么公民自由很重要?严谨的格雷厄姆会用数据图表式的语言来描述:“如果将人均国民生产总值与公民自由的关系画成图,你会发现它们是很清楚的正相关关系。”或者,他也会引经据典来阐述他的观点:“如果读美国开国元勋的自述,你会发现他们听起来很像黑客。‘反抗政府的精神’,杰弗逊写道,‘在某些场合是如此珍贵,我希望它永远保持活跃。’”
编程像绘画。几乎所有的美术老师都会告诉你,画画的时候应该快速地用几条线画出一个大致准确的轮廓,然后再逐步地加工草稿。在大多数艺术领域,原型使用的材料与成品的材料一般来说是不一样的。印刷活字先画在纸上,然后才做成铅字。雕塑先用石蜡创作,然后采用青铜浇铸。地摊团先用墨水画成纸型,然后才织成地毯。建筑物先做出木模型,然后才做成石头建筑。编程也一样,应该尽快写出能运行的代码,发布到网上。编程像文学,E.B.怀特说:好的文字来自不停地修改。编程也类似,软件发布到网上后,需要根据用户反馈逐步优化。但开发软件的时候,必须恪守一条基本规则:任何时候,代码都必须能够运行。
黑客要有品味。如何做出优秀的产品?发现丑陋的东西要比你想象出一个优美的东西更容易。大多数做出优美成果的人好像只是为了修正他们严重丑陋的东西。“这样解决太糟糕了!一定有更好的选择。”不要忽视这种声音,要培育它们。优秀作品的秘诀就是:非常严格的品味,再加上实现这种品味的能力。此外,士气也是产品设计的一个关键因素。如果你觉得开发某样东西很乏味,那么你开发出来的东西就会真的很乏味。这也可以解释为什么程序员和设计师很难为低端用户设计和开发出优秀的产品。
当今时代,其他行业的人,都必须依附于流水线的工业化生产才能谋生,除了艺术家,几乎只有程序员可以靠个人手艺谋生。程序员就是数字时代的手工艺人。如果编程与绘画和写作是同一类工作,黑客是否有机会像伟大艺术家一样备受尊崇、流芳百世?“很遗憾,这个问题很难回答。”格雷厄姆说。
17世纪以前,大多数富人积累财富的方式主要是通过偷窃(战争,征税,贪污),工业革命以后,技术的发展使得通过创造积累财富的速度第一次超过通过偷窃积累财富的速度。17世纪的英国,当官是最能发财的职业;到了19世纪,大多数富人已经变成了实业家,而政府逐渐被将良心和名誉看得比金钱更重要的人所主导。
“在达·芬奇的年代,绘画并不是一件很酷的事情,达·芬奇用自己的工作推动绘画成为一种伟大的表达方式。同样,编程到底能够有多酷,取决于我们能够用这种新媒介做出怎样的工作。”我们不知道如今的黑客是否会流芳百世,但我们可以看到,如同艺术家一样,这些数字时代的手工艺人正在创造世界。
(发于《商业价值》)