1. 程式人生 > >成為黑客需要學習什麼技能?

成為黑客需要學習什麼技能?

1. 學習如何程式設計
這當然是最基本的黑客技能。如果你還不會任何程式語言,我建議你從Python開始。它設計清晰,文件齊全,合適初學者入門。它是一門很好的入門語言,並且不僅僅只是個玩具;它非常強大、靈活,也適合做大型專案。我有一篇 Python評價詳細說明這點。好的教程可以在Python網站得到。
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)。你會覺得樂趣無窮,學到在你成為大師之前意識不到的更多的知識。
你可以在 www.bsd.org找到BSD Unix的求助及其他資源。
(注:如果你是一個新手,我不推薦自己獨立安裝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開發人員社群的重要因素。這是一個值得學習的例子。