如何成为一名黑客
如何成为一名黑客<br /><br /> 什么是黑客?<br /><br />这可以追溯到很多年前第一台分时小型电脑诞生, ARPAnet实验也刚展开的年代, 那时有<br />一个由程序设计专家和网络名人所组成的, 具有分享特点的文化社群. 这种文化的成员创<br />造了"hacker"这个名词. 黑客们建立了Internet. 黑客们发明出了现在使用的UNIX操<br />作系统. 黑客们使Usenet运作起来, 黑客们让WWW运转起来. 如果你是这个文化的一部<br />分, 如果你对这种文化有所贡献, 而且这个社群的其它成员也认识你并称你为hacker, 那<br />么你就是一位黑客.<br /><br />在这份文档中, 我们将注意力集中在黑客的技术和态度, 以及发明了"黑客"一词的以共<br />享为特征的文化传统之上.<br /><br /> 黑客应有的态度<br /><br />黑客们解决问题, 建设事物, 同时他们崇尚自由和无私的双向帮助.<br /><br />如果你想成为一名黑客, 反复读下面的事情直至你相信它们:<br /><br /> 世界充满了待解决的迷人问题.<br /><br />做一名黑客会有很多乐趣, 但却是要费很多气力方能得到的乐趣. 这些努力需要动力.<br />做黑客, 你得能从解决问题, 磨练技术及锻炼智力中得到基本的乐趣.<br /><br />如果你还不是天生的这类人又想做黑客, 你就要设法成为这样的人. 否则你会发现, 你的<br />黑客热情会被其他分心的事物吞噬掉---如金钱,性和社会上的虚名.<br /><br />(同样你必须对你自己的学习能力建立信心---相信尽管当你对某问题近乎一无所知, 但只<br />要你一点一点地试验,学习, 最终会掌握并解决它.)<br /><br /> 一个问题不应该被解决两次.<br /><br />聪明的脑袋是宝贵的有限的资源. 当世界还充满非常多有待解决的有趣的新问题时, 它们<br />不应该被浪费在重新发明轮子这类事情上.<br /><br />作为一名黑客, 你必须相信其他黑客的思考时间是宝贵的---因此共享信息, 解决问题并<br />发布结果给其他黑客几乎是一种道义, 这样其他人就可以去解决新问题而不是不断地忙于<br />对付旧问题.<br /><br />(你不必认为一定要把你所有的发明创造公布出去, 但这样做的黑客是赢得大家极度尊敬<br />的人. 卖些钱来养家糊口, 租房买计算机甚至发大财和黑客价值观也是相容的, 只要你别<br />忘记你还是个黑客.)<br /><br /> 无聊和乏味的工作是罪恶.<br /><br />黑客应该从来不会被愚蠢的重复性劳动所困扰, 因为当这种事情发生时就意味着他们没<br />有在做只有他们才能做的事情---解决新问题. 这样的浪费伤害每一个人. 因此, 无聊<br />和乏味的工作不仅仅是令人不舒服而已, 而且是罪恶.<br /><br />作为一个黑客, 你必须坚信这点并尽可能多地将乏味的工作自动化, 不仅为你自己, 也为<br />了其他人(尤其是其他黑客们).<br /><br />(对此有一个明显的例外. 黑客有时也做一些在他人看来是重复性或枯燥的工作以进行"脑<br />力休息", 或是为了获得某种技能, 或是获得一些除此以外无法获得的特别经验. 但这是<br />自愿的---有脑子的人不应该被迫做无聊的活儿. )<br /><br /> 自由万岁.<br /><br />黑客们是天生的反**主义者. 任何能向你发命令的人能够迫使你停止解决令你着迷的问<br />题, 同时, 按照**者的一般思路, 他通常会给出一些极端愚昧的理由. 因此, 不论何<br />处, 任何**主义的作法, 只要它压迫你和其他黑客, 你就要和它斗到底.<br /><br />权威喜欢审查和保密. 他们不信任自愿的合作和信息的共享---他们只喜欢由他们控制的<br />所谓"合作". 因此, 作为一个黑客, 你得对审查,保密, 以及使用武力或欺骗去压迫有行<br />为能力的人们的做法有一种本能的敌意. 同时你要有为此信念斗争的意愿.<br /><br /> 态度不能替代能力.<br /><br />作为一名黑客, 你必须培养起这些态度. 但只具备这些态度并不能使你成为一名黑客,<br />也不能使你成为一个运动健将和摇滚明星. 成为一名黑客需要智力,实践,奉献精神和辛苦<br />工作.<br /><br />因此, 你必须学会怀疑, 并尊重各种各样的能力. 黑客们不会为那些装模做样的人浪费时<br />间, 但他们却非常尊重能力---尤其是从事黑客工作的能力, 不过任何能力总归是好的.<br />具备很少人能具备的那些方面的能力尤其好, 其中具备涉及脑力,技巧和专注方面能力的<br />当然最好.<br /><br />尊敬能力, 你就会享受到提高自己能力的乐趣---辛苦的工作和奉献会变成一种高度娱乐<br />而非苦差事. 要想成为一名黑客, 这一点非常重要.<br /><br /> 黑客的基本技能<br /><br />黑客态度重要, 但技术更加重要. 态度无法替代技术, 在你被别的黑客称为黑客之前,<br />有一些基本的技术你必须掌握.<br /><br /> 学习如何编程.<br /><br />这当然是最基本的黑客技能. 如果你还不会任何编程语言, 我建议你从Python开始. 它<br />设计清晰, 文档齐全, 合适初学者入门. 它是一门很好的入门语言, 并且不仅仅只是个<br />玩具; 它非常强大,灵活, 也适合做大型项目.<br /><br />Java也是好的入门语言. 它比Python难得多, 但是生成的代码速度也快得多. 它同时也<br />是一种优秀的计算机语言, 不止是用来入门.<br /><br />但是注意, 如果你只会一两门语言, 你将不会达到黑客所要求的技术水平, 甚至也不能<br />达到一个程序员的水平--你需要学会如何以抽象的方式思考编程问题, 独立于任何语言.<br />要做一名真正的黑客, 你需要学会在几天内通过一些手册, 结合你现在所知, 迅速掌握<br />一门新语言. 这意味着你应该学会几种截然不同的语言.<br /><br />如果要做一些重要的编程工作, 你将不得不学习C语言, Unix的核心语言. C++与C非常其<br />他类似; 如果你了解其中一种, 学习另一种应该不难. 但这两种都不适合编程入门者学<br />习. 而且事实上, 你越避免用C编程, 你的工作效率会越高.<br /><br />C非常有效率, 节约你的机器资源. 不幸的是, C的高效是通过你手动做很多底层的管<br />理(如内存)来达到的. 底层代码都是复杂极易出现bug 的, 会使你花极多的时间调试.<br />如今的机器速度如此之快, 这通常是得不偿失--比较明智的做法是使用一种运行较慢,较<br />低效率, 但大幅节省你的时间的语言. 因此, 选择Python.<br /><br />其他对黑客而言比较重要的语言包括 Perl和 LISP. Perl实用, 值得一学; 它被广泛用<br />于动态网页和系统管理, 因此即便你从不用Perl写程序, 至少也应该学会看. 许多人使<br />用Perl的理由和我建议你使用 Python的理由一样, 都是为了避免用C完成那些不需要C高<br />效率的工作. 你会需要理解那些工作的代码的.<br /><br />LISP值得学习的理由不同--最终掌握了它时你会得到丰富的启迪和经验. 这些经验会使<br />你在以后的日子里成为一个更好的程序员, 即使你实际上很少使用LISP本身.<br /><br />当然, 实际上你最好五种都会(Python,Java,C/C++,Perl和LISP). 除了是最重要的黑客<br />语言外, 它们还代表了截然不同的编程思路和方法, 每种都会让你受益非浅.<br /><br />这里我无法给你完完全全的指导教会你如何编程--这是个复杂的技能. 但我可以告诉<br />你, 书本和上课也不能作到(最好的黑客中, 有许多, 也许几乎都是自学成材的). 你可<br />以从书本上学到语言的特点--只是一些皮毛, 但要使书面知识成为自身技能只能通过实<br />践和虚心向他人学习. 因此要作到(一)读代码及(二)写代码.<br /><br />学习如何编程就象学习用优美的自然语言写作一样. 最好的做法是读一些大师的名著,<br />试着自己写点东西, 再读些, 再写点, 再读些, 再写点...... 如此往复, 直到你的**<br />达到你体会到的范文的简洁和力量.<br /><br /> 得到一个开放源代码的Unix并学会使用,运行它.<br /><br />我假设你已经拥有或者能使用一台个人电脑. 新手们能够朝学习黑客技能迈出的最基本<br />的一步就是得到一份Linux或BSD-Unix的一种, 安装在个人电脑上, 并运行它.<br /><br />没错, 这世界上除了Unix还有其他操作系统. 但它们都是以二进制形式发布的--你无法<br />读到它的源代码, 也不可能修改它. 尝试在运行DOS或Windows或MacOS的机器上学习黑客<br />技术, 就象是带着脚镣学跳舞.<br /><br />除此之外, Unix还是Internet的操作系统. 你可以学会上网却不知道Unix, 但你不了<br />解Unix就无法成为一名Internet 黑客. 因此, 今天的黑客文化在很大程度上是以Unix为<br />中心的.<br /><br />所以, 安装一套UNIX--我个人喜爱LINUX但还有其他种类的. 学习它, 使用它, 配置它.<br />用它在Internet上冲浪. 阅读它的源代码. 修改它的源代码. 你会得到比在Microsoft操<br />作系统上更好的编程工具. 你会觉得乐趣无穷, 学到在你成为大师之前意识不到的更多<br />的知识.<br /><br /> 如果你不懂实用性的英语, 学习吧.<br /><br />英语是黑客文化和Internet的工作语言, 你需要懂得以便在黑客社区顺利工作.<br /><br />据我知道的报导, 当前英语有着比其他语言丰富得多的技术词汇, 因此是一个对于工作<br />来说相当好的工具. 基于类似的原因, 英文技术书籍的翻译通常不令人满意.<br /><br /> 黑客文化中的地位<br /><br />像大部分不涉及金钱的文化一样, 黑客王国靠声誉运转. 你设法解决有趣的问题, 但它<br />们到底多有趣, 你的解法有多好, 是要由那些和你具有同样技术水平的人或比你更厉害<br />的人去评判的.<br /><br />相应地, 当你在玩黑客游戏时, 你得认识到你的分数主要靠其他黑客对你的技术的评价<br />给出(这就是为什么只有在其它黑客称你为黑客时, 你才算得上是一名黑客). 这个事实<br />常会被黑客是一项孤独的工作这一印象所减弱; 也会被另一个黑客文化的禁忌所减<br />弱(现在逐渐减弱但仍强大): 拒绝承认自我或外部评估与一个人的动力有关系.<br /><br />特别地, 黑客王国被人类学家们称为一种奉献文化. 在这里你不是凭借你对别人的统治<br />来建立地位和名望, 也不是靠美貌, 或拥有其他人想要的东西, 而是靠你的奉献. 尤其<br />是奉献你的时间, 你的创造和你的技术成果.<br /><br />要获得其他黑客的尊敬, 基本上有五种事情你可以干:<br /><br /> 写开放源代码软件<br /><br />第一个(也是最集中的和传统的)是写些被其他黑客认为有趣或有用的程序, 并把程序源<br />代码提供给整个黑客文化使用.<br /><br />黑客王国里最受尊敬的偶像是那些写了大型的,好用的,具有广泛用途的软件, 并把它们<br />公布出去, 使得每人都在使用他软件的人.<br /><br /> 帮助测试并调试开放源代码软件<br /><br />黑客也尊敬那些使用,测试开放源代码软件的人. 在这个并非完美的世界上, 我们不可避<br />免地要花大多数的开发时间在调试阶段. 这就是为什么任何有头脑的开放源代码的作者<br />都会告诉你好的beta测试员(知道如何清楚描述出错症状, 很好地定位错误, 能忍受快<br />速发布中的bug, 并且愿意使用一些简单的诊断工具)象红宝石一样珍贵. 甚至他们中的<br />一个能判断出哪个测试阶段是延长的, 哪个是令人精疲力尽的噩梦, 哪个只是一个有益<br />的小麻烦.<br /><br />如果你是个新手, 试着找一个你感兴趣的正在开发的程序, 做一个好的beta测试员. 你<br />会自然地从帮着测试, 进步到帮着抓臭虫, 到最后帮着改程序. 你会从中学到很多, 并<br />且与未来会帮你的人结下友谊.<br /><br /> 公布有用的信息<br /><br />另一个好事是收集整理有用有趣的信息做成网页或文档如FAQ列表, 且让他们容易获得.<br /><br />主要技术FAQ的维护者受到几乎同其他开放源代码的作者一样多的尊敬.<br /><br /> 帮助维护基础设施的运转<br /><br />黑客文化(还有Internet的工程方面的发展, 就此而言)是靠自愿者运转的. 要<br />使Internet能正常工作, 就要有大量枯燥的工作不得不去完成--管理mail list,新闻<br />组,维护大型软件库,开发RFC和其它技术标准等等.<br /><br />做这类事情的人会得到很多尊敬, 因为每人都知道这些事情是十分花时间又不象编程那<br />样好玩. 做这些事情需要奉献精神.<br /><br /> 为黑客文化本身服务<br /><br />最后, 你可以为这个文化本身做宣传(例如, 象我这样, 写一个"如何成为黑客"的正面的<br />教程 :-). 这并非一定要在你已经在这个圈子呆了很久, 因以上四点中的某点而出名, 有<br />一定声誉后才能去做.<br /><br />黑客文化没有领袖. 精确地说, 它确实有些文化英雄,部落长者,历史学家和发言人. 若<br />你在这圈内呆的够长, 你或许成为其中之一. 记住: 黑客们不相信他们的部落长者的自<br />夸的炫耀, 因此大举追求这种名誉是危险的. 与其奋力追求, 不如先摆正自己的位置等<br />它自己到你的手中--那时则要做到谦虚和优雅.<br /><br /> 风格的意义<br /><br />重申一下, 作为一名黑客, 你必须进入黑客精神之中. 当你不在计算机边上时, 你仍然<br />有很多对黑客工作有帮助的事情可做. 它们并不能替代真正的编程(没有什么能), 但很<br />多黑客都那么做, 并感到它们与黑客的本质存在某些基本的连系.<br /><br />学会流畅地用母语写作. 尽管程序员不能写好**的错误看法相当普遍, 但是有令人惊<br />讶数目的黑客(包括所有我知道的最棒的)都是不错的作家.<br /><br />阅读科幻小说. 参加科幻小说讨论会. (一个碰到黑客和未来会成为黑客的人的好方法)<br /><br />学禅, 并且/或者练功习武. (精神修炼看来是惊人相似. )<br /><br />练就能分析音乐的听觉, 学会鉴赏特别的音乐. 学会玩某种乐器, 或唱歌.<br /><br />提高对双关语,文字游戏的鉴赏能力.<br /><br />这些事情, 你已经做的越多, 你就越是天生做黑客的材料. 至于为什么偏偏是这些事情,<br />原因并不完全清楚, 但它们都涉及用到左-右脑能力的综合, 这似乎是关键所在(黑客们<br />既需要清晰的逻辑思维, 有时又需要偏离逻辑跳出问题的表象).<br /><br />最后, 还有一些不要去做的事情.<br /><br />不要使用愚蠢的, 哗众取宠的ID或昵称.<br /><br />不要卷入Usenet(或其他地方的论坛)的骂战.<br /><br />不要自称为"cyberpunk(网络叛客)", 也不要浪费时间和那些人打交道.<br /><br />不要让你寄出的Email或张贴的帖子充满错误的拼写和乱七八糟的语法.<br /><br />做以上的事情, 只会招来嘲笑. 黑客们个个**超群---你将需要数年的时间让他们忘记<br />你犯下的错误.<br /><br />网名的问题值得深思. 将身份隐藏在虚假的名字后是骇客,解密者,d00dz及其他低等生物<br />幼稚愚蠢的行为特点. 黑客不会做这些事; 他们对他们所作的感到骄傲, 而且乐于人们<br />将作品与他们的真名相联系. 因此, 若你现在用假名, 放弃它. 在黑客文化里它会令你<br />你失败的.<br /><br />如果你发E-mail给一位黑客寻求他的帮助, 这是两件首要记住的事情. 第一, 写出来的<br />文字显得懒且粗心的人通常非常懒于思考且非常马大哈, 不能成为好黑客---因此注意拼<br />写正确, 使用正确的语法及发音, 否则你可能会无人理睬. 第二, 不要试图要求回复到<br />一个ISP帐号, 而那个帐号与你的发信地址不同. 这样做的人一般是使用盗用帐号, 不会<br />有人有兴趣为虎作伥帮助窃贼的.<br /> 黑客教程?? ;P tai太高深了
页:
[1]