轉(zhuǎn)這篇文章并不是想成為黑客,所以取其一節(jié)《學(xué)習(xí)如何編程》
這當(dāng)然是最基本的黑客技能。如果你還不會(huì)任何編程語言,我建議你從Python開始。它設(shè)計(jì)清晰,文檔齊全,合適初學(xué)者入門。它是一門很好的入門語言,并且不僅僅只是個(gè)玩具;它非常強(qiáng)大、靈活,也適合做大型項(xiàng)目。我有一篇 Python評(píng)價(jià)詳細(xì)說明這點(diǎn)。好的 教程 可以在Python網(wǎng)站得到。(譯者:比較好的中文Python站點(diǎn)可能是http://pythonrecord.51.net。)
Java也是好的入門語言。它比Python難得多,但是生成的代碼速度也快得多。它同時(shí)也是一種優(yōu)秀的計(jì)算機(jī)語言,不止是用來入門。
但是注意,如果你只會(huì)一兩門語言,你將不會(huì)達(dá)到黑客所要求的技術(shù)水平,甚至也不能達(dá)到一個(gè)程序員的水平——你需要學(xué)會(huì)如何以抽象的方式思考編程問題,獨(dú)立于任何語言。要做一名真正的黑客,你需要學(xué)會(huì)在幾天內(nèi)通過一些手冊(cè),結(jié)合你現(xiàn)在所知,迅速掌握一門新語言。這意味著你應(yīng)該學(xué)會(huì)幾種截然不同的語言。
如果要做一些重要的編程工作,你將不得不學(xué)習(xí)C語言,Unix的核心語言。 C++與C非常其他類似;如果你了解其中一種,學(xué)習(xí)另一種應(yīng)該不難。但這兩種都不適合編程入門者學(xué)習(xí)。而且事實(shí)上,你越避免用C編程,你的工作效率會(huì)越高。
C非常有效率,節(jié)約你的機(jī)器資源。不幸的是,C的高效是通過你手動(dòng)做很多底層的管理(如內(nèi)存)來達(dá)到的。底層代碼都是復(fù)雜極易出現(xiàn)bug的,會(huì)使你花極多的時(shí)間調(diào)試。如今的機(jī)器速度如此之快,這通常是得不償失——比較明智的做法是使用一種運(yùn)行較慢、較低效率,但大幅節(jié)省你的時(shí)間的語言。因此,選擇Python。
其他對(duì)黑客而言比較重要的語言包括 Perl和 LISP。 Perl實(shí)用,值得一學(xué);它被廣泛用于動(dòng)態(tài)網(wǎng)頁和系統(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)。除了是最重要的黑客語言外,它們還代表了截然不同的編程思路和方法,每種都會(huì)讓你受益非淺。
這里我無法給你完完全全的指導(dǎo)教會(huì)你如何編程——這是個(gè)復(fù)雜的技能。但我可以告訴你,書本和上課也不能作到(最好的黑客中,有許多,也許 幾乎都是自學(xué)成材的)。你可以從書本上學(xué)到語言的特點(diǎn)——只是一些皮毛,但要使書面知識(shí)成為自身技能只能通過實(shí)踐和虛心向他人學(xué)習(xí)。因此要作到 (一)讀代碼及(二)寫代碼。
學(xué)習(xí)如何編程就象學(xué)習(xí)用優(yōu)美的自然語言寫作一樣。最好的做法是讀一些大師的名著,試著自己寫點(diǎn)東西,再讀些,再寫點(diǎn),再讀些,再寫點(diǎn)…… 如此往復(fù),直到你的文章達(dá)到你體會(huì)到的范文的簡(jiǎn)潔和力量。
過去找到適合閱讀的好的代碼是困難的,因?yàn)閹缀鯖]有大型程序的源代碼能讓新手練手。這種狀況已經(jīng)戲劇性地發(fā)生變化;開放源代碼軟件,編程工具和操作系統(tǒng)(全都由黑客寫成)現(xiàn)在已經(jīng)隨處可見。讓我們?cè)谙乱粋€(gè)話題中繼續(xù)討論……