真實的黑客完全不是這樣

黑客現在已經成為一種負能量的代表,提起黑客就會和一些非法侵入別人電腦,破壞別人的網站的行為聯繫到一起,那種其實是駭客,真實的黑客完全不是這樣。

真實的黑客完全不是這樣

一、什麼是黑客?

黑客字典 中對“黑客”一詞給出了很多定義,大部分定義都涉及高超的編程技術,解決問題和克服限制的樂趣。如果你想知道如何成為一名黑客,只有兩方面是非常重要的:態度和技術。

其歷史可以追溯到幾十年前第一臺分時共享的小型機和最早的 ARPAnet 實驗時期。 這個社群文化的成員創造了“Hacker/黑客”這個術語。 黑客們建起了 Internet,使 Unix 操作系統 成為今天這個樣子。如果你是這個文化的一部分,如果你已經為它作了些貢獻,而且圈內的其他人也知道你是誰並稱你為一個黑客,那麼你就是一名黑客。

黑客精神並不僅僅侷限於軟件黑客文化圈中。有很多人同樣以黑客態度對待其它事情如電子和音樂,事實上,你可以在任何較高級別的科學和藝術中發現它。軟件黑客們識別出這些在其他領域同類並把他們也稱作黑客。有人宣稱黑客實際上是獨立於他們工作領域的。

另外還有一群人,他們大聲嚷嚷著自己是黑客,實際上他們卻不是。他們是一些蓄意破壞計算機和電話系統的人(多數是青春期的少年)。真正的黑客把這些人叫做“Cracker/駭客”,並不屑與之為伍。多數真正的黑客認為駭客們是些不負責任的懶傢伙,還沒什麼大本事。專門以破壞別人安全為目的的行為並不能使你成為一名黑客, 正如拿根鐵絲能打開汽車並不能使你成為一個汽車工程師。不幸的是,很多記者和作家往往錯把“駭客”當成黑客;這種做法會激怒真正的黑客。

根本的區別是:黑客們創造,駭客們破壞。

二、黑客的態度

黑客們解決問題、創造事物,信仰自由以及互相幫助。要想被認為是一名黑客,你的行為必須表現出已經具有了這種態度。但是要想做的好像具備這種態度,你就不得不真的擁有這種態度。但是如果想通過培養這種黑客態度在黑客文化中得到認可,那麼你就大錯特錯了。成為具備這種態度的人對你來說非常重要--有助於你的學習,並給你提供源源不斷的動力。同所有創造性藝術一樣,成為大師最高效的方式就是模仿大師的精神--不是僅從理智上,更要從感情上進行模仿。

所以,如果你想成為一名黑客,重複以下事情直到你相信他們:

1. 這個世界充滿了待解決的迷人問題

做一個黑客有很多樂趣,但是需要頗費氣力才能獲得這些樂趣。卓越的運動員從強健體魄、挑戰自我身體極限中汲取動力。類似的,作為黑客,你必須從解決問題、磨練技術、鍛鍊智力中獲得基本的快感。如果你不是這樣的人又想做黑客,你就要設法成為這樣的人。否則,你會你發現你的黑客熱情會被其他誘惑無情的吞噬:金錢、社會上的虛名等等。

2. 一個問題都不應該被解決兩次

創造性的大腦是寶貴的、有限的資源。在這個世界上還存在著如此多的迷人的、有趣的問題的時候,它們不應該被浪費去重複發明輪子。作為一個黑客,你必須相信其他黑客的時間是寶貴的 -- 因此共享信息,解決問題併發布結果給其他黑客幾乎是一種道義,這樣其他人就可以去解決新問題而不是重複地對付舊問題。

一個問題不應該被解決兩次 並不意味著已存在的解決方案是真理,或者是唯一的正確解決方案。在發現一個解決方案之前,需要會學習大量和問題相關的知識。如果這個解決方案沒問題,通常來講,也需要來決策一下能不能做的更好。解決方案也有可能存在人為的技術障礙、法律或者機構保護的障礙阻止人們去重用,強制人們去重新發明輪子。

