A.4 黑客的基本技能

    对黑客来说,态度固然重要,但技能更重要。态度并不是能力的替代品,有一些特定的基本技能是你必须要掌握的,否则没有黑客愿意称你为“黑客”。

    这些基本技能会随时间缓慢变化,因为技术进展会产生新技能并淘汰旧技能。例如,以前它会包括机器语言编程,而不会有现在的HTML。不过目前看来,很明显基本技能包括以下几个方面。

    1.学习如何编程。

    这当然是一项基本的黑客技能。如果你不懂任何计算机语言,我建议从Python入门。它设计整洁,文档良好,对初学者很友好。作为一个好的入门语言的同时,它并不是一个玩具,它非常强大、灵活,完全适用于大型项目,对此我曾写过一个较为详细的评估(http://noframes.linuxjournal.com/lj-issues/issue73/3882.html)。其教程则可在Python网站上找到(http://www.python.org)。

    Java也是一个不错的学习编程的语言。它比Python要难,但可以产生比Python更快的代码,我想它可以作为一个优秀的第二语言。

    但是要注意,如果你只懂一两种语言,那你不会达到黑客的技能水平,甚至连程序员都称不上——你需要学会以一种独立于任何语言的一般方式来思考编程问题。要成为一名真正的黑客,你需要到达这样的程度:你能把手册上的东西和你已经知道的东西联系起来,从而可以在几天之内学会一门新语言。这意味着你需要学习几种非常不同的语言。

    如果你想进入真正的编程领域,则必须学习C,这是UNIX的核心语言。C++和C的关系很密切;如果你懂其中一个,学另一个并不会太难。不过,这两种语言都不是好的入门语言。

    其他对黑客而言比较重要的语言有Perl(http://www.perl.com)和LISP(http://snaefell.tamu.edu/~colin/lp/)。Perl由于其实用性而值得一学,它广泛应用于动态网页和系统管理,因此即便你永远不写Perl,你也应该学习如何读它。LISP也很值得学习,当你最终掌握它时,你会得到深刻而彻悟的体验,这会让你在未来的日子里成为更好的程序员,即便在实际上你不怎么用它。

    其实,最好把这五种语言(Python、Java、C/C++、Perl和LISP)都学了。它们不只是最重要的黑客语言,还代表了截然不同的编程方法,每一种都会让你受益匪浅。

    这里我没法给出如何学习编程的完整指导——这是个复杂的技能。但我可以告诉你,书本和课程也无法做到(很多黑客,也许是大多数黑客,都是自学成才的)。你可以从书本上学到语言特征,但那只是皮毛,想要获得将知识转化为技能的思维模式,只能通过实践和跟随大师。做法就是读代码和写代码。

    学习编程就像学习如何写好自然语言。最好的方式是阅读大师们写的东西,然后写你自己的东西,多读一些,多写一些,再多读些,再多写些……如此循环往复,直到你写的东西开始发展出你在经典中所体会到的力量和简洁。

    以前想要找些好代码来读挺不容易,因为几乎没有大型项目会以源码形式提供给成长中的黑客阅读和练手。现在这种情况已经发生了戏剧性的变化。开源软件、开源编程工具、开源操作系统(这些都是黑客写的)已经随处可见。这就带来了下一个话题……

    2.找一个开源UNIX,学习使用和运行它。

    假设你有台PC或者说有台PC可以让你用(现在的孩子们真幸福:-))。对任何新手来说,获取黑客技能最重要的一步是搞一份Linux或是BSD-UNIX,把它装到个人机器上,然后运行它。

    是的,除了UNIX,这个世上还有其他操作系统,但都是以二进制发布的——你没有代码可读,没有代码可改。尝试在DOS或Windows或MacOS之下学习黑客技能就像全身打着石膏学跳舞。

    而且,UNIX是互联网的操作系统。不懂UNIX,你也可以学习使用互联网,但你不会成为互联网上的黑客。因此,相当大程度上,今天的黑客文化是以UNIX为中心的。(并不是历来如此,一些老资格黑客仍然对此不满,但UNIX和互联网之间的共生关系已经如此紧密,即便以微软的能量,也不可能真正撼动它。)

    所以,找一个UNIX——我个人喜欢Linux,但还可以有别的(是的,你可以在同一台机器上既运行Linux又运行DOS/Windows)。学习它、运行它、捣鼓它、用它和互联网对话、读它的代码、改它的代码。你会得到比微软操作系统下不知好多少倍的编程工具(包括C、LISP、Python和Perl),你会乐在其中,你吸收的知识会比你当时意识到的更多,当你成为一名黑客高手后,你就明白了。

    关于如何学习UNIX的更多知识,参见Loginataka(http://www.tuxedo.org/~esr/faqs/loginataka.html),关于如何着手实践Linux,参见"Where can I get Linux"(http://linuxresources.com/apps/ftp.html)。在http://www.bsd.org可以找到BSD UNIX的帮助和资源。

    (注意:如果你是个新手,我真的不建议你一个人玩Linux或BSD。对于Linux,找一个当地的Linux用户组并寻求帮助,或者可以找LISC(Linux Internet Support Co-Operative,http://www.linpeople.org),LISC维护着IRC频道[http://openprojects.nu/services/irc.html],你可以从那儿获得帮助。)

    3.学习如何使用WWW和写HTML。

    黑客文化制造的大多数东西都是看不见的,这些东西帮助工厂、办公室和大学运转,但对非黑客人群的生活没有明显影响。Web是个很大的例外,连政治家们都承认,这个庞大而闪闪发光的黑客玩具正在改变着世界。单单是这个原因(当然还有很多其他好处)你也要学习怎么掌握Web。

    这并不只是说让你去学习如何使用浏览器(谁都会做这个),而是去学习怎样使用HTML这一Web标记语言。如果你不懂怎样编程,写HTML能教会你一些思维习惯,而这会有利于你学习编程。所以,先写个主页吧。

    但有一个主页,和让你成为一名黑客相去甚远。网上到处都是主页,但大多数是毫无意义和毫无内容的泥巴——它们华丽而俗气,试图吸引你的注意力,但泥巴终归是泥巴(更多内容可见HTML Hell Page:http://www.tuxedo.org/~esr/html-hell.html)。

    要想有价值,你的网页必须要有内容——必须有趣并且/或者对其他黑客有用,这给我们带来了下一个话题……