http://www.0x08.org/docs/hacker-howto.html#hacker-howto
埃里克·史蒂文·雷蒙德
Copyright © 2001 Eric S. Raymond 翻译:柯非, < zer4tul@gmail.com > 这篇译文基于2015.07.19更新的原文修订版1.50。 如果对译文有任何意见或者建议,请发Issue,或直接发Pull Request给我。
为何会有这篇文档 身为新黑客词典(The Jargon File)和许多其他广为人知的同类文章的作者,我常收到热心的网络新人的电子邮件,问及(大意上是)“如何成为一名魔法师似的黑客?”。1996年的时候我注意到这个重要的问题并没有相关的FAQ或文档页面,所以我写了一份。许多黑客认为这篇文章是权威的,我觉得它应该是吧。此外,我不会寻求在这个话题上的独立著作权,如果你不喜欢在这里读到的内容,自己写一篇吧。 如果你是在离线阅读本文,可以在http://catb.org/~esr/faqs/hacker-howto.html找到本文的最新版本。(译注:本文的最新中文版可以在这里找到) 注意:本文的末尾有一系列常见问题。请在向我发邮件询问关于本文的任何问题前 再三阅读。 目前本文有许多语言的翻译版:阿拉伯语,白俄罗斯语, 中文,捷克语,丹麦语,荷兰语,爱沙尼亚语,德语,希腊语,意大利语,希伯来语,挪威语, 波斯语,巴西葡萄牙语,罗马尼亚语,西班牙语,土耳其语,瑞典语。请注意,由于本文不定期更新,这些翻译版可能存在不同程度的过时。 本文里九宫格中的5个黑点的装饰图被称作glider。这是一个使很多黑客多年痴迷的被称作康威生命游戏(LIFE)中,具有令人惊奇特性的简单图案。我认为它是很好的黑客精神徽章 —— 抽象,初见的时候感觉有点神秘,通过它复杂的逻辑可以通向整个世界。如果你想了解更多关于glider的信息,请看这里。 如果你觉得这篇文章有价值,请在Gittip上给我一点赞助。也请考虑赞助其他为你提供了有价值代码的黑客。小额的赞助也能够聚小流成江海,使为你提供帮助的人从繁重的劳动中解放出来,创造更多的价值。
什么是黑客? 新黑客词典(Jargon File)中有数个“黑客”的定义,主要形容”技术专才”或”有志解决问题及超越极限之人”。要成为黑客,有两个要点。 这可以追溯到几十年前第一台分时小型电脑诞生, ARPAnet 实验也刚展开的 年代,那时有一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群。 这种文化的成员创造了 “hacker” 这个词。他们建立了互联网,他们发明了现在使用的Unix操作系统。他们管理Usenet讨论组。他们令WWW运作。因此,若你有上述的特性及参与同类的社区,亦有对以上种种作出贡献,同时社区的人知你是谁又称你为“hacker”,你便是黑客。 然而,黑客的理念并非只局限於软件社区。有很多人将黑客的态度应用於其他事物,如电子或音乐上——实际上,黑客的理念存在於任何科学及文学。由於了解黑客的理念及精神,软件社区的黑客亦会称后者为黑客。有些人亦认为黑客的理念是独立於黑客所从事的媒体。然而,我们将在这篇文章专注讨论软件黑客的技巧,态度及传统。 另外,有一群人亦称自已为“黑客”,他们(多数是年青人)用电脑侵入其他电脑的系统作出破坏。黑客们称这群人为“Cracker(破坏者)”,亦不认同他们为黑客。多数黑客会认为Cracker是懒惰, 不负责任,不杰出的人。有能力侵入安全系统并不能使你成为黑客,正如可以用铁丝来偷车并不能使你成为汽车工程师一样。不幸的是很多作家及报道均称这群人为“黑客”。这一直使黑客们非常恼火。 黑客与Cracker的主要区别在于,前者搞建设,后者搞破坏。 如果你想成为一个黑客,请继续读下去。如果你只想做一个Cracker,请到alt.2600讨论组,并做好当你发现自己不如想象中聪颖的时候进5到10次监狱的准备。关于Cracker我就说这么多。
黑客的精神 世上仍有大量迷人的事情等待解决 同样的问题不应被重复处理两次 拒绝重复和沉闷的事情 自由万岁 精神不能代替能力
黑客们解决问题,建设事物,他们崇尚自由和无私的双向帮助。要被他人承认是一名黑客,你必须表现得你具备了这样的态度。而要表现得你具备了这种态度,你必须彻彻底底的坚持它。 如果你认为培养黑客的态度只是一条在这个文化圈中得到认同的路子,那就错了。成为具备这种素质的人对 你 ¸非常重要 —— 使你保持学习和成为黑客的自发性。正如所有创造性艺术一样,成为大师的最有效途径就是效仿大师的精神——不仅从理念上,还要从态度上效仿。 或许下面的这首现代禅诗很好的阐述了这个意思: To follow the path:沿着这样一条道路:look to the master,关注大师,follow the master,跟随大师,walk with the master,与大师同行,see through the master,洞察大师,become the master.成为大师。
如果你想成为一名黑客,反复阅读以下内容直到你相信它们:
基本黑客技能 学习编程 获取一个开源的Unix并学习运行和使用它 学习使用万维网(World Wide Web,WWW)和HTML(超文本标记语言) 学习实用英语
黑客的态度很重要,但技能更重要。态度不能替代能力,在被别的黑客称你为黑客之前,你有一些基本技能需要掌握。 这些基本技能随着时间的推移和技术的革新也缓慢的变化着。例如以前的内容中包括了使用机器语言编程,最近包含进了HTML。总的来说当前包括以下内容:
Status in the Hacker Culture 编写开源软件 帮助测试和调试开源软件 发布有用的信息 帮助维护基础设施运转 为黑客社区服务
象大部分非盈利社区一样,黑客社区靠声誉运转。你设法解决有趣的问题,但问题是否有趣及解决方法是否有效,需要由那些和你具有同样甚至更高技术水平的人去评判。 因此,要玩黑客这个游戏,你需要以其他黑客对你技能的评判作为对自己的评价(所以我说,在其他黑客称你为黑客之前,你不是一个真正的黑客)。这个事实常被人误解(从1990年代后有所好转,但还是很严重),人们认为黑客都是不在乎别人的评价,孤僻的人。这实际上是一个黑客文化的禁忌。 特别地,黑客被人类学家们称为 奉献社区。在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西,而是靠你的奉献。尤其是奉献你的时间,你的创造力和你的技术成果。 要想获得黑客的尊重,你基本上有5件事情可干:
与流行的传说不同,黑客并不是书呆子。但这确实对你成为黑客有帮助,并且很多黑客确实是书呆子。做一个深居简出的人有助于使你更能集中精力做一些重要的事,例如思考和从事黑客活动。 因此,许多黑客甚至以“极客(geek)”(译注:这个词原本在美国俚语中指“反常的人”)为名——这是一种宣布他们独立于普通社会的方式(此外,黑客也通常沉迷于其他一些事情例如科幻和战略游戏)。“书呆子”这个词通常在1990年代也被如此使用,那时候“书呆子”这个词略含贬义,而“极客”贬义更重。2000年以后这两个词的关系发生了转变,至少在美国流行文化上是如此,现在甚至在非技术专家中也出现了以标榜为极客为豪的情况。 如果你能集中足够的精力做好黑客工作同时还能有正常的生活,这很好。现在做到这一点比我在1970年代还是新手的时候要容易的多;如今主流文化对技术怪人要友善的多。甚至有越来越多的人意识到黑客通常是很好的恋人和配偶侯选。 如果你因为生活上的不如意而成为黑客,那也不错——至少你不用分神了。或许今后你能有一个不错的生活。
风格 重申一下,作为一名黑客,你必须进入黑客式思维模式。当你不在电脑边的时候你仍然有很多有益的事情可做。它们不能替代真正的黑客活动(没有什么可以),但是很多黑客都这么干,并且感到它们与黑客精神存在某些根本的联系。 学会流畅的使用母语写作。虽然认为程序员写不好文章的误解仍然很普遍,但是有数量令人惊讶的黑客(包括我所知造诣最高的那些)都是不错的写手。
阅读科幻小说。参加科幻聚会(一个接触黑客和可能成为黑客的人的好方法)。
加入黑客空间(hackerspace)并做一些东西出来(另外一个接触黑客和可能成为黑客的人的好方法)。
习武。武术的精神修炼与黑客之道惊人的相似。黑客中比较常见的当然是亚洲的空手格斗技巧,例如跆拳道、空手道及其变种、中国功夫、合气道、柔术(译注:这里指的是日本传统武术,而不是柔身术或软功)。西方击剑和亚洲剑术也有相当的追随者。在持枪合法的地区,射击从1990年代起也越来越受欢迎。与黑客之道最契合的武术是那些强调精神修炼、放松意识,强调控制而不是单纯的蛮力的类型。
学习一种冥想修炼。黑客中一直以来最受欢迎的是禅(很重要的是学禅并不要求你有特定的宗教信仰)(译注:这里指的是日本禅宗,而不是汉地佛教禅宗)。其他方式也可以,但是请注意一定选择那些不会要求你相信很疯狂东西的方式。
修习音乐。学会鉴赏特别的音乐。学会玩某种乐器,或唱歌。
提高对双关语、文字游戏的鉴赏能力。
这些事情,你已经在做的越多,你就越是天生做黑客的料。至于为什么偏偏是这些事情,原因并不完全清楚,但它们都涉及用到左右脑混合使用,这似乎是关键所在。黑客们既需要清晰的逻辑思维,有时又需要偏离逻辑跳出问题的表象。 工作即娱乐,娱乐即工作。对于真正的黑客来说,“玩”,“工作”,“科学”和“艺术”之间没有界线,或者说,它们在一个高层面的创造性趣味里融合在一起。另外,不要对一点点技能就感到满足。虽然大多数黑客自称是程序员,他们实际上在其他相关的方面也很可能相当强悍——常见的是系统管理、页面设计和PC硬件故障处理。一个黑客,如果他是一名系统管理员,他很可能对脚本编程和页面设计也相当在行。黑客不会半途而废,如果他们要学习一门技能,他们会将其学好。 最后,一些你 不应 做的事。 不要使用愚蠢,哗众取宠的ID或昵称。 不要卷入Usenet(或其他任何地方)的骂战。 不要自称为“数字朋克(cyberpunk)”,也不要浪费时间跟他们打交道。 不要发送含有大量拼写和语法错误的email和帖子。 做出以上事情只会招来嘲笑。黑客的记性都很好——你犯下的错误会令你将要经过多年才可以被其他黑客接受。 网名的问题值得深思。将身份隐藏在虚假的名字后是骇客、warez d00dz及其他低等生物幼稚愚蠢的行为特点。黑客不会做这些事;他们对他们所作的感到骄傲,而且乐于人们将作品与他们的 真名 相联系。 因此, 若你现在用假名,放弃它。黑客社区里只会将用假名的人视为失败者。
历史记录:黑客活动,开源,和自由软件 当我在1996年末刚开始写这篇文档的时候,很多情况跟现在是不同的。简单的介绍一下这个变化对于对开放源代码、自由软件和Linux跟黑客社区的关系感到困惑的人们可会有所帮助。如果你对这些不感兴趣,可以直接跳过这里,前往FAQ和参考资料部分。 我描述的黑客精神和黑客社区远早于1990年出现的Linux。我最初进入这个圈子大概是在1976年,其原因可以追溯到1960年代早期。但是在Linux出现前,多数黑客行为是在专有操作系统,或一些自主研发的实验性系统上,例如MIT的ITS,这个系统从未在实验室以外的地方使用过。虽然在早期(Linux出现之前)有过一些试图改变这种状况的努力,但是它们的影响都非常轻微,仅限于真正怀抱这样理想的人群,即使在当时的黑客社区这也是绝对少数,更不论对于世界范围内的通用软件群体的影响了。 现在被称为“开放源代码”的行为,其历史与黑客社区一样久远,但是直到1985年这都只是一个无名的民间行为,没有相关的理论和宣言。这段史前时代在1985年结束,大黑客Richard Stallman(“RMS”)尝试给了它一个名字——“自由软件(Free Software)”。但是这个命名行为也是一个强制要求行为,他为“自由软件”标签加上了大多数已有的黑客社区从不接受的意识形态的包袱。“自由软件”的标签被黑客社区中的一部分重要人物(尤其是与BSD Un ix有关联的社区)明确拒绝,并且其余的大部分人也在严肃并且持保留意见的情况下使用它(包括我本人)。 除此之外,大约在1990年代中期以前,RMS想要在“自由软件”口号下定义和引领黑客社区。在Linux崛起之后,这受到了极大挑战。Linux为开放源代码开发活动提供了一个天然的环境。许多在现今被称为“开放源代码”条款下发布的项目纷纷从专有Unix向Linux迁移。围绕Linux的社区呈现爆炸式的增长,比在Linux出现前的黑客文化规模更大且更多样化。RMS想要将这些活动与他的“自由软件”运动关联起来,但是由于Linux社区爆炸式的多样性和该社区的创始人,Linus Torvalds的公开怀疑所阻碍。Torvalds仍然使用“自由软件”这一词汇,因为找不到更好的替代品,但他公开拒绝了RMS的意识形态观念。许多年轻黑客纷纷效仿。 在1996年,当我第一次发布本文的时候,黑客社区正在围绕Linux和一些其他开放源代码的操作系统(尤其是BSD Unix的继承者)进行重组。我们中的许多人曾经在封闭源代码的操作系统上花费大量时间开发封闭源代码软件的集体记忆并没有因此褪色,但是这看起来已经是过去。黑客们将自己作为黑客的定义与开发源代码项目例如Linux和Apache越来越紧密的结合在一起。 然而“开放源代码”这个词直到1998年初才出现。当它出现之后,多数黑客社区在6个月之内采用了它,除了与“自由软件”在意识形态层面绑定的极少数例外。自1998年起,尤其是2003年之后,“黑客”和“开放源代码(和自由软件)开发”越来越紧密相连。今天,几乎已经无法也没必要将它们区分开,并且这一点看起来在将来也不会改变。 然而,曾经并不是这样,这一点值得我们记住。
其他资源 Paul Graham写了一篇名为“Great Hackers”和一篇名为“Undergraduation”的文章,有很多精妙的见解。 有一篇名为How To Be A Programmer的文章,对如何成为程序员做了详尽的说明。它的价值不仅限于代码及其相关能力上,对于如何在一个程序员团队中工作也有建设性价值。 我写过一篇A Brief History Of Hackerdom。 我写过一篇名为“大教堂与市集(The Cathedral and the Bazaar)”的文章,在文中解释了Linux和开源社区是如何运作的。在它的续集“开拓智域(Homesteading the Noosphere)”中,我进一步深入探讨了这个问题。 Rick Moen写了一篇很棒的关于如何运营一个Linux用户组的文章。 Rick Moen和我共著了一篇关于提问的智慧的文章。它将使你更容易获取到帮助。 如果需要个人电脑、Unix 和互联网如何工作的基础知识,参阅Unix 和互联网工作的基本原理。 当你发布软件或补丁时,试着按软件发布实践操作。 如果你对禅诗感兴趣,你可能会喜欢Rootless Root: The Unix Koans of Master Foo。
常见问题 Q: 如何证明我已经是一名黑客了?Q: 你能教我做黑客吗?Q: 我该如何开始?Q: 我该什么时候开始学?现在会不会太迟了?Q: 学会黑客之道要多长时间?Q: Visual Basic是一门好的入门语言吗?Q: 你能教我“黑”掉一个网站,或者教我怎么黑它吗?Q: 我怎么样才能得到别人帐号的密码?Q: 我如何入侵/查看/监视别人的email?Q: 我如何才能盗取IRC的频道管理员权限?Q: 我被人入侵了。你能帮我避免以后再被攻击吗?Q: 我的Windows软件出现问题了。你能帮我吗?Q: 我在哪里可以找到能与之交流的真正的黑客?Q: 你能推荐一些有关黑客的好书吗?Q: 成为一名黑客我需要擅长数学吗?Q: 我该从哪种语言开始学?Q: 我需要什么样的机器配置?Q: 我想做贡献。你能帮我挑选一个问题来处理吗?Q: 我得因此憎恨和反对Microsoft吗?Q: 但开放源代码软件不会使程序员丢饭碗吗?Q: 哪里有免费的Unix? Q: 如何证明我已经是一名黑客了? A: 问自己以下三个问题:
如果你对三个问题的回答都是肯定的,你就已经是一名黑客。哪怕只有一个回答是否定的也不行。 第一个问题是关于技能的。如果你具备了前文提到的基本技能,就应该没问题。如果你已经有相当数量的代码被开源项目所接受,可以跳过这个问题。 第二个问题是关于精神的。如果前面的五条黑客的精神明显比其他地方的描述更贴近你的真实生活,你就已经通过了一半。这是内在的一半,外在的一半是你对黑客社区长期项目的贡献程度。 这里有一个不完整但具有指示性的项目列表:Linux的改进和发展是否有你的贡献?你是否对软件自由充满激情?你是否反对垄断?你是否为了让计算机成为这个世界更丰富多彩、更人性化的工具而努力? 请注意。黑客社区有一些特定的,主要是防御性的政治倾向——其中两条是维护言论自由和抵御可能使开放源代码非法的“知识产权”。有一些长期项目是公民自由组织,例如电子前哨基金会(EFF),外在的态度包括支持他们。除此之外,大多数企图将黑客精神系统化为一个具体的政治程序的黑客都值得怀疑。我们曾经为此付出过代价,并了解到这些想法通常会导致分裂并且令人心烦意乱。如果有人想要以黑客精神的名义来招揽你,那是他们搞错了重点。最好的回应恐怕是“闭嘴,给他们看代码(Shut up and show them the code)。” 第三个问题是递归的。我在“什么是黑客”中提到过,成为一名黑客,就是成为一个具有分享特点的文化社群的一员。很久之前,黑客相比现在是一个松散的,不自知的群体。但是近30年来,由于互联网使得黑客文化的核心更易发展和维护,人际网络方面取得了长足进步。这种改变最简单的代表就是,在这个世纪,我们有了自己的T恤。 社会学家在研究类似黑客社区这样的被统称为“无形学院(invisible colleges)”的人际网络时注意到,这类网络通常都有门卫——具有社区授权的核心成员会审核新人的进入申请。由于黑客社区是“无形学院”中比较松散和非正式的一种,门卫的身份也是非正式的。但是所有黑客天生就知道并非每个黑客都是门卫。在取得门卫的头衔前需要具备特定的资历和成就。这很难度量,但是每个黑客在看到它的时候就能知道。 Q: 你能教我做黑客吗? A: 自从第一次发布这份文档,我每周都会收到一些请求,(通常一天几封)要我“教会他们做黑客”。遗憾的是,我没有时间和精力来做这个;我自己的黑客项目,及我作为一个开放源代码倡导者 的四处奔波已经占用了我110%的时间。 即便我想教你,黑客也依然基本上是一项自行修炼的的态度和技术。当真正的黑客想帮助你的时候,如果你乞求他们一汤匙一汤匙“喂”你的话,你会发现他们不会尊重你。 先去学一些东西。显示你在尝试,你能靠自己去学习。然后再去向你遇到的黑客请教特殊的问题。 如果你发E-mail给一位黑客寻求他的帮助,有两件首要记住的事情。第一,写出来的文字显得懒且粗心的人通常非常懒于思考且非常马大哈,不能成为好黑客——因此注意拼写正确,使用正确的语法及发音,否则你可能会无人理睬。 第二,不要试图要求回复到与你的发信地址不同的另一个帐号。这样做的人一般是使用盗用帐号,不会有人有兴趣为虎作伥帮助窃贼的。 Q: 我该如何开始 A: 对你而言最佳的入门方式也许是去参加LUG(Linux用户组)的聚会。 你可以在 LDP的综合Linux信息页面上找到类似的组织;也许有一个在你附近的,而且非常有可能与一所大学或学校挂钩。如果你提出要求,LUG 成员兴许会给你一套 Linux,当然此后会帮你安装并带你入门。 下一步(如果你在附近找不到LUG的话,这是第一步)找一个你感兴趣的开放源代码项目。读它的代码,并且检查它的bug。学着做贡献,并从此入门。 入门的唯一方式是提升你的技能。如果你还想问我关于如何开始的私人建议,我还是会给你相同的答案,因为没有捷径。我还会在心里认为你可能是个失败者——因为你没有耐性读完这个 FAQ,并且也没有足够的智商从文中理解到入门的唯一途径就是提升你的技能。你没救了。 Q: 我该什么时候开始学?现在会不会太迟了? A: 你有动力学的时候就可以。多数人是在15到20岁之间开始感兴趣的,但据我所知也有在这个年龄区间之外的例外。 Q: 学会黑客之道要多长时间? A: 这取决于你的聪明程度和努力程度。多数人如果足够专注的话,能在18个月到2年之间学会一套令人尊敬的技能。但是,不要以为这就结束了。在黑客领域(在其他很多领域也一样),需要10年时间精湛技艺。如果你是一个真正的黑客,你要用你的余生来学习和完善你的技术。 Q: Visual Basic是一门好的入门语言吗? A: 你问这个问题,那通常意味着你想在Microsoft Windows下从事黑客活动。这本身就不是个好主意。我将在Windows下学习黑客技巧比喻为戴着脚镣学跳舞,这不是开玩笑。别这么做。Windows很糟糕,而且它从来没有变好一点。 Visual Basic有一个很重要的问题,主要是源于它不可移植。虽然已经有Visual Basic的开源实现,但ECMA的可执行标准只覆盖了其编程接口的很小一部分。在Windows中,大多数函数库是由单一供应商(Microsoft)专有的。如果你不能非常小心的选择你所使用的特性(比任何新手所能做到的都更小心),你最终很可能被束缚在Microsoft决定支持的那些平台上。如果你从Unix系统开始,有更好的编程语言和更好的函数库可用。例如Python。 此外,如同其他 Basic 语言一样,Visual Basic是一种设计糟糕的语言,它会教给你坏的编程习惯。别让我详细列举和解释它们,这够写一本书了。找一门设计优良的编程语言来学。 坏习惯之一就是依赖单一厂商提供的函数库、控件和开发工具。通常,一门不能支持至少Linux或一种BSD,或其他第三方操作系统的语言,都不适合应付黑客工作。 Q: 你能帮我“黑”掉一个网站,或者教我怎么黑它吗? A: No。任何读完这份FAQ后还问这个问题的人都是无药可救的蠢材,即使有时间我也不会理睬。任何发给我的此类e-mail都会被忽略掉或被痛骂一顿。 Q: 我怎么样才能得到别人帐号的密码? A: 这是破坏行为。滚开,白痴。 Q: 我如何入侵/查看/监视别人的email? A: 这是破坏行为。从我面前消失,混蛋。 Q: 我如何才能盗取IRC的频道管理员权限? A: 这是破坏行为。去死,蠢货。 Q: 我被人入侵了。你能帮我避免以后再被攻击吗? A: 不能。每次问我这个问题的都是些运行Microsoft Windows的菜鸟。不可能有效保护Windows系统免受破坏行为攻击。代码和架构上的大量缺陷使保护Windows的努力犹如隔靴搔痒。唯一可靠的预防是换到Linux或者其他设计得至少足够安全的系统上。 Q: 我的Windows软件出现问题了。你能帮我吗? A: 是的。进入DOS模式,然后输入“format c:”。你遇到的问题将在几分钟内消失。 Q: 我在哪里可以找到能与之交流的真正的黑客? A: 最佳办法是在你附近找一个Unix或Linux的用户组,参加他们的聚会(你可以在ibiblio的LDP站点找到一些指向用户组的链接)。 我过去曾说过在IRC上找不到真正的黑客,但我发觉现在情况有所改变。显然一些真正的黑客的社区像GIMP及Perl,也有IRC频道了。) Q: 你能推荐一些有关黑客的好书吗? A: 我维护着一份Linux Reading List HOWTO,也许会对你有用。Loginataka也很有意思。 关于Python的介绍,请访问Python官方站点上的入门资料 Q: 成为一名黑客我需要擅长数学吗? A: 不。黑客道很少使用常规的数学或算术。 尤其是你不会用到三角学、微积分或数学分析(在特定领域,这些学科很有用,例如3D电脑图像)。一些有限数学(包括布尔代数,集合论,组合数学,图论)的背景知识会有帮助。了解一些系统的逻辑和布尔代数是有好处的。一些基础的离散数学(包括有限集合论、组合数学和图论)会有帮助。 更重要的是:你需要能够像数学家一样进行逻辑性地思考和进行缜密的推理。在这一点上绝大部分数学理论帮不了你,你需要有能够应付数学的修养和智力。如果你不够聪明,你成为黑客的希望很渺茫。如果你的修养不够,最好培养起来。 我认为一个好的了解你当前状况的办法是,找一本Rymond Smullyan的书 What Is The Name Of This Book?。Smullyan那些有趣的逻辑题很符合黑客精神。如果你能解答它们,这是个很好的信号。如果你能享受解题的过程那就更好了。 Q: 我该从哪种语言开始学? A: XHTML(最新的HTML方言)——如果你还不懂的话。市面上有一大堆的封面精美,宣传得天花乱坠的 糟糕的HTML书籍,不幸的是很少有好的。我最喜欢的是HTML: The Definitive Guide。 但HTML不完全是一种编程语言。当你准备开始编程时,我推荐从Python起步。 你会听到一大群人推荐Perl,并且Perl依然比Python流行得多,但是难学得多且(以我之见)设计得不是很好。 C确实重要,但它要比Python或Perl难多了。不要尝试先学C。 Windows用户不要满足于Visual Basic。它会教给你坏习惯,而且它不可以移植,只能在Windows下运行。避免它。 Q: 我需要什么样的机器配置? A: 过去个人电脑计算能力相当不够且内存小,给黑客的学习过程设置了人为的障碍。不过从1990年代以后就不是这样了,任何配置比一台Intel 486DX50好的机器都有足够的能力进行开发工作,跑Xorg,及进行Internet通讯,同时现在能买到的最小的磁盘都已经绰绰有余。 选择用来学习的机器时重要的一点是注意配件是否是Linux兼容的(或BSD兼容,如果你选择学 BSD)。同刚才提到的一样,大多数现在的机器都是符合的;唯一的值得注意的地方在于 调制解调器和打印机;有些具备为Windows设计的配件的机器不会在Linux下工作。 关于硬件兼容性有一个FAQ;最新版本在这里。 Q: 我想做贡献。你能帮我挑选一个问题来处理吗? A: 不行。因为我不知道你擅长什么,也不知道你对什么感兴趣。你需要做到自我驱动,否则无法进步。这也是为什么让别人帮你挑选方向几乎都不会有用。 Q: 我得因此憎恨和反对Microsoft吗? A: 不,你不必如此。不是因为Microsoft不令人讨厌,而是因为黑客文化早在Microsoft出现之前就存在了,且将在Microsoft成为历史后依然存在。你耗费在憎恨Microsoft的任何力气不如花在热爱你的技术上。写好的代码——那会相当有效地打击Microsoft又不会让你得到恶报。 Q: 但开放源代码软件不会使程序员丢饭碗吗? A: 看起来不太可能——目前为止,开放源代码软件产业似乎创造了更多的就业机会而不是减少就业机会。如果写一个程序比起不写来是纯经济收益的话,那么在写完后,程序员应该得到报酬不管程序是否是开放源代码。并且,无论写出多么“免费自由”的软件,都存在更多对新的,定制的软件的需求。我有这方面更多的论述,放在Open Source网站资料中。 Q: 哪里有免费的Unix? A: 如果你的机器上还没有安装Unix,我在本文的其他地方已经指出了从哪里可以获取到常用的免费Unix。在本份文档的某个地方我已经提到过何处可以得到最常用的免费Unix。作为一名黑客,你需要自立自强,以及自学能力。现在开始吧……
Eric Steven Raymond