第1章

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

译者序

你现在拿在手里的,是一本非常重要、也๣非常独特的书๰。

它的作者是美国互联网界ศ举ะ足轻重、有“创น业教父”之ใ称的哈佛大学计算机博士保罗·格雷厄姆paulgrahaທm。本书是他的文集。

书中ณ的内容并不深奥,不仅仅是写给程序员和创业者的,更是写给普通读者的。作者最大的目的就是,通过这本书让普通读者理解我们所处的这个ฐ计算机时代。

1968年至19๗72年期间,美国出版过一本叫做《地球商品目录》9holeearthcatalog的杂志,内容从植物种子到เ电子仪器,无所不包,出版目的据说是要帮助读者“理解整个ฐ系统”。多年后,苹果公司的总裁é乔布斯ั盛赞它“有点像印刷版的谷歌”。从某种意义上说,本书也是如此,作者试图从许许多多不同的方面解释这个时代的内在脉ำ络,揭示它的展轨迹,帮助你看清我们现在的位置和将来的方向。

电子技术的展,使得计算机日益成为人类社会必不可少的一部ຖ分。

每个人日常生活的很大一部分都花在与计算机打交道上面。家用电表是智能的,通信网络是程控的,信用卡是联网的,就连点菜都会用到电子菜单。越来越多的迹象表明,未来的人类生活不仅是人与人的互动,而且更多的将是人与计算机的互动。

想要把握这个时代,就必须理解计算机。理解计算机的关键,则是要理解计算机背后的人。表面上这是一个机器的时代,但是实际上机器的设计者决定了我们的时代。程序员的审美决定了你看到的软件界ศ面,程序员的爱好决定了你有什么样的软件可以使用。

我们的时代是程序员主ว导的时代,而伟大的程序员就是黑客。

本书๰就是帮助你了解黑客、从而理解这个时代的一把钥匙。

在媒体和普通人的眼里,“黑客”hacນker就是入侵计算机的人,就是“计算机犯罪”的同义词。但是,这并不是它的真正含义至少不是原意,更不是本书所使用的含义。

要想读懂这本书,先就必须正确理解什么เ是“黑客”。

为ฦ了把这个问题说清楚,有必要从源头上讲起。1946年,第一台电子计算机eniaທcນ在美国诞生,从此世界上一些最聪明、最有创น造力的人开始进入这个行业,在他们身上逐渐地形成了一种独特的技术文化。在这种文化的展过程中ณ,涌现了很多“行话”jaທrgon。20่世纪60่年代初,麻省理工学院有一个学生团体叫做“铁ກ路模型技术俱乐部ຖ”tecນh摸delrailroaທdclub,简称tmrcນ,他们把难题的解决方แ法称为haທcນk。

在这里,hack作为ฦ名词有两个意思,既可以指很巧ู妙或很便捷的解决方法,也可以指比较笨拙、不那么优雅的解决方法。两ä者都能称为ฦhack,不同的是,前者是漂亮的解决方แ法9eathacນk,后者是丑陋的解决方法uglyhack或quickhack。hacນk的字典解释是砍木头,在这些学生看来,解决一个计算机难题就好像砍倒一棵大树。那么相应地,完成这种haທ9g,而从事ha9g的人就是hacker,也๣就是黑客。

从这个ฐ意思出,haທcນk还有一个引申义,指对某个ฐ程序或设备进行修改,使其完成原来不可用的功能或者禁止外部使用者接触到的功能。在这种意义上,ha9g可以与盗窃信息、信用卡欺诈或其他计算机犯罪联系在一起,这也是后来“黑客”被当作计算机入侵者的称呼的原因。

但是,在2๐0世纪6๔0年代这个词被明的时候,“黑客”完全是正面意义上的称呼。tmrc使用这个词是带有敬意的,因为ฦ在他们看来,如果要完成一个ฐhaທck,就必然包含着高度的革新、独树一帜ຒ的风格、精湛的技艺。最能ม干的人会自豪地称自己้为黑客。

这时,“黑客”这个词不仅是第一流能力的象征,还包含着求解问题过程中产生的精神愉悦或享受。也就是说,从一开始,黑客就是有精神๰追求的。自由软件基金会创น始人理查德·斯托尔曼说:“出于兴趣而解决某个难题,不管它有没有用,这就是黑客。”

根据理查德·斯托尔曼的说法,黑客行为必须包含三个ฐ特点:好玩、高智商、探索精神。只有其行为同时满足这三个标准,才能被称为“黑客”。另一方面,它们也构成了黑客的价值观,黑客追求的就是这三种价值,而不是实用性或金钱。

