Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

黑客基础技能

黑客的态度固然重要,但技能更加重要。态度无法替代能力,而且有一套必备基础技能,你必须先掌握,否则没有任何黑客会认可你称得上黑客。

这套技能清单会随着时代缓慢变化:新技术诞生,旧技能逐渐过时。比如过去它曾包含机器语言编程,而直到最近才纳入 HTML。但就目前而言,它明确包含以下几项。

  1. 学会编程

    这当然是最核心的黑客技能。如果你一门计算机语言都不懂,我建议从 Python 开始学起。它设计干净、文档完善,对初学者也相对友好。尽管是一门很好的入门语言,但它绝不是只玩具:它非常强大、灵活,足以胜任大型项目。我写过一篇更详细的 Python 评测:http://noframes.linuxjournal.com/lj-issues/issue73/3882.html。Python 官方网站 http://www.python.org 上也有教程。

    Java 也是一门适合学习编程的语言。它比 Python 更难一些,但编译出来的代码执行速度更快。我认为它非常适合作为你的第二门语言。

    但要认清一点,如果你只懂得一两门语言,是达不到黑客的水平、甚至称不上程序员的——你需要掌握编程的通用思路,而不局限于哪一门具体语言。要成为一名真正的黑客,你得达到这种境界:拿到一门新语言的手册,能将其中的内容与你已知的知识关联起来,短短几天就能上手。这意味着你应该学习几门思路截然不同的语言。

    如果你进入严肃的编程领域,你必须学 C,这是 Unix 的核心语言。C++ 与 C 关系非常密切;如果你懂其中一门,学另一门不会太难。但这两门语言都不适合作为第一门语言入门。

    对黑客来说,其他特别重要的语言还包括 Perl(http://www.perl.com)和 LISP(http://snaefell.tamu.edu/~colin/lp/)。出于实用角度,Perl 值得学。它广泛用于动态网页和系统管理,所以即使你永远不写 Perl,也至少要能读懂它。LISP 值得学,是因为当你彻底领悟它的时候,会获得深刻的启迪——这份感悟会让你此后整个编程生涯都受益,哪怕你日常很少真正使用 LISP。

    实际上,最好能把这 5 门语言全都学一遍(Python、Java、C/C++、Perl、LISP)。它们不只是黑客最重要的编程语言,更代表几种截然不同的编程范式,每一门都能带给很大的启发。

    我无法在这里给出完整的编程学习指南——编程是一门复杂的技艺。但我可以明确告诉你,只靠书本、课程是远远不够的(很多顶尖黑客,甚至可能是大多数都是自学的)。你能从书籍里学到语言特性、零散知识点,可是把知识内化为技能的思维模式,只能靠实践、阅读借鉴别人的好代码不断历练。真正有效的路径是:(a) 阅读代码;(b) 动手写代码。

    学习就像学习用一门自然语言写作。最好的方式是阅读大师的作品,自己动手创作;多读、多写,再多读、多写……直到你写出的文章开始有了范文那种精炼有力的风格。

    在过去,新手很难找到优质代码阅读,因为能让新手黑客研读、动手修改的大型开源程序很少。如今局面已经彻底改变——开源软件、编程工具和操作系统(全都出自黑客之手)已经随处可见。这也正好引出了我们的下一个话题……

  2. 获取一款开源 Unix,并学会使用运行

    先假定你拥有一台个人电脑,或是能够借到一台(现在的年轻人条件可太好了:-))。新手想要学习黑客技能,最重要的一步,就是拿一份 Linux 或是某款 BSD-Unix,装在个人电脑上亲自上手使用。

    是的,这个世界上除了 Unix 还有其他操作系统,但它们是二进制分发的,你读不到代码,也无法修改它。打算在 DOS、Windows 或 MacOS 机器上学习黑客技能,就像裹着石膏学跳舞。

    此外,Unix 是互联网原生的操作系统。就算不懂 Unix 也能上网,但不理解 Unix,就不可能成为互联网黑客。正因如此,今天的黑客文化强烈地以 Unix 为中心。(也不是一直都这样,一些老牌黑客至今仍对此不太满意,但 Unix 和互联网早已深度共生,哪怕微软手握雄厚资本与行业影响力,似乎也难以撼动这层联系。)

    所以,装上一套 Unix。我个人喜欢 Linux,当然你还有别的选择(没错,同一台机器可以同时运行 Linux 和 DOS/Windows)。去学习它、运行它、动手折腾它;用它接入互联网,阅读源码、修改源码。你能拿到一大批编程工具(包含 C、LISP、Python、Perl),它们的水准比微软系操作系统提供的工具要好太多了,可以说是在微软操作系统上是梦寐以求的。你会获得乐趣,而且你会在不知不觉中吸收大量知识,直到后面有一天你再回头看,你已经是一名黑客大师了。

    想要了解更多学习 Unix 的相关内容,可以阅读《登录那吒迦》(Loginataka):http://www.tuxedo.org/~esr/faqs/loginataka.html 想要获取 Linux,可以访问“哪里可以获取 Linux”页面:http://linuxresources.com/apps/ftp.html

    BSD Unix 的帮助文档与资源站点:http://www.bsd.org

    (提示:如果你是纯新手,我其实不太建议独自硬啃 Linux 或 BSD 的安装流程。想学 Linux,可以寻找本地 Linux 用户社群求助;也可以联系 Linux 互联网互助合作社 LISC:http://www.linpeople.org。LISC 维护着 IRC 交流频道 http://openprojects.nu/services/irc.html,你能在频道里找人协助。)

  3. 学会使用万维网,并编写 HTML

    黑客文化创造的大部分成果,都默默在幕后运转,支撑工厂、写字楼与高校正常运作,却不会直观影响普通人的生活。万维网是为数不多的重大例外。这件闪闪发亮、出自黑客之手的 “大玩具”,就连政客都承认它正在改变世界。只凭这一点(当然还有很多其他理由),你就有必要学怎么用万维网。

    这不只是学会用浏览器(谁都会),你还要掌握网页标记语言 HTML。如果你还不会编程,书写 HTML 能够帮你养成一些有益的思维习惯。动手搭建一个个人主页吧。

    不过只有个人主页,离成为黑客还差得很远。网络上到处都是个人主页,其中绝大多数都是毫无意义、没有实质内容的垃圾。就算页面做得花里胡哨,它们仍然只是垃圾(想要了解更多,可以阅读《HTML 地狱页》(The HTML Hell Page):http://www.tuxedo.org/~esr/html-hell.html)。

    要让你的主页有价值,它必须有内容——要能让其他黑客感到有趣,或是对他们有所帮助。这就引出了下一个话题……