3. 無趣和乏味的工作是犯罪

黑客們(以及具有創造力的人們)從來不會被愚蠢的重複性工作所困擾,因為當這種事情發生的時候就意味著他們沒有在做只有他們能做的事情 -- 解決新問題。這樣的浪費對每一個人都是傷害。無趣和乏味的工作不僅僅是不舒服而已,而是極大的犯罪。作為黑客,你必須完全相信這一點並 儘可能把乏味的工作自動化,不僅僅是為了自己,也為了其他人。

4. 追求自由

黑客是天生的反權威主義者。任何能向你發命令的人會迫使你停止解決令你著迷的問題,同時,按照權威的一般思路,他通常會給出一些極其愚昧的理由。因此,不論何時何地,任何權威,只要他壓迫你或其他黑客,就要和他鬥到底。

5. 態度不能代替能力

要做一名黑客,你必須培養起這些態度。但只具備這些態度並不能使你成為一名黑客,就象這並不能使你成為一個運動健將和搖滾明星一樣。成為一名黑客需要花費智力,實踐,奉獻和辛苦。

真實的黑客完全不是這樣

三、基本的黑客技巧

黑客精神固然至關重要,但是技術更加重要。態度無法替代技術。在被其他黑客成為黑客之前,有一些基本的技術你必須掌握。

1. 學習如何編程

這當然是最基本的黑客技術。如果你還不會任何計算機語言,我建議你從 Python 開始。它設計清晰,文檔齊全,對初學者很合適。儘管是一門很好的初級語言,它不僅僅只是個玩具。它非常強大,靈活,也適合做大型項目。

推薦將 Java 作為早期學習的一門語言。作為黑客,不會接受解決問題僅僅像五金店裡面的管道工一樣,你必須知道每個組件是如何運作的。現在我認為最好的方式是先學習 C 和 LISP,然後再學習 Java 。如果一門語言為你做了太多,它可能對開發是一個稱手的工具同時卻很難去學習。不僅僅是語言存在這個問題,Web 應用程序框架,比如 RubyOnRails, CakePHP, Dingo 或許使你很容易到達一個淺顯的認識,但是當你碰到一個難題而沒有這些框架資源支持的時候你就會束手無策,甚至只是去調試一個簡單問題的解決方案。

如果你要做一些重要的編程工作,你就必須要學會 C,Unix 的核心語言。C++ 和 C 有很密切的關係,如果你知道其中一個,學習另外一個不用耗費太多精力。無論哪一個語言你都可以先嚐試開始學習一下,儘量避免直接用 C 編程你會更加具有生產力。C 非常高效,很節省你的機器資源。C 需要你手動做大量的低層次的內存管理來獲得高效。低級編碼非常複雜、容易出錯,會花費你大量的時間在調試程序上面。由於今天的機器性能非常強大,還這樣做的話通常來講是一個糟糕的決定 -- 更加明智的是去使用一門機器時間低效的的語言,但是你的時間更有效。

Perl 很實用,值得一學;它被廣泛用於活動網頁和系統管理,因此即便你從不用 Perl 寫程序,至少也應該能讀懂它。對於許多使用 Perl 的人,建議學習使用 Python,儘量去避免在那些不需要 C 的機器效率的工作中使用 C 語言編程,你只需要能夠讀懂那些代碼就可以。當然,實際上你最好五種都會。 (Python, C/C++, Java, Perl, and LISP). 除了是最重要的編程語言,它們還代表了非常不同的編程方法,每種都會讓你受益非淺。

僅僅去學會幾種語言是不會達到黑客需要的技術水平,甚至也不能成為一個程序員 -- 你需要站在一般性的角度思考編程問題,獨立於任何編程語言。要想成為一個真正的黑客,你要達到的標準時可以通過相關的手冊和你已經知道的知識在數天內學習一門新語言。這意味你會學習到幾種非常不同的語言。幾乎所有最好的黑客都是自學成材的。真正能起作用的就是去親自讀代碼和寫代碼。