1984年,《新闻周刊》的记者史蒂文·利维出版了历史上第一本介绍黑客的着作——《黑客:计算机革命的英雄》haທckers:heroesoftheputerrevolution。在该书中,他进一步将黑客的价值观总结为ฦ六条“黑客伦理”hackerethic,直到เ今天这几条伦理都被视为ฦ这方面的最佳论述。

1使用计算机以及所有有助于了解这个世界本质的事物都不应受到เ任何限制。任何事情都应该亲手尝试。

aesstoputers—aທndanythingthatmightteaທ9๗gaboutthe9aythe9orld9orks—shouldbຘeunlimitedandtotalal9๗aysyieldtothehands-onimperaທtive!

2信息应该全部免费。

allinformationshouldbefree

3不信任权威แ,提倡去中ณ心化。

mistrustauthority—pro摸tede9

4๒判ศ断一名黑客的水平应该看他的技术能力,而不是看他的学历、年龄或地位等其他标准。

hackersshouldbຘejudgedbຘytheirha9๗otboguscriteriasuchasdegrees,age,ra9๗

5你可以用计算机创造美和艺术。

you9dbeaທutyonaທputer

6计算机使生活更美好。

puters9geyourlifeforthebetter

根据这六条“黑客伦理”,黑客价值观的核心原则可以概括成这样几点:分享、开放、民主、计算机的自由使用、进步。

所以,“黑客”这个词的原始含义就是指那些信奉“黑客伦理”而且能力高的程序员。历史上一些最优秀的程序员都是“黑客”。除了上文提到的理查德·斯托尔曼,还包括unix操作系统创始人丹尼斯ั·里奇和肯·汤普森,经典巨着《计算机程序设计艺术》的作者、斯坦福大学计算机教授高德纳,linux操作系统创始人莱纳斯·托沃兹,“开源运动”创น始人埃里克·雷蒙德,微软公司创始人比尔·盖茨等。正是黑客把计算机工业推向了更高的高度。

“黑客伦理”的一个ฐ必然推论就是,黑客不服从管教,具有叛逆精神。

黑客通常对管理者强加的、限制他们行为的愚蠢规定不屑一顾,会找出规避的方法。一部分原因是为了自由使用计算机,另一部ຖ分原因是为了显现自己的聪明。比如,计算机设备的各种安全措施就是最常被黑客破解的东西。史蒂文·利维对这一点有过一段生动的描述:

“对于黑客来说,关着的门就是一种挑衅,而锁着的门则是一种侮辱。……黑客相信,只要有助于改进现状、探索未知,人们就应该被允许自由地使用各种工具和信息。当一个黑客需要一样东西来帮助自己创造、探索或者改正某种设备时,他不会自找麻烦,不会接受那些财产专有权的荒谬概念。”

这就是黑客有时会入侵计算机系统的原因,他们的主要目的并不是侵犯别人的利益,这与那些计算机罪犯是不同的。

但是,20世纪8๖0年代初,事情生了变化。

1983年,一帮密尔沃基市的青少年黑客入侵了美国和加拿大的一些计算机系统,这件事被广泛报道,同年9月5๓日຅的《新闻周刊》封面报道的标题就是“小心:黑客在行动”,这是历史上主流媒体第一次使用“黑客”这个词。在报道的时候,媒体只注意和强调黑客行为ฦ一个ฐ很窄的方แ面:入侵系统。可能因为这种行为容易引起公众的注意,提升报道的关注度。他们把黑客简单定义为入侵系统、破坏安全设施的人。从此,大多数人对于黑客有了错误的看法。同时,那些入侵计算机的程序员也自称“黑客”,使得这个问题๤进一步复杂化。

杂志、电视剧、电å影、都对黑客的这种形象大肆渲染。黑客成了的技术高手的代名词,仿佛只要他坐在键盘前,就有一种从事犯罪活动的魔力,可以操纵任何与网络相连的机器,从核弹到车库大门,都在黑客敲打键盘的操作之ใ中ณ被控制。根据这种观点,黑客在最好的情况下是一个没有认识到เ自己能力的清白的人,在最坏的情况下则是一个恐怖分子。在过去几年中,随着计算机病毒的泛滥,黑客在大众心目中ณ已经成了一个ฐ有害的人群。

那些传统意义แ上的黑客不认同这样使用“黑客”这个词。他们认为,历史上确实有一些正直的黑客,为了亲自了解系统,做过违反法规的入侵举动。但是,那些人并没有恶意,而且从一开始恶作剧ຕ就是黑客文化的一部分,仅仅由此推断ษ入侵和破坏系统就是黑客文化的实质完全是错误的。真正的黑客致力于改变世界,让世界ศ运转得美好。媒体对黑客的定义未免过于片面。

