黑客的基本技能
黑客態(tài)度重要,但技術(shù)更加重要。 態(tài)度無(wú)法替代技術(shù),在你被別的黑客稱為黑客之前,有一些基本的技術(shù)你必須掌握。
這些基本技術(shù)隨著新技術(shù)的出現(xiàn)和老技術(shù)的過(guò)時(shí)也隨時(shí)間在緩慢改變。 例如,過(guò)去內(nèi)容包括使用機(jī)器語(yǔ)言編程,而直到最近才包括了HTML。 總的來(lái)說(shuō)現(xiàn)在主要包括以下技術(shù):
1. 學(xué)習(xí)如何編程。
這當(dāng)然是最基本的黑客技能。如果你還不會(huì)任何編程語(yǔ)言,我建議你從Python開始。 它設(shè)計(jì)清晰,文檔齊全,合適初學(xué)者入門。 它是一門很好的入門語(yǔ)言,并且不僅僅只是個(gè)玩具; 它非常強(qiáng)大、靈活,也適合做大型項(xiàng)目。 我有一篇 Python評(píng)價(jià)詳細(xì)說(shuō)明這點(diǎn)。好的 教程 可以在Python網(wǎng)站得到。 (譯者:比較好的中文Python站點(diǎn)可能是http://pythonrecord.51.net。)
Java也是好的入門語(yǔ)言。它比Python難得多,但是生成的代碼速度也快得多。 它同時(shí)也是一種優(yōu)秀的計(jì)算機(jī)語(yǔ)言,不止是用來(lái)入門。
但是注意,如果你只會(huì)一兩門語(yǔ)言,你將不會(huì)達(dá)到黑客所要求的技術(shù)水平, 甚至也不能達(dá)到一個(gè)程序員的水平——你需要學(xué)會(huì)如何以抽象的方式思考編程問(wèn)題, 獨(dú)立于任何語(yǔ)言。要做一名真正的黑客,你需要學(xué)會(huì)在幾天內(nèi)通過(guò)一些手冊(cè), 結(jié)合你現(xiàn)在所知,迅速掌握一門新語(yǔ)言。這意味著你應(yīng)該學(xué)會(huì)幾種截然不同的語(yǔ)言。
如果要做一些重要的編程工作,你將不得不學(xué)習(xí)C語(yǔ)言,Unix的核心語(yǔ)言。 C++與C非常其他類似;如果你了解其中一種,學(xué)習(xí)另一種應(yīng)該不難。 但這兩種都不適合編程入門者學(xué)習(xí)。而且事實(shí)上,你越避免用C編程,你的工作效率會(huì)越高。
C非常有效率,節(jié)約你的機(jī)器資源。不幸的是,C的高效是通過(guò)你手動(dòng)做很多底層的管理 (如內(nèi)存)來(lái)達(dá)到的。底層代碼都是復(fù)雜極易出現(xiàn)bug的,會(huì)使你花極多的時(shí)間調(diào)試。 如今的機(jī)器速度如此之快,這通常是得不償失——比較明智的做法是使用一種運(yùn)行較慢、較低 效率,但大幅節(jié)省你的時(shí)間的語(yǔ)言。因此,選擇Python。
其他對(duì)黑客而言比較重要的語(yǔ)言包括 Perl和 LISP。 Perl實(shí)用,值得一學(xué);它被廣泛用于動(dòng)態(tài)網(wǎng)頁(yè)和系統(tǒng)管理, 因此即便你從不用Perl寫程序,至少也應(yīng)該學(xué)會(huì)看。許多人使用Perl的理由和 我建議你使用Python的理由一樣,都是為了避免用C完成那些不需要C高效率的工作。 你會(huì)需要理解那些工作的代碼的。
LISP值得學(xué)習(xí)的理由不同——最終掌握了它時(shí)你會(huì)得到豐富的啟迪和經(jīng)驗(yàn)。 這些經(jīng)驗(yàn)會(huì)使你在以后的日子里成為一個(gè)更好的程序員,即使你實(shí)際上很少使用LISP本身。
當(dāng)然,實(shí)際上你最好五種都會(huì)(Python,Java,C/C++,Perl和LISP)。 除了是最重要的黑客語(yǔ)言外,它們還代表了截然不同的編程思路和方法,每種都會(huì)讓你受益非淺。
這里我無(wú)法給你完完全全的指導(dǎo)教會(huì)你如何編程——這是個(gè)復(fù)雜的技能。 但我可以告訴你,書本和上課也不能作到(最好的黑客中,有許多,也許 幾乎都是自學(xué)成材的)。 你可以從書本上學(xué)到語(yǔ)言的特點(diǎn)——只是一些皮毛, 但要使書面知識(shí)成為自身技能只能通過(guò)實(shí)踐和虛心向他人學(xué)習(xí)。 因此要作到 (一)讀代碼及(二)寫代碼。
學(xué)習(xí)如何編程就象學(xué)習(xí)用優(yōu)美的自然語(yǔ)言寫作一樣。 最好的做法是讀一些大師的名著,試著自己寫點(diǎn)東西,再讀些,再寫點(diǎn),再讀些,再寫點(diǎn)…… 如此往復(fù),直到你的文章達(dá)到你體會(huì)到的范文的簡(jiǎn)潔和力量。
過(guò)去找到適合閱讀的好的代碼是困難的,因?yàn)閹缀鯖](méi)有大型程序的源代碼能讓新手練手。 這種狀況已經(jīng)戲劇性地發(fā)生變化;開放源代碼軟件,編程工具和操作系統(tǒng)(全都由黑客寫成)現(xiàn)在已經(jīng) 隨處可見。讓我們?cè)谙乱粋€(gè)話題中繼續(xù)討論……
2. 得到一個(gè)開放源代碼的Unix并學(xué)會(huì)使用、運(yùn)行它。
我假設(shè)你已經(jīng)擁有或者能使用一臺(tái)個(gè)人電腦(今天的孩子們真幸福 :-) )。新手們能夠朝學(xué)習(xí)黑客技能邁出的最基本的一步就是得到 一份Linux或BSD-Unix的一種,安裝在個(gè)人電腦上,并運(yùn)行它。
沒(méi)錯(cuò),這世界上除了Unix還有其他操作系統(tǒng)。 但它們都是以二進(jìn)制形式發(fā)布的——你無(wú)法讀到它的源代碼,也不可能修改它。 嘗試在運(yùn)行DOS或Windows或MacOS的機(jī)器上學(xué)習(xí)黑客技術(shù),就象是帶著腳鐐學(xué)跳舞。
除此之外,Unix還是Internet的操作系統(tǒng)。 你可以學(xué)會(huì)上網(wǎng)卻不知道Unix,但你不了解Unix就無(wú)法成為一名Internet黑客。 因此,今天的黑客文化在很大程度上是以Unix為中心的。(這點(diǎn)并不總是真的, 一些很早的黑客對(duì)此一直很不高興,但Unix和Internet之間的聯(lián)系已是如此之強(qiáng), 甚至連Microsoft也無(wú)可奈何。)
所以, 安裝一套UNIX——我個(gè)人喜愛LINUX但還有其他種類的 (是的,你可以同時(shí)安裝Linux及DOS/Windows在同一電腦上)。 學(xué)習(xí)它,使用它,配置它。用它在Internet上沖浪。閱讀它的源代碼。修改它的源代碼。 你會(huì)得到比在Microsoft操作系統(tǒng)上更好的編程工具(包括C,LISP,Python及Perl)。 你會(huì)覺(jué)得樂(lè)趣無(wú)窮,學(xué)到在你成為大師之前意識(shí)不到的更多的知識(shí)。
想知道更多關(guān)于學(xué)習(xí)Unix的信息,訪問(wèn) The Loginataka。
想知道如何得到一份Linux,訪問(wèn) 我在哪里可以獲得Linux。 (譯者:對(duì)于中文讀者來(lái)講,最簡(jiǎn)單的方式未過(guò)于前往附近的D版/正版光盤店。)
你可以在 www.bsd.org找到BSD Unix的求助及其他資源。
我有寫一篇關(guān)于 Unix和Internet基礎(chǔ)的入門文章。
?。ㄗⅲ喝绻闶且粋€(gè)新手,我不推薦自己獨(dú)立安裝Linux或者BSD。 安裝Linux的話,尋求本地Linux用戶組的幫助;或聯(lián)系 Open Projects Network。 LISC維護(hù)著一些 IRC頻道, 在那里你可以獲得幫助。)
3. 學(xué)會(huì)如何使用WWW和寫HTML
黑客文化建造的大多東西都在你看不見的地方發(fā)揮著作用,幫助工廠、辦公室和大學(xué)正常運(yùn)轉(zhuǎn), 表面上很難看到它對(duì)非黑客的普通人的生活的影響。Web是一個(gè)大大的例外。 即便政客也同意,這個(gè)巨大耀眼的黑客玩具正在改變整個(gè)世界。 單是這個(gè)原因(還有許多其它的),你就需要學(xué)習(xí)掌握Web。
這并不是僅僅意味著如何使用瀏覽器(誰(shuí)都會(huì)),而是要學(xué)會(huì)如何寫HTML, Web的標(biāo)記語(yǔ)言。如果你不會(huì)編程,寫HTML會(huì)教你一些有助于學(xué)習(xí)的思考習(xí)慣。 因此,先完成一個(gè)主頁(yè)。(網(wǎng)上有很多好的教程; 這是一個(gè)。)
但僅僅擁有一個(gè)主頁(yè)不能使你成為一名黑客。 Web里充滿了各種網(wǎng)頁(yè)。大多數(shù)是毫無(wú)意義的,零信息量垃圾——界面時(shí)髦的垃圾, 注意,垃圾的水準(zhǔn)都類似(更多信息訪問(wèn) The HTML Hell Page)。
要想有價(jià)值,你的網(wǎng)頁(yè)必須有內(nèi)容—— 它必須有趣或?qū)ζ渌诳陀袔椭?。這是下一個(gè)話題所涉及的……
4. 如果你不懂實(shí)用性的英語(yǔ),學(xué)習(xí)吧。
作為一個(gè)美國(guó)人和一個(gè)以英語(yǔ)為母語(yǔ)的人,我以前很不情愿提到這點(diǎn),免得成為 一種文化上的帝國(guó)主義。但相當(dāng)多以其他語(yǔ)言為母語(yǔ)的人一直勸我指出這一點(diǎn),那就是 英語(yǔ)是黑客文化和Internet的工作語(yǔ)言,你需要懂得以便在黑客社區(qū)順利工作。
這一點(diǎn)千真萬(wàn)確。大概1991年的時(shí)候我就了解到許多黑客在技術(shù)討論中使用英語(yǔ),甚至當(dāng)他們的母語(yǔ)都 相同,英語(yǔ)對(duì)他們而言只是第二語(yǔ)言的時(shí)候;據(jù)我知道的報(bào)導(dǎo),當(dāng)前英語(yǔ)有著比其他語(yǔ)言豐富得多的技術(shù)詞匯, 因此是一個(gè)對(duì)于工作來(lái)說(shuō)相當(dāng)好的工具。 基于類似的原因,英文技術(shù)書籍的翻譯通常不令人滿意(如果有翻譯的話)。
Linus Torvalds,一個(gè)芬蘭人,用英語(yǔ)注釋他的代碼(很明顯這對(duì)他來(lái)說(shuō)不是湊巧)。 他流利的英語(yǔ)成為他能夠管理全球范圍的Linux開發(fā)人員社區(qū)的重要因素。 這是一個(gè)值得學(xué)習(xí)的例子