这可以追溯到几十年前,那时候第一代分时微型计算机才刚刚诞生, 而 ARPAnet 的实验也才刚展开。那时的编程专家和组 高手建立了一个具有共享性质的文化 群, “hacker” 这个名词就是其中的成员创造的。黑客们建立了互联 ,黑客们让 Unix 操作系统演化到现在的模样,黑客们经营着 Usenet,黑客们让万维 运转起来。如果你是这个文化的一部分,如果你对这种文化有所贡献,而且这个 群的其它成员也认识你并称你为 hacker,那么你就是一名黑客。
黑客的思维方式并不仅仅局限在软件黑客的文化圈内。也有人用黑客态度对待其它事情,如电子和音乐方面——其实你可以在任何最高级别的科学和艺术活动中发现它的身影。软件黑客对这些领域的践行者尊重有加,并把他们也称作黑客——有人宣称黑客天性是绝对独立于他们工作的特定领域的。但在这份文档中,我们将集中书写在软件黑客的技术和态度,以及发明了“黑客”一词的、以共享为特征的文化传统。
根本的区别是:黑客搞建设,骇客搞破坏。
如果你想成为一名黑客,请接着读下去。如果你想做一个骇客,就去读 alt.2600 新闻组吧,顺便准备好去蹲个五到十年的监狱,而且最终你会意识到你并不像自己想象的那么聪明。
关于骇客,我能说的只有这些。
黑客的态度
这个世界充满了令人着迷的问题等着我们解决。
一个问题不应该被解决两次。
无聊和乏味的工作是罪恶。
崇尚自由。
态度不能替代能力。
黑客们解决问题,建设事物,同时他们信仰自由和无私的双向帮助。要想作为一名黑客被 群认同,你需要体现出自己已经具备了这种态度。而要体现出这种态度,你就得真正相信和赞同这种态度。
但是,如果你认为培养黑客态度只是进入黑客文化圈的敲门砖,那就大错特错了。这种态度将有助于有助于你的学习,并且能为你提供源源不断的动力,所以它对你而言是至关重要的。和所有创造性的艺术一样,成为大师的最有效方法,就是模仿大师的精神——智力上的模仿还不够,还要从感情上进行模仿。
或者正如下面这首现代的禅诗讲的:
修行之道:
关注大师的言行, 跟随大师的举动, 和大师一并修行, 领会大师的意境, 成为真正的大师。
所以,如果你想成为一名黑客,反复读下面的事情直至你相信它们为止:
1. 学习如何编程。
这一条无须多说,当然是最基本的黑客技能。如果你还不会任何编程语言,我建议你从 Python 开始学起。它设计清晰,文档齐全,而且对初学者比较友好。虽然它很适合作为一种入门语言,但它不仅仅只是个玩具;它非常强大、灵活,也适合做大型项目。我在一篇更详细的 Evaluation of Python(译注:Python 试用体验)中有更详细的论述。Python 站有很好的入门教程。
我曾经推荐过将 Java 作为初学的语言,但这则批评改变了我的想法(在里边搜索”The Pitfalls of Java as a First Programming Language” 就知道我的意思了)。作为一名黑客,你不能像人们挖苦的一样,“像水管工人一样装电脑”,你必须知道各个部件的工作原理。现在我觉得可能还是学过 C 和 Lisp 后再学 Java 比较好。
有一个大体的规律,就是如果你过于偏重使用一种语言,这种语言一方面会成为你得心应手的工具,另一方面也会阻碍你的学习。有这个问题的不只是编程语言,类似 RubyOnRails、CakePHP、以及 Django 的 web 应用框架也有这个问题,它们只会让你肤浅地懂得一些东西,当你碰到难以解决的问题或者需要调试时,你就可能不知所措了。
如果你想进入正式的编程领域,你将不得不学习 C 语言,它是 Unix 的核心语言。C++ 与 C 非常其他类似;如果你了解其中一种,学习另一种应该不难。但这两种都不适合编程入门者学习。而且事实上,你越避免用C编程,你的工作效率会越高。
C 语言效率极高,而且占用很少的系统资源。不幸的是,C 的高效是通过你手动做很多底层的管理(如内存管理)来达到的。底层代码都很复杂,而且极易出现 bug,你要花很多的时间调试。而现今的计算机速度如此之快,花时间调试程序通常是得不偿失——比较明智的做法是使用一种运行较慢、效率较低,但能大幅节省你的开发时间的语言。因此,还是选择 Python 吧。
其他对黑客而言比较重要的语言包括 Perl 和 LISP。从实用的角度来说,Perl 是值得一学的;它被广泛用于动态 页和系统管理中,因此,即便你从不用Perl 写程序,至少也应该学会读懂 Perl。许多人使用 Perl 的理由和 我建议你使用 Python 的理由一样,都是为了避免用 C 完成那些不需要 C 高效率的工作。你会需要理解那些工作的代码的。
LISP 值得学习的理由不同——最终掌握了它时你会得到丰富的启迪和经验。虽然你实际上很少会用到 LISP,但这些经验会使你在以后的日子里成为一个更好的程序员。
单单学习编程语言并不会让你达到黑客的程度,甚至连程序员的程度都难企及——你需要脱离某种编程语言的素服,学习通过编程解决问题的思路。要成为一个真正的黑客,你需要达到几天就能学会一门编程语言的水平,你可以将文档里的信息和你已经掌握的知识结合起来,很快就学会一门编程语言。这意味着你需要先学会机种思路截然不同的语言才行。
编程是一个复杂的技能,我无法给你完整的指南来教会你如何编程,不过我可以告诉你,书本和课程也无法教会你如何编程——很多黑客,或者也许几乎所有的黑客,都是靠自学的。你从书本上学到语言的特点——只是一些皮毛,但要使书面知识成为自身技能,你只能通过实践和虚心向他人学习。因此你要做的就是 (a) 读代码,(b) 写代码。
学习编程就象学习自然语言写作一样。最好的做法是读一些大师的名著,试着自己写点东西,再读些,再写点,再读些,再写点……如此往复,直到你的文章具备范文的力量和感觉为止。
以前要找适合阅读的好代码并不容易,因为几乎没有大型程序的源代码能让新手练手。这种状况已经戏剧性地发生变化;开源软件、编程工具、和操作系统(全都由黑客写成)现在已经随处可见。让我们在下一个话题中继续讨论……
2. 学习使用开源的 Unix 系统。
我将假设你已经有一台个人计算机供自己使用了(你可以体会一下这意味着多少东西。早些时候,计算机是如此的昂贵,没有人能买得起。而黑客文化就是在那样的环境下演化来的)。新手们能够朝学习黑客技能迈出的最基本的一步,就是找一版 Linux 或 BSD-Unix,安装在个人电脑上,并且把它跑起来。
没错,这世界上除了Unix还有其他操作系统。但它们都是以二进制形式发布的——你无法读到它的源代码,也不可能修改它。尝试在运行 DOS、Windows、或 MacOS 的机器上学习黑客技术,就象是穿着骑士铠甲学跳舞。
除此之外,Unix 还是 Internet 的操作系统。你可以学会上 却不知道 Unix,但你不了解 Unix 就无法成为一名 Internet 黑客。因此,今天的黑客文化在很大程度上是以 Unix 为核心的。(这点并不总是真的,一些很早的黑客对此一直很不满,但 Unix 和 Internet 之间的联系已是如此之强,就连 Microsoft 这样强力的公司也对此也无可奈何。)
所以, 安装一套 Unix 吧——我个人偏爱 Linux,但还有其他种类共你选择(是的,你可以在同一电脑上同时安装 Linux 和 DOS/Windows)。学习它,运行它,鼓捣它。用它上 Internet。阅读它的源代码。修改它的源代码。你会用到很多优秀的编程工具(包括 C, LISP,Python 及 Perl),这些工具在 Windows 下是做梦都没法得到的。你会觉得乐趣无穷。当你有一天成为大师再回顾初学的日子,你会觉得那时学到的东西可真多。
如果你想了解更多关于学习 Unix 的信息,读一下 The Loginataka(译注:ESR 的另一著作,可以称为黑客大藏经)吧。也许你还想看看 The Art of Unix Programming (译注:Unix 编程艺术,经典著作)。
你可以访问 Linux Online! 站,这个 站可以帮你起步。你可以从那里下载到Linux,或者更好的办法是找一个本地的 Linux 用户组,让他们帮你安装 Linux。
在这份 HOWTO 文档发布后的前十年里,关于 Linux 我写的是,从新人的观点来看,所有的Linux 发行版都差不多,但在 2006-2007 之间,我们终于有了一个最佳选择:Ubuntu。我们可以说各种Linux 发行版各有千秋,但 Ubuntu 是新人最容易上手的一个发行版。
你可以在 www.bsd.org 找到 BSD Unix 的求助及其他资源。
Linux 有一种被称为 Live CD 的发行方式,这种发行版会从CD 运行起来,而且不会动到你硬盘里的东西,Live CD 是尝试 Linux 的一个不错的方法。由于光驱读写本来就比较慢,Live CD 的速度一般也会比较慢,不过 Live CD 总归是一个能尝试各种可能性而又不过激的方法。
我有写一篇关于 Unix 和 Internet 基础的入门文章。
对于新手,我以前不鼓励你自己独立安装Linux 或者 BSD,现在这些系统的安装工具已经足够好了,就算对新手来说,独立安装操作系统也不是不可能的事。无论如何,我还是推荐你联系本地的 Linux 用户组,向他们寻求帮助,这会进程更加顺利。
4. 学习英语,如果你的水平不够用的话。
作为一个以英语为母语的美国人,我以前很不情愿提到这点,免得被当做一种文化上的帝国主义。但相当多以其他语言为母语的人一直劝我指出这一点,那就是:英语是黑客文化和 Internet 的工作语言,只有懂英语,你才能在黑客 区顺利做事。
大概1991年的时候,我就了解到许多黑客在技术讨论中使用英语,甚至有时他们来自同一种母语也在用英文讨论。在现阶段,英语有着比其他语言丰富得多的技术词汇,因此是一个对于工作来说相当好的工具。基于类似的原因,英文技术书籍的翻译通常都不怎么令人满意。(如果有翻译的话)。
Linus Torvalds 是芬兰人,但他的代码注解是用英语写的(很明显他从没想过其他的可能性)。他流利的英语。是他能够管理全球范围的 Linux 开发人员 区的重要因素。这是一个值得学习的例子。
就算你的母语是英语,这也无法保证你的语言技能足够达到黑客的标准。如果你的写作文字不通、语法混乱、错字连篇,包括我在内的大部分的黑客都会忽略你的存在。虽然写作马虎不一定意味着思考也马虎,但我们发现两者的关联性还是挺强的——马虎的头脑对我们来说毫无价值,如果你写作能力不够,就好好学习写作吧。
和大部分不涉及金钱的文化一样,黑客王国靠声誉运转。你设法解决有趣的问题,但它们到底多有趣,你的解法有多好,是要由那些和你具有同样技术水平,或比你更厉害的人去评判的。
相应地你需要认识到,当你在玩黑客游戏时,你的分数主要是靠其他黑客对你的技术的评价得到的(这就是为什么只有在其它黑客称你为黑客时,你才算得上是一名黑客)。常人的印象里,黑客是一项独来独往的工作,所以上述评价方式并不为众人所知。另一个黑客文化误区是拒绝承认自我或外部评价是一个人的动力,这种想法在 1990 年代末以后就逐渐衰退了,但现在还有人这么认为。这也是让上述评价方式鲜为人知的原因之一。
明确地讲,黑客行为就是人类学家所称的“奉献文化”。在这里你不是凭借你对别人的统治来建立地位和名望,也不是靠美貌,或拥有其他人想要的东西,而是靠你的贡献。尤其是贡献你的时间、你的创造、以及你的技术成果。
要获得其他黑客的尊敬,你可以从下面五种事情着手:
1. 撰写开源软件
第一个方法(也是最重要,最传统的方法)是写些被其他黑客认为有趣或有用的程序,并把程序源代码提供给整个黑客文化圈使用。
(过去我们称之为“free software (自由软件)”, 但这却使很多不知 free 的精确含义的人感到困惑。现在我们很多人,根据搜索引擎 页内容分析,至少三分之二的人在使用”open-source software,即“开源软件”这个词)。
黑客领域里最受尊敬的偶像,是那些写了大型的、好用的、用途广泛的软件,并把它们发布出来,使得每人都在使用他软件的人。
但是从历史方面来讲有一点值得一提。虽然黑客们一直认为开源软件的开发者是真正的黑客,但在 1990 年代中期以前,大部分黑客会把自己的主要时间用来撰写闭源软件,直到我 1996 年开始写这篇 HOWTO 时也是如此。但从 1997 年后开源软件进入了主流,而且改变了这一切。以现在的观点来看,“黑客 群”和“开源开发者”是对这一个 群的两种称呼,但值得记住的是,以前这两者的概念并不完全一样。要了解更多信息,你可以看看 关于黑客、开源、以及自由软件的历史这一节的内容。
2. 帮助测试并调试开源软件
如果你是个新手,试着找一个你感兴趣的正在开发中的程序,做一个好的 beta 测试员。你会自然地从帮着测试,进步到帮着抓 bug,到最后帮着改程序。你会从中学到很多,而且善因种善果,以后别人也会很乐意帮助你。
最后,还有一些不要去做的事情。
不要使用愚蠢的,哗众取宠的ID或昵称。
不要卷入 Usenet(或任何其他地方)的骂战。
不要自称为“cyberpunk( 络朋克)”,也不要浪费时间和那些人打交道。
不要让你的 email 或者帖子中充满错误的拼写和语法。
以上的事情只会为你招来嘲笑。黑客们个个记忆超群——你将需要数年的时间让他们忘记你犯下的错误。
名的问题值得深思。将身份隐藏在虚假的名字后是骇客、软件破解者、及其他低等生物幼稚愚蠢的行为。黑客不会做这些事;他们对他们所作的感到骄傲,而且乐于人们将作品与他们的真名相联系。因此, 如果你现在还在使用假名,那就放弃它吧。在黑客文化里假名是失败者的标记。
关于黑客、开源、以及自由软件的历史
我在这里所描述黑客精神和 会远远早于1990 Linux 出现的时候,我第一次涉足黑客圈是 1976 年,而究其根源则可追溯到20世纪60年代初。但在 Linux 出现之前,大多数黑客使用的操作系统要么是私有的商业版本,要么是自己开发的未得到广泛使用的系统(例如麻省理工学院的 ITS 系统)。虽然那时也有人想要改变这种状况,但他们的努力影响范围相当有限,充其量仅在某个黑客 区有少数忠实用户而已。
现在所谓“开源”历史和黑客 区的历史几乎一样长,但直到 1985 年前,它只是一种没有固定称谓的习惯做法,而不是一套有理论做后盾,有宣言做前锋的自觉运动。这种状态在 1985年结束了,长老级黑客 Richard Stallman(也被称为“RMS”)将其命名为“自由软件 (Free Software)”。这种命名也是一种宣言的方式,不过大多数黑客 区都不接收这种包含明显思想烙印的标签。因此而大多数现有的黑客 区从来没有接受。结果,“自由软件”这一标签被黑客 群中声音较大的少数人(尤其是 BSD Unix 的相关人士)拒绝掉了,而剩下的大部分人(包括我)虽然也有保留意见,可也还是沿用了这一称谓。
尽管很多人存在保留意见,RMS 的“自由软件”的大旗也一直举到了 1990 年代中期。直到 Liunx 崛起时它才受到了重大挑战。Linux 给了的开源开发者一个新的自然归宿,很多项目都已我们现称的开源的方式由 Unix 移植到了 Linux 系统中。Linux 的 区也得到了爆炸性增长,成为了一个比以前黑客文化更为庞大,并且异质化的新的群体。RMS 曾今尝试将这一 群也归并到他的“自由软件运动”大旗下,但终究没有成功,原因可以归于 Linux 区的样性,以及 Linus Torvalds 本人的质疑。Torvalds 公开拒绝了 RMS 的自由软件思想,但还是沿用了“自由软件”这一术语,这也引来了很多年轻黑客的效仿。
当我第一次发表这篇 HOWTO 的时候,黑客 团正在围绕着 Linux 和其它几个开源操作系统(尤其是 BSD Unix 的衍生系统)进行着快速的重组。几十年来围绕着闭源系统进行闭源开发的方式还没有开始淡出集体记忆,但在大家看来,这似乎已经是死去的历史了。越来越多的黑客都已经开始注重自己在开源项目(例如 Linux、Apache 等)上的贡献,并将这些贡献当做自己的成就。
然而在那个时候“开源”这一名词还没有出现。这个名词是 1998 年初才开始出现的,而在出现的半年内,大部分的黑客 区就接受了这一名词,只有少数不接受这一概念的人还在坚持使用“自由软件”这一名词。1998 年以后,或者更准确地说是 2003 年以后,所谓的“hacking” 和 “开源(自由)软件开发”的含义已经非常接近了。从今天的眼光来看,这种区分已经没有意义了,看趋势,这个现状将来也不大可能有多大的改变。
不管怎样,这段变更的历史还是值得记住的
【黑客工具包♂资料领取♂】

文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树首页概览22584 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!