为ฦ了澄清“黑客”这个概念,他们提出只有传统意义แ上的黑客才能ม被称为hacker,而那些恶意入侵计算机系统的人应该被称为ฦcraທcker入侵者。这个观点已经在程序员社区中得到普通认同。

本书๰正是在这个意义แ上使用“黑客”这个ฐ词。在本书中ณ,“黑客”就是指最优秀的程序员,而不是入侵计算机系统的人。

为了帮助读者理解黑客,全书15๓章可以大致分成三个部ຖ分。

·第一部分从第1้章到เ第4章,解释了黑客是如何成长的以及他们看待世界的一些观点。

·第二部分从第5章到第9๗章,解释了黑客怎样做出自己้的成果,这些成果又是怎样对全世界ศ产生了影响。

·第三部分从第1้0章到第1้5章,解释了黑客的工具编程语言和工作方แ法,这是黑客文化的基础和核心。

作者想让公众了解,黑客并不神秘,更不是技术怪人。ha9ters这个书๰名就是在提示应该把黑客与画ฑ家当作同一种人看待。和画ฑ家一样,黑客只是怀有一门特殊手艺、有创造天赋的普通人。这个书名还有另一层含义,即编程是一种艺术创作,黑客就是艺术家,开软件与画家作画、雕塑家雕刻๑、建筑师๲设计房屋并没有本质不同。

总之ใ,这是一本帮助你理解这个时代的书๰。作者想教给你的其实是新า思想。读完以后,你看待世界的眼光很可能会完全不同了。如果你想在21้世纪立足,理解这一次新า的技术革命,做一个掌握自己้命运的成功者,我建议你读这本书๰。

翻译过程中,我已经尽了最大努力,力求把原文忠实、清晰地译成中ณ文。本书的一些章节中作者谈论的都是计算机行业的专业问题๤,但是他又希๶望让普通读者看懂ฦ,试图用口语化、生活化的语言解释专业概念,我个人感觉效果不太理想,反而使得行文稍显冗余和模糊,这一点提醒读者注意。总的来说,这是一本计算机行业的经典着作,2004年在美国出版后一直畅销不衰,深受好评,很多读者都被作者的远见卓识所折服。

最后,本书第1้3๑章涉及lisp语言的部ຖ分曾请田à春帮助校译,在此表示衷心感谢。

阮一峰

2010年1้2月25๓日຅,写于上海

前言

本书๰尝试解释计算机世界里生了什么เ事,所以,它不仅仅是写给程序员看的,也适合所有人。比如,第6章讲如何致富,我相信这是所有读者普遍感兴趣的内容。

你可能注意到了,过去三十年中,很多赚到大钱๥的人都是程序员,比如比尔·盖茨、史蒂夫·乔布๧斯、拉里·埃里森。为什么เ?为什么是程序员,而不是土木工程师,或者摄影师,或者精算师?第6๔章将告诉你答案。

软件带来财富,仅仅代表了大趋势的一面而已。这种大趋势就是本书๰的主ว题。我们的时代是计算机时代。以前,人们曾经认定这个时代应该是太空时代或者原子时代。但是事实证明,它们只是公关公司明的概念。计算机对人类生活的影响远远过了太空航行或者原子技术的影响。

我们生活中的一切,都正在成为计算机。打字机被计算机取代了,电话也变成了计算机,照相机亦是如此。很快,电视机也๣将变成计算机。当今小轿车所具备的计算能力比1970่年占满一间屋子的大型计算机还要强。信件、百科全书、报纸,甚至本地的小店,都正在被互联网取代。所以,如果你想理解我们目前๩的世界以及它的未来动向,那ว么多了解一些黑客的想法会对你有帮助。

黑客?那不是侵入他人计算机的人吗?在外行人看来,这个词的意思就是这样。但是在计算机世界ศ中,黑客指的是专家级程序员。因为本书๰的目的是解释真实的计算机世界是怎么一回事,所以我决定冒着被误解的风险,按照行业内的定义使用这个ฐ词。

本书的前几章回答了一些大家可能ม都想过的问题。怎样创业才会成功?技术是否造成了技术人员与普通人之ใ间的隔阂?程序员到底在做些什么?为什么เ那ว些读高中ณ时普普通通的学生,最终却摇身一变成为世界上最有影响力的人士?微软公司会控制ๆ互联网吗?怎样才能对付垃圾邮件?