2. 獲取一個開放源碼的 Unix 並學會使用、運行它

假設你已經擁有了一臺個人計算機或者有一個可用的。新手們最基本的一步就是得到一份 Linux 或 BSD-Unix,安裝在個人計算機上,並運行它。這世界上除了Unix還有其他操作系統。但它們都是以二進制形式發送的 -- 你無法讀到它的源碼,更不可能修改它。嘗試在 DOS 或 Windows 的機器上學習黑客技術,就象是在腿上綁了鐵塊去學跳舞。

Unix 還是 Internet 的操作系統。你可以不知道 Unix 而學會用 Internet,但不懂它你就無法成為一名 Internet 黑客。因為這個原因,今天的黑客文化在很大程度上是以 Unix 為中心的。裝一個 Unix -- 我個人喜歡 Linux,不過也有其他選擇。(你也可以在同一臺機器上同時運行 DOS, Windows 和 Linux)學會它。運行它。用它跟 Internet 對話。讀它的代碼。試著去修改他。你會得到比微軟操作系統上好的多的編程工具(包括 C, Lisp, Python, and Perl),你會得到樂趣,並將學到比你想象的更多知識。

3. 學習如何使用互聯網以及寫 HTML 語言

大多黑客文化建造的東西都在你看不見的地方發揮著作用,幫助工廠、辦公室和大學正常運轉,表面上很難看到它對他人的生活的影響。Web 是一個大大的例外。這個巨大而耀眼的黑客玩具正在改變整個世界。單是這個原因(還有許多其它的), 你就需要學習如何掌握 Web。

這並不是僅僅意味著如何使用瀏覽器,而是要學會如何寫 HTML,Web 的標記語言。如果你不會編程,寫HTML會教你一些有助於學習的思考習慣,因此先建起自己的主頁是很重要的。

4. 你過你還不熟悉實用英語,學會它

許多黑客把英語當做第二語言,並在技術討論中使用它甚至他們使用同一母語。這是因為英語比其他語言有更豐富的專業詞彙,對於工作來說是一個更好的工具。

四、黑客文化中的地位

象大部分不涉及金錢的文化一樣,黑客王國的運轉靠聲譽維護。你設法解決有趣的問題,但它們到底多有趣,你的解法有多好,是要有那些和你具有同樣技術水平的人或比你更牛的人去評判的。相應地,當你在玩黑客遊戲時,你知道,你的分數要靠其他黑客對你的技術的評估給出。(這就是為什麼只有在其它黑客稱你為黑客是,你才算得上是一名黑客)這個事實常會被黑客是一項孤獨的工作這一印象所減弱;它也會被另一個黑客文化的禁忌所減弱,拒絕承認自我或外部評估是一個人的動力。要獲得其他黑客的尊敬,你可以做以下五種事情:

1. 寫開放源碼的軟件

第一個(也是最基本和傳統的)是寫些被其他黑客認為有趣或有用的程序,並把程序的原代碼公佈給大家共享。

黑客王國裡最受尊敬的大牛們是那些寫了大型的、具有廣泛用途的軟件,並把它們公佈出去,使每人都在使用他的軟件的人。但是這也有一個歷史轉折點,在 90 年代中期之前,黑客們很尊敬他們中間的開源軟件開發者,那是大多數黑客都在為閉源軟件工作。今天,黑客社區和開源軟件開發者社區是兩個描述和本質上基本相同的文化和人群 -- 但是需要記住的是,這並非總是如此。

2. 幫助測試並修改開放源碼的軟件

黑客們也尊敬也那些使用、測試開放源碼軟件的人。在這個並非完美的世界上,我們不可避免地要花大量軟件開發的時間在測試和抓臭蟲階段。 這就是為什麼任何開放源碼的作者稍加思考後都會告訴你好的 beta 測試員象紅寶石一樣珍貴。 (他知道如何清楚描述出錯症狀,很好地定位錯誤,能忍受快速發佈的軟件中的 bug,願意使用一些簡單的診斷工具) 甚至他們中的一個能判斷出哪個測試階段是延長的、令人精疲力盡的噩夢。

