如何成為一名黑客?
為什麼會有這份文件?
作為 Jargon File 的編輯和 一些其他有名的類似性質文章的作者,我經常收到充滿熱情的網路新手的郵件提問(確實如此) “我如何才能成為一名出色的黑客?”非常奇怪的是,似乎沒有任何的FAQ或者網路文件來說明這個十分重要的問題,因此我寫了一份。
如果你現在讀的是這份文件的離線拷貝,那麼請注意當前最新版本(英文版)在 http://catb.org/~esr/faqs/hacker-howto.html 可以得到。
注意:在這份文件最後有 FAQ(常問問題解答)。 請在向我提出任何關於這份文件的疑問之前讀兩遍。
目前這份文件有很多翻譯版本: 保加利亞語, 簡體中文, 繁體中文, 丹麥語, 荷蘭語, 法語, 德語, 匈牙利語, 印尼語, 日語, 朝鮮語, 葡萄牙語, 俄語及 瑞典語。 注意由於這份文件時有修正,所以以上翻譯版本可能有不同程度的過時。
什麼是黑客?
Jargon File 包含了一大堆關於“hacker”這個詞的定義,大部分與技術高超和熱衷解決問題 及超越極限有關。但如果你只想知道如何 成為 一名黑客, 那麼只有兩件事情確實相關。
這可以追溯到幾十年前第一臺分時小型電腦誕生, ARPAnet 實驗也剛展開的 年代,那時有一個由程式設計專家和網路名人所組成的, 具有分享特點的文化社群。 這種文化的成員創造了 “hacker” 這個名詞。黑客們建立了 Internet。 黑客們發明出了現在使用的 UNIX 作業系統。黑客們使 Usenet 運作起來, 黑客們讓 WWW 運轉起來。如果你是這個文化的一部分,如果你對這種文化有所貢獻,而且 這個社群的其它成員也認識你並稱你為 hacker, 那麼你就是一位黑客。
黑客精神並不僅僅侷限在軟體的黑客文化中。 有人用黑客態度對待其它事情,如電子學和音樂—— 事實上,你可以在任何最高級別的科學和藝術活動中發現它。 精於軟體的黑客讚賞這些在其他領域的同類並把他們也稱作黑客—— 有人宣稱黑客天性是絕對獨立於他們工作的特定領域的。 但在這份文件中, 我們將注意力集中在軟體黑客的技術和態度, 以及發明了“黑客”一詞的以共享為特徵的文化傳統之上。
有一群人大聲嚷嚷著自己是黑客,但他們不是。 他們(主要是正值青春的少年)是一些蓄意破壞計算機和電話系統的人。 真正的黑客把這些人叫做“駭客”(cracker),並不屑與之為伍。 多數真正的黑客認為駭客們又懶又不負責任,還沒什麼大本事。 專門以破壞別人安全為目的的行為並不能使你成為一名黑客, 正如 用鐵絲偷開走汽車並不能使你成為一個汽車工程師。 不幸的是,很多記者和作家往往錯把“駭客”當成黑客; 這種做法一直使真正的黑客感到惱火。
根本的區別是:黑客搞建設,駭客搞破壞。
如果你想成為一名黑客,請接著讀下去。如果你想做一個駭客,去讀 alt.2600 新聞組,並在意識到你並不像自己想象的那麼聰明後去坐五到十次監獄。 關於駭客,我只想說這麼多。
黑客應有的態度
黑客們解決問題,建設事物,同時他們崇尚自由和無私的雙向幫助。 要被他人承認是一名黑客,你的行為得體現出你好像具備了這種態度一般。 而要想做得好象你具備這種態度一般,你就得切切實實堅持它。
但是如果你認為培養黑客態度只是一條在黑客文化圈中得到承認的路子, 那就大錯特錯了。成為具備這些特質的這種人對 你自己非常重要——有助於你學習,及給你提供源源不斷的動力。 同所有創造性的藝術一樣,成為大師的最有效方法就是模仿大師的精神—— 不僅從智力上,也要從感情上進行模仿。
或許, 下面這首現代的禪詩很好的闡述了這個意思:
To follow the path:(沿著這樣一條道路:)
look to the master,(尋找大師,)
follow the master,(跟隨大師,)
walk with the master,(與大師通行,)
see through the master,(洞察大師,)
become the master.(成為大師。)
嗯,如果你想成為一名黑客,反覆讀下面的事情直至你相信它們:
1. 世界充滿了待解決的迷人問題。
做一名黑客會有很多樂趣,但卻是要費很多氣力方能得到的樂趣。 這些努力需要動力。成功的運動員從鍛鍊身體、超越自我極限的愉悅中得到動力。 同樣,做黑客,你得能從解決問題,磨練技術及鍛鍊智力中得到基本的樂趣。
如果你還不是天生的這類人又想做黑客,你就要設法成為這樣的人。 否則你會發現,你的黑客熱情會被其他分心的事物吞噬掉——如金錢、性和社會上的虛名。
(同樣你必須對你自己的學習能力建立信心——相信儘管當你對某問題近乎一無所知, 但只要你一點一點地試驗、學習,最終會掌握並解決它。)
2. 一個問題不應該被解決兩次。
聰明的腦袋是寶貴的有限的資源。當世界還充滿非常多有待解決的有趣的新問題時, 它們不應該被浪費在重新發明輪子這類事情上。
作為一名黑客,你必須相信其他黑客的思考時間是寶貴的——因此共享資訊, 解決問題併發布結果給其他黑客幾乎是一種道義,這樣其他人就可以去解決 新問題而不是不斷地忙於對付舊問題。
(你不必認為一定要把你 所有的發明創造公佈出去, 但這樣做的黑客是贏得大家極度尊敬的人。賣些錢來養家餬口,租房買計算機 甚至發大財和黑客價值觀也是相容的,只要你別忘記你還是個黑客。)
3. 無聊和乏味的工作是罪惡。
黑客(泛指具有創造力的人們)應該從來不會被愚蠢的重複性勞動所困擾, 因為當這種事情發生時就意味著他們沒有在做只有他們才能做的事情—— 解決新問題。這樣的浪費傷害每一個人。因此,無聊和乏味的工作不僅僅是 令人不舒服而已,而且是罪惡。
作為一個黑客,你必須堅信這點並儘可能多地將乏味的工作自動化, 不僅為你自己,也為了其他人(尤其是其他黑客們)。
(對此有一個明顯的例外。黑客有時也做一些在他人看來是重複性或枯燥的工作 以進行“腦力休息”,或是為了獲得某種技能,或是獲得一些除此以外無法獲得的 特別經驗。但這是自願的——有腦子的人不應該被迫做無聊的活兒。)
4. 自由萬歲。
黑客們是天生的反獨裁主義者。 任何能向你發命令的人能夠迫使你停止解決令你著迷的問題, 同時,按照獨裁者的一般思路,他通常會給出一些極端愚昧的理由。 因此,不論何處,任何獨裁主義的作法,只要它壓迫你和其他黑客,你就要和它鬥到底。
(這並非向所有權威挑戰。兒童需要監護,罪犯要被看管起來。 如果服從命令得到某種東西比起用其他方式得到它更節約時間,黑客可以同意 接受某種形式的權威。但這是一個有限度的,有意的交易; 那種權威想要的個人服從不是你應該同意給予的。)
權威喜歡審查和保密。他們不信任自願的合作和資訊的共享—— 他們只喜歡由他們控制的所謂“合作”。因此,作為一個黑客, 你得對審查、保密,以及使用武力或欺騙去壓迫有行為能力的人們的做法有一種本能的敵意。 同時你要有為此信念鬥爭的意願。
5. 態度不能替代能力。
作為一名黑客,你必須培養起這些態度。 但只具備這些態度並不能使你成為一名黑客,也不能使你成為一個運動健將和搖滾明星。 成為一名黑客需要智力,實踐,奉獻精神和辛苦工作。
因此,你必須學會懷疑,並尊重各種各樣的能力。 黑客們不會為那些裝模做樣的人浪費時間,但他們卻非常尊重能力—— 尤其是從事黑客工作的能力,不過任何能力總歸是好的。 具備很少人能具備的那些方面的能力尤其好,其中具備 涉及腦力、技巧和專注方面能力的當然最好。
尊敬能力,你就會享受到提高自己能力的樂趣—— 辛苦的工作和奉獻會變成一種高度娛樂而非苦差事。 要想成為一名黑客,這一點非常重要。
黑客的基本技能
黑客態度重要,但技術更加重要。 態度無法替代技術,在你被別的黑客稱為黑客之前,有一些基本的技術你必須掌握。
這些基本技術隨著新技術的出現和老技術的過時也隨時間在緩慢改變。 例如,過去內容包括使用機器語言程式設計,而直到最近才包括了HTML。 總的來說現在主要包括以下技術:
1. 學習如何程式設計。
這當然是最基本的黑客技能。如果你還不會任何程式語言,我建議你從Python開始。 它設計清晰,文件齊全,合適初學者入門。 它是一門很好的入門語言,並且不僅僅只是個玩具; 它非常強大、靈活,也適合做大型專案。 我有一篇 Python評價詳細說明這點。好的 教程 可以在Python網站得到。 (譯者:比較好的中文Python站點可能是http://pythonrecord.51.net。)
Java也是好的入門語言。它比Python難得多,但是生成的程式碼速度也快得多。 它同時也是一種優秀的計算機語言,不止是用來入門。
但是注意,如果你只會一兩門語言,你將不會達到黑客所要求的技術水平, 甚至也不能達到一個程式設計師的水平——你需要學會如何以抽象的方式思考程式設計問題, 獨立於任何語言。要做一名真正的黑客,你需要學會在幾天內通過一些手冊, 結合你現在所知,迅速掌握一門新語言。這意味著你應該學會幾種截然不同的語言。
如果要做一些重要的程式設計工作,你將不得不學習C語言,Unix的核心語言。 C++與C非常其他類似;如果你瞭解其中一種,學習另一種應該不難。 但這兩種都不適合程式設計入門者學習。而且事實上,你越避免用C程式設計,你的工作效率會越高。
C非常有效率,節約你的機器資源。不幸的是,C的高效是通過你手動做很多底層的管理 (如記憶體)來達到的。底層程式碼都是複雜極易出現bug的,會使你花極多的時間除錯。 如今的機器速度如此之快,這通常是得不償失——比較明智的做法是使用一種執行較慢、較低 效率,但大幅節省你的時間的語言。因此,選擇Python。
其他對黑客而言比較重要的語言包括 Perl和 LISP。 Perl實用,值得一學;它被廣泛用於動態網頁和系統管理, 因此即便你從不用Perl寫程式,至少也應該學會看。許多人使用Perl的理由和 我建議你使用Python的理由一樣,都是為了避免用C完成那些不需要C高效率的工作。 你會需要理解那些工作的程式碼的。
LISP值得學習的理由不同——最終掌握了它時你會得到豐富的啟迪和經驗。 這些經驗會使你在以後的日子裡成為一個更好的程式設計師,即使你實際上很少使用LISP本身。
當然,實際上你最好五種都會(Python,Java,C/C++,Perl和LISP)。 除了是最重要的黑客語言外,它們還代表了截然不同的程式設計思路和方法,每種都會讓你受益非淺。
這裡我無法給你完完全全的指導教會你如何程式設計——這是個複雜的技能。 但我可以告訴你,書本和上課也不能作到(最好的黑客中,有許多,也許 幾乎都是自學成材的)。 你可以從書本上學到語言的特點——只是一些皮毛, 但要使書面知識成為自身技能只能通過實踐和虛心向他人學習。 因此要作到 (一)讀程式碼及(二)寫程式碼。
學習如何程式設計就象學習用優美的自然語言寫作一樣。 最好的做法是讀一些大師的名著,試著自己寫點東西,再讀些,再寫點,再讀些,再寫點…… 如此往復,直到你的文章達到你體會到的範文的簡潔和力量。
過去找到適合閱讀的好的程式碼是困難的,因為幾乎沒有大型程式的原始碼能讓新手練手。 這種狀況已經戲劇性地發生變化;開放原始碼軟體,程式設計工具和作業系統(全都由黑客寫成)現在已經 隨處可見。讓我們在下一個話題中繼續討論……
2. 得到一個開放原始碼的Unix並學會使用、執行它。
我假設你已經擁有或者能使用一臺個人電腦(今天的孩子們真幸福 :-) )。新手們能夠朝學習黑客技能邁出的最基本的一步就是得到 一份Linux或BSD-Unix的一種,安裝在個人電腦上,並執行它。
沒錯,這世界上除了Unix還有其他作業系統。 但它們都是以二進位制形式釋出的——你無法讀到它的原始碼,也不可能修改它。 嘗試在執行DOS或Windows或MacOS的機器上學習黑客技術,就象是帶著腳鐐學跳舞。
除此之外,Unix還是Internet的作業系統。 你可以學會上網卻不知道Unix,但你不瞭解Unix就無法成為一名Internet黑客。 因此,今天的黑客文化在很大程度上是以Unix為中心的。(這點並不總是真的, 一些很早的黑客對此一直很不高興,但Unix和Internet之間的聯絡已是如此之強, 甚至連Microsoft也無可奈何。)
所以, 安裝一套UNIX——我個人喜愛LINUX但還有其他種類的 (是的,你可以同時安裝Linux及DOS/Windows在同一電腦上)。 學習它,使用它,配置它。用它在Internet上衝浪。閱讀它的原始碼。修改它的原始碼。 你會得到比在Microsoft作業系統上更好的程式設計工具(包括C,LISP,Python及Perl)。 你會覺得樂趣無窮,學到在你成為大師之前意識不到的更多的知識。
想知道更多關於學習Unix的資訊,訪問 The Loginataka。
想知道如何得到一份Linux,訪問 我在哪裡可以獲得Linux。 (譯者:對於中文讀者來講,最簡單的方式未過於前往附近的D版/正版光碟店。)
你可以在 www.bsd.org找到BSD Unix的求助及其他資源。
我有寫一篇關於 Unix和Internet基礎的入門文章。
(注:如果你是一個新手,我不推薦自己獨立安裝Linux或者BSD。 安裝Linux的話,尋求本地Linux使用者組的幫助;或聯絡 Open Projects Network。 LISC維護著一些 IRC頻道, 在那裡你可以獲得幫助。)
3. 學會如何使用WWW和寫HTML
黑客文化建造的大多東西都在你看不見的地方發揮著作用,幫助工廠、辦公室和大學正常運轉, 表面上很難看到它對非黑客的普通人的生活的影響。Web是一個大大的例外。 即便政客也同意,這個巨大耀眼的黑客玩具正在改變整個世界。 單是這個原因(還有許多其它的),你就需要學習掌握Web。
這並不是僅僅意味著如何使用瀏覽器(誰都會),而是要學會如何寫HTML, Web的標記語言。如果你不會程式設計,寫HTML會教你一些有助於學習的思考習慣。 因此,先完成一個主頁。(網上有很多好的教程; 這是一個。)
但僅僅擁有一個主頁不能使你成為一名黑客。 Web裡充滿了各種網頁。大多數是毫無意義的,零資訊量垃圾——介面時髦的垃圾, 注意,垃圾的水準都類似(更多資訊訪問 The HTML Hell Page)。
要想有價值,你的網頁必須有內容—— 它必須有趣或對其它黑客有幫助。這是下一個話題所涉及的……
4. 如果你不懂實用性的英語,學習吧。
作為一個美國人和一個以英語為母語的人,我以前很不情願提到這點,免得成為 一種文化上的帝國主義。但相當多以其他語言為母語的人一直勸我指出這一點,那就是 英語是黑客文化和Internet的工作語言,你需要懂得以便在黑客社群順利工作。
這一點千真萬確。大概1991年的時候我就瞭解到許多黑客在技術討論中使用英語,甚至當他們的母語都 相同,英語對他們而言只是第二語言的時候;據我知道的報導,當前英語有著比其他語言豐富得多的技術詞彙, 因此是一個對於工作來說相當好的工具。 基於類似的原因,英文技術書籍的翻譯通常不令人滿意(如果有翻譯的話)。
Linus Torvalds,一個芬蘭人,用英語註釋他的程式碼(很明顯這對他來說不是湊巧)。 他流利的英語成為他能夠管理全球範圍的Linux開發人員社群的重要因素。 這是一個值得學習的例子。
象大部分不涉及金錢的文化一樣,黑客王國靠聲譽運轉。 你設法解決有趣的問題,但它們到底多有趣,你的解法有多好, 是要由那些和你具有同樣技術水平的人或比你更厲害的人去評判的。
相應地,當你在玩黑客遊戲時,你得認識到你的分數主要靠其他黑客對你的技術的評價給出 (這就是為什麼只有在其它黑客稱你為黑客時,你才算得上是一名黑客)。 這個事實常會被黑客是一項孤獨的工作這一印象所減弱;也會被另一個黑客文化的禁忌所減弱 (現在逐漸減弱但仍強大):拒絕承認自我或外部評估與一個人的動力有關係。
特別地,黑客王國被人類學家們稱為一種奉獻文化。 在這裡你不是憑藉你對別人的統治來建立地位和名望,也不是靠美貌,或擁有其他人想要的東西, 而是靠你的奉獻。尤其是奉獻你的時間,你的創造和你的技術成果。
要獲得其他黑客的尊敬,基本上有五種事情你可以幹:
1. 寫開放原始碼軟體
第一個(也是最集中的和傳統的)是寫些被其他黑客認為有趣或有用的程式, 並把程式原始碼提供給整個黑客文化使用。
(過去我們稱之為“free software (自由軟體)”, 但這卻使很多不知 free 的精確含義的人感到困惑。 現在我們很多人,根據搜尋引擎網頁內容分析至少有2:1的比率,使用“ open-source”software(開放原始碼軟體)這個詞)。
黑客王國裡最受尊敬的偶像是那些寫了大型的、好用的、具有廣泛用途的軟體, 並把它們公佈出去,使得每人都在使用他軟體的人。
2. 幫助測試並除錯開放原始碼軟體
黑客也尊敬那些使用、測試開放原始碼軟體的人。 在這個並非完美的世界上,我們不可避免地要花大多數的開發時間在除錯階段。 這就是為什麼任何有頭腦的開放原始碼的作者都會告訴你好的beta測試員 (知道如何清楚描述出錯症狀,很好地定位錯誤,能忍受快速釋出中的bug, 並且願意使用一些簡單的診斷工具)象紅寶石一樣珍貴。 甚至他們中的一個能判斷出哪個測試階段是延長的, 哪個是令人精疲力盡的噩夢,哪個只是一個有益的小麻煩。
如果你是個新手,試著找一個你感興趣的正在開發的程式,做一個好的beta測試員。 你會自然地從幫著測試,進步到幫著抓臭蟲,到最後幫著改程式。 你會從中學到很多,並且與未來會幫你的人結下友誼。
3. 公佈有用的資訊
另一個好事是收集整理有用有趣的資訊做成網頁或文件如FAQ列表,且讓他們容易獲得。
主要技術FAQ的維護者受到幾乎同其他開放原始碼的作者一樣多的尊敬。
4. 幫助維護基礎設施的運轉
黑客文化(還有Internet的工程方面的發展,就此而言)是靠自願者運轉的。 要使Internet能正常工作,就要有大量枯燥的工作不得不去完成——管理mail list,新聞組,維護大型軟體庫,開發RFC和其它技術標準等等。
做這類事情的人會得到很多尊敬,因為每人都知道這些事情是十分花時間又不象程式設計那樣好玩。 做這些事情需要奉獻精神。
5. 為黑客文化本身服務
最後,你可以為這個文化本身做宣傳(例如,象我這樣,寫一個“如何成為黑客”的正面的教程 :-) ) (譯者:不知道Barret把它翻成中文算不算?)。 這並非一定要在你已經在這個圈子呆了很久,因以上四點中的某點而出名,有一定聲譽後才能去做。
黑客文化沒有領袖。精確地說,它確實有些文化英雄、部落長者、歷史學家和發言人。 若你在這圈內呆的夠長,你或許成為其中之一。 記住:黑客們不相信他們的部落長者的自誇的炫耀, 因此大舉追求這種名譽是危險的。與其奮力追求,不如先擺正自己的位置 等它自己到你的手中——那時則要做到謙虛和優雅。
黑客和書呆子(Nerd)的聯絡
同流行的迷思相反,做一名黑客並不一定要你是個書呆子。 但它確實有幫助,而且許多黑客事實上是書呆子。 做一個深居簡出的人有助於你集中精力進行十分重要的事情,如思考和程式設計。
因此,很多黑客都願意接受“書呆子”這個外號, 更有甚者使用更尖刻的“geek(怪人)”一詞並引以為豪—— 這是一種宣佈他們獨立於主流社會的宣告方式。訪問 The Geek Page 參加更多的討論。
如果你能集中足夠的精力做好黑客工作同時還能有正常的生活,這很好。 現在作到這一點比我在1970年代是新手的時候要容易的多; 如今主流文化對技術怪人要友善的多。 甚至有越來越多的人意識到黑客通常是很好的戀人和配偶的材料。
如果你因為生活上不如意而迷上做黑客,那也沒什麼——至少你不會分神了。 或許以後你會找到自己的另一半。
風格的意義
重申一下,作為一名黑客,你必須進入黑客精神之中。 當你不在計算機邊上時,你仍然有很多對黑客工作有幫助的事情可做。 它們並不能替代真正的程式設計(沒有什麼能),但很多黑客都那麼做, 並感到它們與黑客的本質存在某些基本的連繫。
- 學會流暢地用母語寫作。儘管程式設計師不能寫好文章的錯誤看法相當普遍, 但是有令人驚訝數目的黑客(包括所有我知道的最棒的)都是不錯的作家。
- 閱讀科幻小說。參加科幻小說討論會。(一個碰到黑客和未來會成為黑客的人的好方法)
- 學禪,並且/或者練功習武。(精神修煉看來是驚人相似。)
- 練就能分析音樂的聽覺,學會鑑賞特別的音樂。學會玩某種樂器,或唱歌。
- 提高對雙關語、文字遊戲的鑑賞能力。
- 這些事情,你已經做的越多,你就越是天生做黑客的材料。 至於為什麼偏偏是這些事情,原因並不完全清楚, 但它們都涉及用到左-右腦能力的綜合,這似乎是關鍵所在 (黑客們既需要清晰的邏輯思維,有時又需要偏離邏輯跳出問題的表象)。
最後,還有一些不要去做的事情
- 不要使用愚蠢的,譁眾取寵的ID或暱稱。
- 不要捲入Usenet(或其他地方的論壇)的罵戰。
- 不要自稱為“cyberpunk(網路叛客)”,也不要浪費時間和那些人打交道。
- 不要讓你寄出的Email或張貼的帖子充滿錯誤的拼寫和亂七八糟的語法。
- 做以上的事情,只會招來嘲笑。黑客們個個記憶超群—— 你將需要數年的時間讓他們忘記你犯下的錯誤。
網名的問題值得深思。將身份隱藏在虛假的名字後是駭客、解密者、d00dz 及其他低等生物幼稚愚蠢的行為特點。黑客不會做這些事; 他們對他們所作的感到驕傲,而且樂於人們將作品與他們的 真名相聯絡。 因此, 若你現在用假名,放棄它。在黑客文化裡它會令你你失敗的。
其它資源
Peter Seebach 維護著一個非常好的 Hacker FAQ, 專給那些不懂如何與黑客打交道的經理看的。如果Peter的站點不能訪問,下面這個 Excite搜尋應該有一份拷貝。
我也著有 黑客文化簡史。
我寫了一份 大教堂與市集,對於Linux及開放原始碼文化現象有詳細的解釋。 我也在這個話題上進一步闡述導致的結局—— 開拓智域。
Rick Moen寫了一份很好的關於 如何運轉一個Linux使用者組的文件。
我和Rick Moen合作完成了另一份關於 提問的智慧的文章,可以讓你事半功倍的獲得幫助。
如果你想知道PC、UNIX及Internet基本概念和工作原理,參考 The Unix and Internet Fundamentals HOWTO。
當你釋放出一個軟體或為其打補丁,試著按 軟體發行慣例 HOWTO去做。 (以上的提到的文章的中文版大多都可以在www.aka.org.cn和www.linuxforum.net找到。)
FAQ(常問問題解答)
問:你能教我做黑客嗎?
答:自從第一次釋出這份文件,我每週都會收到一些請求, (頻繁的話一天幾封)要我“教會他們做黑客”。遺憾的是,我 沒有時間和精力來做這個;我自己的黑客專案,及我作為一個開放原始碼倡導者 的四處奔波已經佔用了我110%的時間。
即便我想教你,黑客也依然基本上是一項自行修煉的的態度和技術。 當真正的黑客想幫助你的時候,如果你乞求他們一湯匙一湯匙“喂”你的話, 你會發現他們不會尊重你。
先去學一些東西。顯示你在嘗試,你能靠自己去學習。然後再去向你遇到的黑客請教特殊的問題。
如果你發E-mail給一位黑客尋求他的幫助,這是兩件首要記住的事情。 第一,寫出來的文字顯得懶且粗心的人通常非常懶於思考且非常馬大哈,不能成為好黑客—— 因此注意拼寫正確,使用正確的語法及發音,否則你可能會無人理睬。 第二,不要試圖要求回覆到一個ISP帳號,而那個帳號與你 的發信地址不同。這樣做的人一般是使用盜用帳號,不會有人有興趣為虎作倀幫助竊賊的。
問:那麼,我要如何開始?
答:對你而言最佳的入門方式也許是去參加LUG(Linux使用者組)的聚會。 你可以找到在 LDP的綜合Linux資訊頁面上找到類似的組織;也許有一個在你家附近的, 而且非常有可能與一所大學或學校掛鉤。如果你提出要求,LUG成員興許會給你一套Linux, 當然此後會幫你安裝並帶你入門。
問:我得什麼時候開始學?現在會不會太遲了?
答:你有動力學習的時候就是好時候。大多數人看來都是在15-20歲之間開始感興趣的,但 據我所知,在此年齡段之外的例外也是有的。
問:要學多久才能學會黑客道?
答:這取決於你的聰明程度和努力程度。大多數人只要他們專注, 就能在18個月到2年之間學會一套令人尊敬的技能。但是,不要以為就此結束了; 如果你是一個真正的黑客,你要用你的餘生來學習和完善你的技術。
問:Visual Basic及Delphi是好的入門語言嗎?
答:不,因為他們不是可移植的。他們不是那些語言的開放原始碼實現, 所以你被限制在廠商選擇支援的那些平臺裡。接受這樣一種壟斷局面不是黑客的態度。
Visual Basic特別糟糕。它是Microsoft的私有語言這個事實就足夠讓它臉面全無, 不像其他的Basic,它是一種設計糟糕的語言會教給你壞的程式設計習慣。
其中一個壞習慣是會依賴於單一廠商的函式庫、控制元件及開發工具。 一般而言,任何不能夠支援至少Linux或者一種BSD,或其他第三方作業系統的語言,都是 一種不適合應付黑客工作的語言。
問:你能幫我“黑”掉一個站點嗎?或者教我怎麼黑它?
答:No。任何讀完這份FAQ後還問這個問題的人,都是無可救藥的蠢材, 即使有時間指教我也不會理睬。任何發給我的此類E-mail都會被忽略或被痛罵一頓。
問:我怎麼樣才能得到別人帳號的密碼?
答:這是駭客行為。滾得遠遠的,白痴。
問:我如何入侵/檢視/監視別人的Email?
答:這是駭客行為。在我面前消失,混蛋。
問:我如何才能在IRC聊天室裡偷到頻道op的特權?
答:這是駭客行為。去S吧,冥頑不靈的傢伙。
問:我被黑了。你能幫我避免以後再被攻擊嗎?
答:不行。目前為止,每次問我這個問題的,都是一些執行Microsoft Windows的菜鳥。 不可能有效的保護Windows系統免受駭客攻擊;太多缺陷的程式碼和架構使保護Windows的努力有如 隔靴搔癢。唯一可靠的預防來自轉移到Linux或其他設計得至少足夠安全的系統。
問:我的Windows軟體出現問題了。你能幫我嗎?
答:當然。進入DOS方式,然後鍵入“format c:”。你遇到的任何問題將會在幾分鐘之內消失。
問:我在哪裡能找到可以與之交流的真正的黑客?
答:最佳辦法是在你附近找一個Unix或Linux的使用者組,參加他們的聚會。 (你可以在Metalab的LDP站點 找到一些指向使用者組的連結。)
我過去曾說過不能在IRC上找到真正的黑客,但我發覺現在情況有所改變。 顯然一些真正的黑客的社群像GIMP及Perl,也有IRC頻道了。)
問:你能推薦一些有關黑客的好書嗎?
答:我維護著一份Linux Reading List HOWTO,也許你會覺得有用。 Loginataka也很有意思。
關於Python的介紹,請訪問在Python站點上的 入門資料。
問:成為一名黑客我需要擅長數學嗎?
答:不用。黑客道很少使用常規的數學或算術,不過你絕對需要能邏輯性地思考和進行精密的推理。
尤其是你不會用到微積分或電路分析(我們把這些留給電子工程師們 :-))。 一些有限數學(包括布林代數,集合論,組合數學,圖論)的背景知識會有幫助。
問:我該從那種語言學起?
答:HTML——如果你還不懂的話。市面上有一大堆的封面精美,宣傳得天花亂墜的 糟糕的 HTML書籍,不幸的是很少有好的。我最喜歡的是 HTML: The Definitive Guide。
但 HTML 不完全是一種程式語言。當你準備開始程式設計時,我推薦從 Python起步。 你會聽到一大群人推薦 Perl,並且 Perl 依然比 Python 流行得多,但是 難學得多且(以我之見)設計得不是很好。
C 確實重要,但它要比 Python 或 Perl 難多了。不要嘗試先學 C。
Windows使用者不要滿足於 Visual Basic。 它會教給你壞習慣,而且它不可以移植,只能在Windows下執行。避免它。
問:我需要什麼樣的機器配置?
答:過去個人電腦能力相當不夠並且記憶體小,結果給黑客的學習過程設定 了人為的障礙。不過一段時間以前開始就不是這樣了;任何配置比一臺 Intel 486DX50 好的 機器都有足夠的能力進行開發工作,X,及 Internet 通訊,同時你現在買的最小的磁碟 都大得富足了。(依Barret之見,現在要至少Pentium 166MMX才夠。)
選擇用來學習的機器時重要的一點是注意配件是否是Linux相容的(或BSD相容,如果你選擇學 BSD)。同剛才提到的一樣,大多數現在的機器都是符合的;唯一的值得注意的區域在於 modem和印表機;有些具備為Windows設計的配件的機器不會在Linux下工作。
關於硬體相容性有一個FAQ;最新版本在 這裡。
問:我得因此憎恨和反對Microsoft嗎?
答:不,你不必如此。不是因為Microsoft不令人討厭,而是因為黑客文化早在 Microsoft出現之前就存在了,且將在Microsoft成為歷史後依然存在。 你耗費在憎恨Microsoft的任何力氣不如花在愛你的技術上。寫好的程式碼—— 那會相當有效地打擊Microsoft又不會讓你得到惡報應。
問:但開放原始碼軟體不會使程式設計師丟飯碗嗎?
答:看起來不太可能——目前為止,開放原始碼軟體產業似乎創造了更多的就業機會而不是 減少就業機會。如果寫一個程式比起不寫來是純經濟收益的話,那麼在寫完後, 程式設計師應該得到報酬不管程式是否是開放原始碼。 並且,無論寫出多麼“免費自由”的軟體,都存在更多對新的,定製的軟體的需求。 我有這方面更多的論述,放在開放原始碼 網站資料中。
問:我要如何開始?哪裡有免費的Unix?
答:在本份文件的某個地方我已經提到過何處可以得到最常用的免費Unix。 要做一名黑客,你需要自立自強,以及自學能力。現在開始吧……
英文:Eric Steven Raymond
譯者:Barret
連結:http://www.kerneltravel.net/jiqiao/hacker.html