本书后面几章谈的是大多数非计算机行业的人士没有想过的问题——编程语言。为ฦ什么普通人要去关心编程语言?因为如果你想了解黑客,就必须懂一点编程语言。这就好比回到188๖0年,如果你想理解技术展,就必须ี懂一点蒸汽机。

计算机程序只是文本而已๐。你选择什么语言,决定了你能说什么话。编程语言就是程序员的思维方แ式。

因此很自然,编程语言对程序员的思想有巨大的影响。你从他们写的软件中就可以看出来。旅游网站or逼tz成功打入了竞争激烈的网络订房订票市场。该市๦场原先被两ä大巨头主宰,一个是微软公司,另一个ฐ是拥有数十年电子预定服务经验的sae。or逼tz是怎么从它们手中ณ抢到市场的?最主ว要的原因就是它使用了一种更好的编程语言。

根据使用的语言不同,程序员往往会被分成不同的派别。人们区分程序员甚至不是看他们写了什么程序,而是看他们使用什么语言。所以,声称一种语言优于另一种语言被认为ฦ是不礼貌的行为。但是,没有一个编程语言的设计者会相信“不同的语言各有千秋”这种文绉绉的客套话。我将直言不讳地说出自己对于编程语言的看法,这也๣许会令很多人不快,但是如果想要理解黑客,我真的觉得没有其他更好的方法。

有些读者可能ม不理解第3章的内容。这一章与计算机有什么เ关系?事实是黑客很在乎言论自由。slashdot它是黑客世界ศ的《纽约时报》有一个专栏讨论这个问题๤。我想slashdot的大多数读者都认为ฦ重视言论自由á是天经地义的事情。不过《飞机与飞行员》plane&pilot杂志就肯定不会有一个这样的栏目。

为什么黑客那ว么在乎言论自由?我认为,部分原因在于,革新对于软件行业实在是太重要了,而革新和异端实际上是同一件事。优秀的黑客养成了一种质疑一切的习๤惯。这是肯定的,因为如果你不得不同一台机器打交道,而这台机器全部由文字组成,像机械式手表一样复杂,并且规模大出10่0่0倍,那么你也会养成这种习惯的。

此外,我还认为,行为ฦ怪异的人和愤世嫉俗的人比普通人更可能成为黑客。计算机世界ศ就像是智力世界的大西部,在那ว里没有你不敢想的事情,只要你愿意承担冒险后果。

如果我成功实现了自己对这本书的设想,那么它也将是一片智力的大西部。我不希望你带着某种压迫感来阅读此书,心里想着:“没办法,这些书呆子看上去正在接管世界。我最好能ม懂ฦ一点他们正在干的事情,这样就不会被他们整出来的下一个东西唬到了。”如果你喜欢思考,阅读此书应该会带给你很多乐趣。虽然黑客从外表看上去一般都是呆呆的,但是他们的大脑内部却是一个ฐ有趣得让你吃惊的地方。

写于马萨诸塞州坎布里奇

2๐004年4月

1为ฦ什么书呆子不受欢迎

初中时,我和好友里奇画了一张学校食堂的餐桌分布图,每张桌子都标上了人气指数。这件事的难度并不高,因为选择坐在一起吃午饭的人,受瞩目程度往往都很接近。我们把所有桌子从a到เe分成五等。坐在aທ桌的人不是校足球队的成员,就是啦啦队的成员。而e桌的人好像都有一点轻微的唐氏综合征

,那ว时我们管这种症状叫“弱智”。

‘唐氏综合征do9n'ูssyndrome是一种先天性疾病,主要指幼儿的智力和体格育迟缓,特征为ฦ低智商、身材矮小、表情呆滞。1866๔年,英国民生唐·约翰·朗顿先现了这一疾病。——译者注’

我和里奇在d桌。一般来说,只要你不是外貌猥琐,这就是你能分到的最低档次的桌子了。我们把自己้的桌子列为d桌,倒不是故意谦虚,而是无຀法自欺欺人。因为学校里每个人的级别ี都是明摆着的,我们想骗自己้也骗不了。

我后来认识很多人,读书的时候都被称为书๰呆子。从他们身上我现,“书๰呆子”与“高智商”有强烈的正相关关系。而这些人在中学里都是不受欢迎的学生,你越喜欢读书,就越不受别ี人的欢迎,因此“书๰呆子”和“受欢迎”之ใ间,有一种更强烈的负相关关系。这样看来,“高智商”似乎导致了你不受欢迎。