3. 公佈有用的信息

另一個好事是收集整理網頁上有用有趣的信息或文檔如 FAQ。許多主要 FAQ 的維護者和其他開放源碼的作者一樣受到大家的尊敬。

4. 幫助維護基礎設施的運轉

黑客文化是靠自願者運轉的。要使 Internet 能正常工作,就要有大量枯燥的工作不得不去完成 -- 管理 mail list,newsgroup,維護大量文檔,開發 RFC 和其它技術標準等等。做這類事情的人會得到很多人的尊敬,因為每人都知道這些事情是耗時耗力的苦役,不象編碼那樣好玩。做這些事情需要毅力。

5. 為黑客文化本身服務

黑客文化沒有領袖。精確地說,它確實有些文化英雄和部落長者和歷史學家和發言人。若你在這圈內呆的夠長,你或許成為其中之一。

真實的黑客完全不是這樣

五、風格的指引

做一名黑客,你必須進入黑客精神之中。當你不在計算機邊上時,你仍然有很多事情可做。它們並不能替代真正的編程(沒有什麼能替代編程),但很多黑客都那麼做,並感到它們與黑客精神存在一種本質的關聯。

1. 我如何知道自己已經是一名黑客了?

問你自己三個問題:

  • 你能流利的講解代碼嗎?
  • 你認同黑客社區的目標和價值觀嗎?
  • 是否有黑客社區的成員稱你為黑客?

如果你能肯定的回答這三個問題,那麼你已經是一名黑客了。缺一不可。

第一個測試有關於技術。你可能已經通過本文前面描述的一些最低的技術要求。你可能輕鬆的達到這個標準如果你參與一些大量代碼的開源項目。

第二個測試和態度有關,如果描述的黑客的五個原則對你來說顯而易見,就想一本你已經那樣生活的小說一樣,這就是你的生活方式。你已經通過了一半的測試。這是內向的一半,另外外向的一半是你認同黑客社區長期項目的程度。

下面是一個不完整的指示清單:Linux 的提升的發展對你是否重要?你是否熱愛自由軟件?反對壟斷?你是否有相信計算機可以讓未來世界更加豐富、更人性化而採取行動的信念?

但是一個需要注意的問題需要列在在這裡。黑客社區有一些具體的、主要是防禦性的政治利益 -- 其中兩個是捍衛自由言論的權利和低於"知識產權"的權利爭奪,這將會是開源非法。其中一些長期項目是由公民自由組織的,黑客的態度表面上包括支持他們。但是除此之外,許多黑客嘗試去系統化黑客的態度和質疑為一個明確地政治綱領,我們已經知道,這非常困難,這些嘗試是分裂和分心。如果有人用黑客的態度的名義招募你去首都遊行,他們已經忽略了重點。正確的反應應該是 “閉嘴,給我看一下代碼”。

第三個測試有一個棘手的遞歸元素在裡面。我注意到在 “什麼是黑客?” 部分,成為一個黑客需要屬於一個特定的亞文化社區或社交網絡,有共同的歷史,有內部和外部的問題。在遙遠的過去,黑客是一個更加團結和自我意識比今天更強。今日社會網絡的重要性以日益增強,互聯網的連接,是黑客亞文化群的核心更加容易開發和維護。

真實的黑客完全不是這樣

2. 你會教我如何做黑客嗎?

甚至即便我想教你也不可能,黑客基本上是一項需要你自行修煉的的態度和技術。

首先去學習。你靠自己去學習。然後再去向黑客們請教問題。

如果你通過網絡向黑客求助,這裡有兩件事你需要提前知道。那些寫作懶惰,粗心,有大量拼寫錯誤的人通常懶得去思考,去成為優秀的黑客。所以必須注意正確拼寫,並使用正確的標點符號,否則很可能會被回覆者忽略。其次,要尊重回復者。


分享到:


相關文章: