如何成为一名黑客!
本文纠正了主流媒体给读者造成的“黑客”和“骇客”之间的混淆。同时也考虑到了黑客的历史、自然、属性、道德和装束,更多的是,有兴趣想要成为其中一员的你可以听听别的黑客们反省社会为什么这样对待他们的心里话吧。继续读下去!
在今天的计算机世界里新一代黑客正把开源变为一股强大的力量。他们是20世纪六七十年代刚刚有计算机时蓬勃发展的早期黑客文化的继承者——相信软件应该共享、大家都能受益的团队的部分成员。软件的创建者,从另一方面讲自然不同意黑客的这种观点。他们选择增加数字安全的措施,以保持他们的软件安全性。
这些专家级程序员和网络天才追溯他们的族谱可以回到最早的分时小型机和 ARPAnet 实验。这个团队的成员创造了“黑客”。黑客建立了互联网并开发如今的 UNIX 操作系统。黑客运营网络新闻组,使得万维网运行良好。
得益于成本相对较低的计算机和互联网的出现,新的黑客相对自己的前辈多不胜数、效率更高、更加团结。他们因一个共同的目标——编写优秀的软件,和一个共同的愿望——软件应该对所有人免费联系在一起。
黑客引发了开源革命
1991年,Linus Torvalds 在互联网新闻组发了个帖子,询问创建更好的操作系统的建议。他创建项目的原因只是由于个人爱好。他说,自己在这方面也永远不会是“大而专业”。1994年,Linux 第一个正式版本发布。
Marleen Wynants 和 Jan Cornelis 在他们的论文《未来会有多开源?》里讨论免费和开源软件对经济、社会和文化的影响时提出,Linux 不仅仅只是黑客的玩具。在 Linux 的推动下,开源黑客文化已从地下浮出水面。业余黑客程序员开始和软件生产和分销部门结成联盟。于是新的公司和组织伴随着新产品、许可证和团队一起建立了。
1997年的春天,一群自由软件社区的领导人聚集在加利福尼亚州。这伙人包括 Eric Raymond 、Tim O’Reilly 和 VA Research 主席 Larry Augustin 等等。他们关心的是找到一种方法以把免费软件推广给曾经回避这个概念的人。这些人正是免费软件基金会的“反商业信息”(避免全世界真正欣赏免费软件能力)所关注的。
在 Eric Raymond 的坚持下,小组认为,他们很大程度上缺乏的是赢得注意力市场营销活动设计能力,而不仅仅是市场占有率。源于此次讨论一个描述他们推广的软件的新术语诞生了:开源。一系列的指导方针被制定出来定义开源软件。然而早就有了发展多年的开源应用和互联网协议的黑客亚文化,只是没有明确使用“开源”标签。在最近几年,尤其是本次会议之后,这种说法才出现在大众面前。
1998年,一份万圣节文档透漏出了微软的焦虑。文档包含了一系列免费软件、开源软件、尤其是和Linux 的相关政策的机密备忘录。在这些泄露出来的文档中还有对原始备忘录的一些列应对措施。
泄露的文件和应对措施被 Eric Raymond 于1998年万圣节期间发表出来。被迫承认该备忘录确实源于公司内部,微软以个人行为为由解雇他们这几个工程师。“Linux 已经被部署在关键任务、被公众认可的卓越的商业环境。”Vinod Valloppillil 指出,他是备忘录的作者之一。
该文件还承认开源软件是长期可信的,FUD(传播恐惧、不确定和怀疑)策略不能被用来打击它,最近的案例研究提供了非常显着的证据:其商品品质可能被OSS项目追平/超出。
FUD曾是微软的传统营销策略,曾被内部认可和理解。该策略的例子包括宣布推出不存在的产品或散布竞争产品会导致 Windows 崩溃的谣言。
那么,这些黑客是什么人呢?
如果你恰巧碰到他们,并询问他们的手艺,黑客会兴高采烈地告诉你,编程是你穿着衣服时最好玩的事情,虽然衣服并不是必须的。
相对大多数只喜欢学习最低需求的用户,黑客就是那个喜欢探索计算机细节并扩展其能力的人。最初,“黑客”曾是计算机程序员、设计师和工程师之间表达尊重的术语。黑客曾是那个最初原创程序的创造者。
对程序员来说,“黑客”意味着掌握最本质的东西:那些可以让电脑做他们所想的——不论计算机本身愿意与否。不幸的是,这个词已经被滥用,并赋予了一个贬义——某个利用计算机和网络闯入系统、破坏数据、窃取正版软件、并执行其他破坏性或非法行为的人。
准确定义那种人的术语其实是“骇客 ”
黑客脑袋里随时充满了想法。他们的大脑不停地采集、消耗、或拆分事物、同时再重新组装。但似乎驱动他们的是一种强烈的本能,或者是进行分析和组织的需求。当黑客首次遇到技术,他们不是吸收其形,而是直奔细节。他们以技术的逻辑为食。当他们沟通时,他们可以很精准地说出或写下他们学到的东西。
黑客的态度
黑客解决问题并创建事物,他们相信自由并自愿互助。黑客精神并不局限于软件(或硬件)领域。黑客本质是独立于其工作的介质。
黑客主义思想已经超越了计算机行业。理想的黑客文化适用于任何投入激情去追求的人。苹果Macintosh 计算机团队的核心成员 Burrell Smith 说“黑客几乎可以做任何事情。你也可以是一个黑客木匠,并不一定要高科技。我认为它必须要有技艺,并关心你做的事。”
在他的《生物朋克》一书中,Marcus Wohlsen 给出了原因:修补匠的原始冲动是成为黑客的一个重要的先决条件。在这些天才从业者手中,修修补补是创造力的重要形式。相对于那种隐含的独行的艺术家或天才的发明家试图获取无中生有的灵感的浪漫形象,它是不同品牌的创造力、实践在不同的精神中。
修补一般是说摆弄或调整,周末在车库里试图把雅马哈 FZ 16 多挤几个马力出来。但这仍然停留在“工作并非真正的工作”的想法。顶起你吉普车的减震系统并换上低压轮胎并不是你想做而只是你必须做的事情。而修补是因兴趣而工作。
黑客们喜欢修修补补的乐趣,不过他们的信条中也有恶作剧:仅仅因为工作有乐趣并不意味着不重要。“玩”在黑客的感官里不仅仅是娱乐的方式,也是对待创新的态度,就像带有竞争力活力和天赋的夺冠的小动作和理智地羡慕。
玩象棋时,特级大师和普通人都是16个棋子。但在前者手中,游戏表现出了美丽和智慧的力量。同样的方式,天才工匠可以重新排列现有引擎零件或计算机代码片段,从而创造出全新的形式。
对于黑客来说,心灵的逻辑框架需要扩展到越来越多的普遍活动中。你可以问黑客问题,并去感受他们在给出确切答案前精神积蓄的过程。
玛吉·桑德斯每周六早上会开大众汽车到 Safeway 超市,回程时会问她的丈夫:“你愿意帮我生成杂货吗?”鲍勃·桑德斯会回答:“不。”惊呆了,玛吉会自己买杂货。这发生了几次,她突然爆发了,诅咒他并要求他解释为什么不帮她。
“这是个愚蠢的问题”,他说,“当然,我不会帮你生成杂货。如果你问我,能帮你买杂货吗,那就另当别论。“这就像玛吉提交了一份程序到TX-0,程序运行时发现语法不当,所以崩溃了。直到她调试成功,鲍勃·桑德斯心理计算机才能正确运行。
黑客伦理
维基百科把“黑客伦理”作为一个通用词组进行了精确地解释:黑客团队的道德价值观和哲学标准。早期的黑客文化和哲学产生在20世纪50、60年代的美国麻省理工学院(MIT)。
术语“黑客伦理”是源于记者史蒂芬,他的1984年的书把黑客描述为计算机革命的英雄。骇客伦理的指导方针使我们更容易的理解计算机是怎么演变成今天我们了解和依赖的个人设备的。
黑客伦理是一种充满哲学、伦理和梦想的新的生活方式。虽然,黑客伦理的内容没有经过公开辩论和讨论,但已被默默地认可和接受了。
正如史蒂芬描述的“黑客伦理已演变为免费和开源软件(FOSS)”。真正遵从黑客伦理的黑客——尤其勇于实践的——一直都是免费和开源软件运动的支持者。
黑客伦理的一般原则是:
黑客的奇特穿着
黑客穿着仅为舒适、功能和少维护,而不是特别在意外观。他们无法容忍套装和其他正装。因为不愿统一着装而辞去工作对黑客来说并非罕见。
当他们无故被要求统一着装,总是会想法破坏,比如,搭配一条荒谬新奇的领带。我认识的大部分黑客把领带看做能够妨碍大脑供血的凶器,客观解释了戴领带者的行为。一条领带彰显了你超级失败者的名声,就像没有本事却着正装的超级用户——某些用UNIX系统root特权却不清楚自己在干啥的人;相当于三岁的小孩拿AK-47当玩具。在严峻的压力下,他或许会挽起袖子、松开领带,但这毫无用处。女黑客几乎从不画浓妆,很多人一点儿都不化妆。
如何成为一名黑客
在他的同名散文中,Eric Steven Raymond 在其他事项中列出想成为黑客者需要的基本技能。他推荐了以下五种语言:Python、Java、C/C ++、Perl 和 Lisp。
Python ——这是个对初学者来说设计清新、文档良好并简单易学的语言。作为一个好的第一语言,它不只是一个玩具;它是非常强大和灵活的,并且非常适合大型项目。Paul Graham 指出,许多黑客使用 Python 是因为他们喜欢源代码样式。
这样选择语言好似很轻率。其实并非看上去那么轻率——当你编程时,阅读代码时间远大于写代码的时间。你要像雕塑家处理陶器生的斑点一样处理你的源代码。所以源代码丑陋的语言会使严格的程序员发狂,就像满是肿块的陶器会逼疯雕塑家一样。
Java ——Eric Raymond 认为 Java 是一门学习编程的好语言。当今的大多数黑客可能不会同意。最大的异议是 Java 不具备扩展性。编程时媒介的扩展性是探索过程的一部分,其中包括理解所有的要求和力量—— 内部的或外部的——一个系统的设计核心。
James Gosling ——著名的Java语言之父,在他的论文《Java:概述》中说,“像 Lisp、TCL 和Smalltalk 这样的高动态语言通常用于原型设计。其中一个成功的原因是高鲁棒性;另一个原因是他们不要求早期决策。 Java 特性完全相反:它迫使你明确地做出选择“。
就像 Lisp 和 Java 之间的不同,Paul Graham 在他的书《黑客和画家》中指出,Lisp 用于指出计算的思路和表达方式,而 Java 则用了表达完整的程序。
正如 James Gosling 说的,Java 要求你早做决策。而且一旦确定下来,该系统——一组类型声明、编译器和运行时系统——就很难被更改了,即便是因为你无意的错误导致需要更改。其影响就像为了减少人为损伤而在你的赛车上装的调速器(车速限制器)。黑客不喜欢语言限制他们。黑客要的只是力量。
C/C++ ——如果你要正式编程,你将不得不学习 C 这个 UNIX 的核心语言。C++ 和 C 关系密切,如果你已知其一,学习另一个就不困难。然而,第一次学的话哪个都不容易学。
Perl ——这是对黑客来说另一个尤其重要的语言,实践证明值得学习。它非常广泛用于动态网页和系统管理,因此,即使你从不写 Perl 代码,你也要会读。
Lisp ——真正认真的黑客应该考虑学习 Lisp。学会 Lisp 就能得到渊博的启蒙经验;即使你从来没有真正使用 Lisp,这种体验也将使你余生成为一个更好的程序员。
获取 Linux
任何新手都可以采取的获得的黑客技能的一个最重要的一步是获取 Linux 或 BSD-Unix 的副本,并把它安装到个人计算机上运行。是的,这个世界上除了 UNIX/Linux 还有其他的操作系统。但他们都是以二进制形式发布的——您不可能读懂这样的代码,更不能修改了。
努力学习去破解 Windows 机器上就像是在努力学习跳舞。UNIX 是互联网操作系统。即便不知道 UNIX 你也可以学习使用互联网,但是你不理解 UNIX 就无法成为互联网黑客。因此,当今的黑客文化是相当强烈以 UNIX 为中心的。
因此,搞个 Linux、学习它、运行它、修改它。用它上网。阅读并修改代码。你会得到比 Windows 操作系统下梦想的更好的编程工具(包括 C、Lisp、、Python 和 Perl)。你获取乐趣并获得比想象中更多的知识,直到你作为一个王牌黑客再来回顾。
所以,你是黑客?
你必须赢得“黑客”称号,而不是自称。Eric S Raymond 的同一篇文章中提到早期获取黑客界地位的的一些宝贵经验。其中有两方面的事情你做了就能得到黑客的尊重(完整列表请阅读 Erics Raymond 写的“如何成为一名黑客”)。
编写开源软件。首先(最核心和最传统的)是编写其他黑客觉得很有趣或有用的程序,并给出程序源代码。黑客界最受尊敬的半神是那些写过大的满足普遍需求、并完全共享、人人能用的程序的人。
帮助测试和调试开源软件。站出来调试开源软件也是服务黑客界。世界并不完美,我们难免会把大量的软件开发时间花费在调试阶段。这就是为什么任何开源作者都会告诉你好的beta测试员(能够清晰地描述症状、问题定位准确、容忍快速发布的bug、愿意应用简单的诊断程序)像红宝石一样珍贵。他们会使整个充满延期、精疲力尽的梦魇和小损害的调试阶段大不相同。
如果你是一个新手,试着去找个感兴趣的正在开发中的程序,并当好一个beta测试员把。从帮忙测试程序到帮忙调试程序再到帮忙修改程序是很自然的积累过程。这样你不仅会学到很多东西,也会和将来能帮到你的人结个善缘。
最后,我不得不再次引述 Eric S Raymond 的话, 因为他所说的如此美妙:
我们半开玩笑说'一统天下',但实现这个目标的方式只有服务世界。那意味着你我唯一的出路,意味着要学习如何思考我们在做的这条全新的途径,如何极力去降低默认环境的用户复杂度。
计算机是人类的工具。基本上,设计硬件和软件的挑战最重还是为人类设计—— 所有的人。这条道路将很漫长,而且也不容易。但我们应该为自己和对方把它做好。愿开源与你同在!
(英文地址: opensourceforu ,译者caster_cai,参与CODE翻译赢取巨额C币!)