为什么会这样?要是你眼下还在读中学,你一定会觉得这个问题很蠢。无可争议的事实就是,除了这样以外,似乎ๆ很难想象还能有什么别的结果。但是,的确会出现别样的情况。比如,在小学里,聪明的学生就没有受到排挤。再比如,毕业后踏上社会,聪明也๣不是一件坏事。而且,据我所知,在大多数国家,事情也没有如此严重。只有在典型的美国中学,做一个聪明的学生才是一件麻烦事,你的日子会很不好过。这究竟为什么เ?

解开这个谜的关键是把问题换一种提法。为什么เ聪明的小孩没有让自己变得受欢迎?如果他们真的很聪明,为什么找不到เ受欢迎的诀窍呢?他们在标准化测试中表现得这么好,为什么就不能在这方面也大获成功呢?

有一种观点认为,其他小孩妒忌聪明学生,所以聪明的学生不可能受到欢迎。我倒希望这种解释是对的。回想起来,要是初中ณ里真的有人妒忌我,那ว么เ他们一定费了很大力气才把这种妒忌隐藏得无法现。而且,在任何情况下,如果聪明真的令他人妒忌,这反而会招来女生。因为ฦ女生喜欢被其他男生妒忌的男生。

在我就读过的学校,聪明根本就是无຀足轻重的一样东西。同学们既不看重它,也๣不唾弃它。如果别ี的事情都相同,那么大家还是愿意自己变得聪明一点,因为这总比做个笨人好。但是总的来说,智力在大家心里的分量远远不如相貌、魅力和运动能力的分量重。

所以,如果智力本身与“受欢迎”无关,为ฦ什么聪明的小孩一直不受同龄人的欢迎呢?我认为,答案就是他们真的不想让自己้受欢迎。

如果当时有人告诉我这个答案,我一定会嘲笑他。在学校里不受欢迎,你的日子就很难过,有人甚至因此自杀。所以,要是你跟我说,是我本人不想受欢迎,那ว就好比你在说,我在沙漠里快渴死了,却又不想喝水。别搞错了,让自己้更受欢迎,这才是我要的。

但是事实上,我并不是那么强烈地渴望这个。我更想追求的是另一件事情——聪明。这不仅仅意味着在学校得到好成绩虽然某种程度上这也挺重要。我真正想要的是,能ม够设计奇妙的火箭、写出漂亮的文章、理解编程原理。一句话,我想要做伟大的事情。

那时,我从没试过将想分门别类、一一排序。要是我真做了,就会一眼看出聪明是排在最前面的。如果有人许诺,使我一举成为ฦ全校最受瞩目的学生,代价是从此智力平庸请允许我在这里自命不凡,我是绝不会答应的。

虽然“书呆子”饱尝不受欢迎之苦,但是为了解除痛苦而让他们放弃“聪明”,我想大多数人是不会愿意的。对他们来说,平庸的智力是不可忍受的。不过,要是换了别的孩子,情况就不一样了,大多数人会接受这笔交易。对于很多人来说,这反而是更上一层楼的机会。即使是那些智力排名在前2๐0่%的学生我在这里假设智力可以测量,那ว时的人们似乎都相信这一点,谁不愿意用30่分的成绩换来别ี人的友爱和钦佩?

我认为,这就是问题的根源。“书呆子”的目标具有两ä重性。他们毫无຀疑问想让自己受欢迎,但是他们更愿意让自己้聪明。“受欢迎”并不是你在课后时间随便做一做就能实现的,尤其是在美国的中学中,在这里,所有人为了个人魅力都会进行激烈竞争。

文艺复兴时期的代表人物阿尔伯蒂

有一句名言:“任何一种艺术,不管是否重要,如果你想要在该领域出类拔萃,就必须全身心投入。”

我很想知道,世界上是否还有人比美国的中学生在塑造个人魅力方แ面更加孜孜不倦、精益求精。相比之下,美国海ร军的海豹突击队navy色als成员和神๰经外科的住院医生

都成了懒汉。他们至少还有假期,有些人甚至还有业余爱好。但是,一个ฐ美国的青少年在醒着的每一分钟,都在琢磨怎样才能更受欢迎,一年365天,天天如此。

‘阿尔伯蒂leonbattistaalberti,14๒04年2๐月18日—147๕2年4๒月20่日是文艺复兴时期意大利的一位通才,在建筑、文学、艺术、宗教、哲学、语言学、密码学等领ๆ域都有重大建树,被视为“文艺复兴人”renaissan9,指多才多艺的人物的典型代表。——译者注’

‘出自leonbattistaທalberti所着的theu色aທndabຘu色ofbooks《论书๰籍的正常使用与滥用》1้9๗99年出版。’