日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

黑客与画家(翻译)、如何成为一名黑客

發(fā)布時(shí)間:2024/1/8 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 黑客与画家(翻译)、如何成为一名黑客 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文是?Paul Graham?寫的一篇關(guān)于黑客與畫家共同之處的文章,深入探討了黑客工作的藝術(shù)性與創(chuàng)造性。雖然大部分的程序員都覺得藝術(shù)是一件很遙遠(yuǎn)的事情,但對(duì)于那些愿意仔細(xì)打磨 代碼追求精益求精的優(yōu)秀黑客來(lái)說(shuō),在創(chuàng)造的過(guò)程中總是能感受到藝術(shù)的真實(shí)存在(盡管可能只是隱約感受到,而且羞于把自己和藝術(shù)聯(lián)系起來(lái))。藝術(shù)之所以會(huì)讓 人覺得高高在上遠(yuǎn)離生活,是因?yàn)榇蟛糠秩硕际窃谝轮怩r地談?wù)撝囆g(shù),而不知道什么是創(chuàng)造。要成為一個(gè)創(chuàng)造者,你所要做的不是夸夸其談,而是投入全部熱情 去不斷實(shí)踐。Dirty Your Hands

英文原文?|?譯文地址

黑客與畫家

我讀完計(jì)算機(jī)本科以后,去藝術(shù)學(xué)校學(xué)習(xí)繪畫。許多人感到奇怪,喜歡計(jì)算機(jī)的人也會(huì)喜歡美術(shù)嗎?他們大概認(rèn)為編程序和畫畫是兩種完全不同的工作,編程需要冷靜,精密,和正確的方法,而畫畫是表達(dá)某種狂熱的情感。

這種印象是不對(duì)的,編程和畫畫有很多共同之處,實(shí)際上,在我認(rèn)識(shí)的不同類型的人中間,畫家和黑客是最相似的。

畫家和黑客的相似之處在于:他們都是創(chuàng)造者,就好像作曲家,建筑師,以及作家一樣。黑客和畫家類似,他們的目的是創(chuàng)造某種美好的事物。盡管在創(chuàng)造的過(guò)程中,也許會(huì)發(fā)現(xiàn)新技術(shù),但他們的根本目的并不是研究技術(shù)。

我從來(lái)都不喜歡”計(jì)算機(jī)科學(xué)”這個(gè)詞,因?yàn)檫@種東西根本就不存在。這門學(xué)科的內(nèi)容,不過(guò)是由于歷史原因偶然湊合到一起的大雜燴,就好像南斯拉夫國(guó)的 形成一樣。一頭是數(shù)學(xué)家們,他們擺弄計(jì)算機(jī)是為了得到國(guó)防部的資金贊助,中間部分,一伙人在研究仿佛是計(jì)算機(jī)自然史之類的東西--比如網(wǎng)絡(luò)上數(shù)據(jù)流算法的 行為特征等等。在另一個(gè)極端上,是黑客們,他們編寫有趣的軟件。對(duì)他們來(lái)說(shuō),計(jì)算機(jī)是表達(dá)的工具,如同水泥之于建筑師,顏料之于畫家。這三種人湊在一塊的 群體,就好像是數(shù)學(xué)家,物理學(xué)家和建筑師被分到一個(gè)專業(yè)里。

有時(shí)候黑客們干的事被稱為”軟件工程”,這個(gè)詞也是一種誤會(huì)。比起建筑師來(lái),軟件設(shè)計(jì)師離工程師的距離更遠(yuǎn)。建筑師和工程師的分界并不十分精確,但卻是實(shí)實(shí)在在存在的。其分界在于做什么和如何做:建筑師決定做什么,工程師考慮如何做出來(lái)。

這兩件事情也不能分得太開,如果你不懂得如何做,那么你設(shè)計(jì)的時(shí)候就會(huì)陷入難局。但是編程當(dāng)然不是僅僅決定如何實(shí)現(xiàn)某種特性那么簡(jiǎn)單,在最好的情況下,編程實(shí)際上就是設(shè)計(jì)軟件的特性--往往最好的設(shè)計(jì)方式就是實(shí)現(xiàn)它?。

說(shuō)不定哪一天,”計(jì)算機(jī)科學(xué)”會(huì)分裂成幾個(gè)專業(yè),就好像南斯拉夫最終分裂成幾個(gè)國(guó)家那樣。這也許是件好事。尤其是這意味著我所擅長(zhǎng)的編程,會(huì)變成獨(dú)立的專業(yè)。

這些不同類型的工作綁到一個(gè)專業(yè)里,當(dāng)然有利于行政管理,但是卻會(huì)引起智力上的困惑。這也是我不喜歡這個(gè)名詞的另一個(gè)原因。處于中間部分的那伙人所干的,和經(jīng)驗(yàn)科學(xué)差不多,但是另外兩頭的人,數(shù)學(xué)家和黑客,可不太象是在干真正的科學(xué)。

數(shù)學(xué)家好像并不為這個(gè)問(wèn)題發(fā)愁,他們就象數(shù)學(xué)系的同行一樣,很高興地做著理論研究,不久就忘了辦公大樓的牌子寫的是”計(jì)算機(jī)科學(xué)系”。但是對(duì)黑客們 來(lái)說(shuō),這個(gè)牌子就很成問(wèn)題。既然他們干的事被稱作科學(xué),他們就會(huì)感到好歹要象那么回事,于是大學(xué)和研究所的黑客們覺得應(yīng)該寫論文,而不是寫優(yōu)美的程序。但 是不幸得很, 后者才是他們真正應(yīng)該干的。

論文充其量不過(guò)是一個(gè)手續(xù)。黑客寫出很棒的程序,然后再做一篇論文,論文表示軟件上的成績(jī)。但是兩者之間的不協(xié)調(diào)引起了問(wèn)題:好的軟件比起糟糕的軟件來(lái),更加不適合做論文的題材。

好的軟件不適合作論文的題材。首先,論文要有獨(dú)創(chuàng)性的,寫過(guò)博士論文的都知道,要想保證你開墾的那片地是處女地,就等于說(shuō)是你劃出一片別人都不想要 的地來(lái)。第二,論文必須言之有物。糟糕的軟件使論文材料充足,你有很多事實(shí)可以描述你是如何克服那些困難的。糟糕的假設(shè)總是會(huì)產(chǎn)生大量問(wèn)題。大部分AI 研究就是好例子。比如,你假定,以抽象概念為參量的邏輯表達(dá)式列表可以用來(lái)表示知識(shí),那你要論證的內(nèi)容可就多了。就像Ricky Ricardo說(shuō)的,Lucy,這下可夠你解釋了。

創(chuàng)造美好事物的過(guò)程,常常是對(duì)已有事物的細(xì)微調(diào)整,或者是把已有概念用新方式組合起來(lái)。這種事情,恐怕不太好做研究論文吧。

那么為什么大學(xué)和研究所還要用論文來(lái)衡量黑客呢? 同樣的, 為什么要用標(biāo)準(zhǔn)化考試來(lái)衡量學(xué)術(shù)才能呢?為什么要用代碼行數(shù)來(lái)衡量程序員的工作量呢?這些考試的好處是容易實(shí)施,而且有一點(diǎn)效果, 因此才會(huì)引誘我們繼續(xù)采用這些措施。

真正的黑客能夠?qū)懗鰞?yōu)雅的代碼, 但是識(shí)別這種黑客的方法,真的很不容易找到。要有好的嗅覺才可能識(shí)別出真正優(yōu)秀的設(shè)計(jì)。是否真的有這種嗅覺,和是否自信有這種嗅覺,這兩者之間沒(méi)什么關(guān)聯(lián),即使有,也是負(fù)面的。

真正的考驗(yàn)是時(shí)間。經(jīng)過(guò)時(shí)間的考驗(yàn),好的東西會(huì)發(fā)展壯大,壞的東西會(huì)丟棄。不幸的是,需要的時(shí)間往往太長(zhǎng), 以至超過(guò)人的壽命。Samuel Johnson說(shuō),需要一百年的時(shí)間,才能形成一個(gè)作家的真正聲譽(yù)。你得等到這個(gè)作家有影響的朋友都死了,他的追隨者也都死了才行。

我想黑客不得不接受名聲上的不確定性,這一點(diǎn)上, 他們和其他創(chuàng)造者沒(méi)什么不同。實(shí)際上比較起來(lái)還要幸運(yùn)一些。在編程領(lǐng)域,一時(shí)的流行風(fēng)氣雖然也有影響,但沒(méi)有繪畫領(lǐng)域那么大。

還有比別人的誤解更糟的事情。更糟的危險(xiǎn)是你可能自己誤解自己。你通常在相關(guān)領(lǐng)域?qū)ふ异`感。如果你在計(jì)算機(jī)系,很自然地會(huì)以為,編程的本質(zhì)就是實(shí)現(xiàn) 計(jì)算機(jī)理論。我讀本科的時(shí)候有一種令我很不舒服的感覺,我覺得自己應(yīng)當(dāng)多學(xué)一點(diǎn)計(jì)算機(jī)理論,可是期末考試完了不到三個(gè)禮拜,我就把那些東西全忘光了。這讓 我覺得自己不夠盡責(zé)。

現(xiàn)在我認(rèn)識(shí)到我那時(shí)的想法都是錯(cuò)誤的。黑客對(duì)計(jì)算機(jī)理論的了解程度,只要達(dá)到畫家對(duì)顏料化學(xué)所了解的程度就夠了。你應(yīng)當(dāng)知道怎樣計(jì)算時(shí)間和空間復(fù)雜 度,知道圖靈機(jī)模型。也許應(yīng)當(dāng)知道狀態(tài)機(jī),至少知道這個(gè)概念,如果要寫語(yǔ)法解析或者正則表達(dá)式庫(kù)的時(shí)候會(huì)用得到。畫家對(duì)顏料的學(xué)問(wèn)上,要記的東西比這還要 多一些呢。

對(duì)我來(lái)說(shuō),靈感的源泉不是來(lái)自于那些掛著計(jì)算機(jī)招牌的地方,而是那些聚集著創(chuàng)造者的地方。我從繪畫方面得到的靈感比我從計(jì)算機(jī)理論上得到的,要多得多。

打個(gè)比方。我上學(xué)的時(shí)候,學(xué)生在上機(jī)之前,要把整個(gè)程序先用紙筆寫出來(lái)。可是我覺得這不是我寫程序的方式。我喜歡坐在計(jì)算機(jī)前面寫程序,根本不用紙 筆。我并不先在紙上寫出程序并檢驗(yàn)其正確性,我喜歡先敲一段代碼,當(dāng)然好多毛病,然后慢慢敲打成型。我受到的教育告訴我,調(diào)試應(yīng)當(dāng)是檢查輸入錯(cuò)誤的最后一 關(guān),而按照我的方式,程序基本上就是調(diào)試出來(lái)的。

好長(zhǎng)一段時(shí)間我都感到很沮喪,念小學(xué)的時(shí)候,我捉鉛筆的方式和老師教的不一樣,那時(shí)我也感到同此刻一樣的沮喪。如果我那會(huì)知道別的創(chuàng)造者-比如畫家 和建筑師-的做法的話,我就早該知道這種方法的名字,那就是:打草稿。我可以告訴你,他們?cè)诖髮W(xué)時(shí)教我的方法是錯(cuò)的。你應(yīng)當(dāng)是一邊寫程序一邊來(lái)確定程序的 走向, 這和畫家, 作家以及建筑師的做法完全一樣。

這里蘊(yùn)涵著軟件設(shè)計(jì)的真義, 認(rèn)識(shí)到這一點(diǎn), 就意味著程序語(yǔ)言應(yīng)當(dāng)首先要具有延展性。語(yǔ)言要有助于在編程中思考, 而不是僅僅表達(dá)思考的結(jié)果。它應(yīng)該象鉛筆, 而不是象鋼筆。如果程序員真的象大學(xué)里教的那樣寫程序, 那么靜態(tài)類型語(yǔ)言就是不錯(cuò)的選擇。但是我所知道的黑客都不是那樣子編程序的。我們需要這樣一種語(yǔ)言, 我們用它來(lái)隨意涂抹。而使用靜態(tài)類型語(yǔ)言編程序的感覺, 就好象手放在膝蓋上, 小心翼翼握著茶杯, 正襟危坐著和一個(gè)嚴(yán)肅的老太太談話。

談?wù)撿o態(tài)類型, 以及創(chuàng)造者這種話題, 我們除去了另外一個(gè)困擾的科學(xué)的問(wèn)題: 數(shù)學(xué)嫉妒。科學(xué)界的每個(gè)人暗地里都認(rèn)為數(shù)學(xué)家比自己聰明。我想數(shù)學(xué)家們自己大概也這么認(rèn)為。反正科學(xué)家們總是把自己的作品弄得象數(shù)學(xué)論文一樣。這對(duì)物理學(xué) 倒還沒(méi)什么大害, 但是你要是在自然科學(xué)上走得越遠(yuǎn), 就越發(fā)現(xiàn)這個(gè)問(wèn)題的嚴(yán)重性。

印上一整頁(yè)的公式, 看上去很讓人敬畏的樣子, 用上希臘字母就更加不得了。這種傾向可能誘惑你去研究那些可以公式化的問(wèn)題, 結(jié)果是忽略了真正重要的東西。

如果黑客認(rèn)同創(chuàng)作者的身份, 像是畫家和作家一樣, 他們就不會(huì)受此誘惑。作家和畫家才不理會(huì)數(shù)學(xué)呢, 根本就是不相干的事情。我認(rèn)為, 黑客也應(yīng)當(dāng)這樣看。

如果大學(xué)和研究所不讓黑客做自己想做的事情, 他們還可以去公司, 可惜, 公司和大學(xué)的做法是一丘之貉。大學(xué)和研究所要求黑客當(dāng)科學(xué)家, 而公司要求黑客當(dāng)工程師。

我也是最近才發(fā)現(xiàn)這問(wèn)題的。Yahoo買了Viaweb之后, 他們問(wèn)我的意向, 我一向就不喜歡商業(yè)公司, 我就說(shuō)我還是想編程序。進(jìn)了Yahoo以后, 我發(fā)現(xiàn)在他們那里, 編程序的意思就是代碼實(shí)現(xiàn), 和設(shè)計(jì)沒(méi)關(guān)系。程序員就是代碼工人, 他們把產(chǎn)品經(jīng)理的愿望, 以代碼形式記錄下來(lái)。

看起來(lái)這是大公司的一貫的做法。這樣做的目的是減低工作的偏差。只有少數(shù)程序員真正懂得設(shè)計(jì)軟件, 而且這些有才能的人很不容易一下子識(shí)別出來(lái)。所以與其把軟件的未來(lái)寄托在少數(shù)聰明人身上, 不如把軟件設(shè)計(jì)讓一個(gè)委員會(huì)來(lái)作, 程序員只管編碼實(shí)現(xiàn)。

如果你想賺錢, 那么記住我的話, 因?yàn)槲抑v的, 正是小公司取勝的機(jī)會(huì)。大公司采取保險(xiǎn)的做法, 意圖規(guī)避風(fēng)險(xiǎn)。但是試圖限制這種工作效果上的震蕩的時(shí)候, 固然避免了最壞的可能,但也失去了最好的。這對(duì)大公司當(dāng)然不是問(wèn)題, 大公司取勝的原因不是因?yàn)榘l(fā)明了偉大的產(chǎn)品, 而是因?yàn)榉傅腻e(cuò)誤比其他大公司少而已。

如果你有辦法和一個(gè)大公司競(jìng)爭(zhēng)某種產(chǎn)品, 這個(gè)公司的產(chǎn)品是產(chǎn)品經(jīng)理們?cè)O(shè)計(jì)的, 那么, 他們永遠(yuǎn)趕不上你。不過(guò)這樣的機(jī)會(huì)很不容易找到。你很難和大公司卷入軟件競(jìng)爭(zhēng), 就好比你很難和對(duì)手在城堡里徒手搏斗一樣。寫一個(gè)比微軟的word還要好的字處理器是可能的, 但是在操作系統(tǒng)這個(gè)微軟獨(dú)占的堡壘里, 他們對(duì)你根本就不屑一顧。

軟件競(jìng)爭(zhēng)只能在全新的市場(chǎng)中展開, 因?yàn)樵谀抢镞€沒(méi)有誰(shuí)建立起防御工事。你有可能采取大膽的策略, 集合那些既做設(shè)計(jì)又做編碼的人, 來(lái)贏得競(jìng)爭(zhēng)。微軟最初就是這樣做的, 蘋果,HP也莫不如此。我想任何成功的創(chuàng)業(yè)公司都是走的這條路。

所以, 創(chuàng)造偉大軟件的一個(gè)辦法就是創(chuàng)業(yè)開公司。不過(guò)這里面還有兩個(gè)問(wèn)題。第一, 開公司以后, 除了編程序, 你需要做好多其他事情。在Viaweb的時(shí)候, 我真的希望自己能擠出四分之一的時(shí)間編程就好了。實(shí)際上我四分之三的時(shí)間都是在做很討厭甚至很麻煩的事情。對(duì)此我深有體會(huì), 有一次當(dāng)我開完董事會(huì)去補(bǔ)牙, 坐在診所的椅子上, 我覺得簡(jiǎn)直抵得上度假了。

還有另一個(gè)問(wèn)題。寫有趣的軟件, 和寫賺錢的軟件, 經(jīng)常是沒(méi)多少共同之處。設(shè)計(jì)語(yǔ)言是很有趣的工作, 微軟的第一個(gè)產(chǎn)品就是。但是現(xiàn)在沒(méi)人會(huì)花錢買語(yǔ)言。要想賺錢就得寫那種很麻煩的, 沒(méi)人會(huì)免費(fèi)干的軟件。

所有的創(chuàng)造者都會(huì)面臨這個(gè)問(wèn)題。價(jià)格是供求關(guān)系決定的, 對(duì)有趣軟件的需求總是比較少,而解決一般用戶的平凡問(wèn)題的需求, 總是多一些。在高速公路邊上演出, 觀眾一定少, 在廟會(huì)搭個(gè)臺(tái)子演出, 觀眾一定多。寫長(zhǎng)篇小說(shuō)的收入, 比不上寫廣告詞的收入, 雖然那些廣告最后的歸宿是垃圾箱。設(shè)計(jì)一種語(yǔ)言的回報(bào)一定不多, 而搞定某些公司的老掉牙的數(shù)據(jù)庫(kù)和web server的連接問(wèn)題, 回報(bào)會(huì)豐厚得多。

我認(rèn)為這個(gè)難題的答案, 是創(chuàng)造者們應(yīng)當(dāng)找一個(gè)養(yǎng)家糊口的”日常工作”。這個(gè)名詞最初是慣于晚上演出的音樂(lè)家們使用的。它的意思是: 你做一個(gè)工作是為了賺錢, 另一個(gè)工作是因?yàn)槟阆矚g。

幾乎所有的創(chuàng)造者在他們職業(yè)生涯的早期, 都有日常工作。其中最為人所知的就是畫家和作家。如果能賺錢的日常工作剛好是你所喜愛的工作, 那你就太幸運(yùn)了。音樂(lè)家就經(jīng)常在唱片店工作。正在用某種語(yǔ)言或者操作系統(tǒng)的黑客, 也應(yīng)當(dāng)找個(gè)相近的系統(tǒng)管理或維護(hù)的工作。[1]

黑客應(yīng)當(dāng)找個(gè)日常工作糊口, 業(yè)余時(shí)間做自己喜愛的程序。我的這個(gè)說(shuō)法并不是獨(dú)出心裁。所有的開源社區(qū)的黑客都是這樣做的。我要說(shuō)的是, 開源社區(qū)的模型也許是正確的模型, 因?yàn)檫@種模型被其他創(chuàng)造者分別獨(dú)立地驗(yàn)證過(guò)。

一般的雇主都不太愿意雇員參與開源項(xiàng)目, 這讓我有一點(diǎn)驚奇。在Viaweb則相反, 我們不愿意雇傭沒(méi)有做過(guò)開源項(xiàng)目的人。面試程序員的時(shí)候, 我們考慮的一個(gè)首要問(wèn)題就是, 他們業(yè)余時(shí)間寫什么軟件。你要不是真的熱愛這個(gè)工作, 就不可能干的出色。如果你熱愛編程, 就必然會(huì)有自己熱愛的業(yè)余項(xiàng)目。[2]

黑客是創(chuàng)造者, 不太象是科學(xué)家。黑客尋找靈感的地方, 不應(yīng)當(dāng)是科學(xué)領(lǐng)域, 而是其他創(chuàng)造者工作的領(lǐng)域。那么, 我們從繪畫上, 能夠得到什么啟示呢?

第一件可以從繪畫領(lǐng)域?qū)W習(xí)的, 或者說(shuō)可以驗(yàn)證的, 就是怎樣學(xué)習(xí)編程。繪畫都是在實(shí)踐中學(xué)會(huì)的, 編程亦然。大部分黑客都不是因?yàn)槟畲髮W(xué)計(jì)算機(jī)課才走上編程之路的。他們13歲年紀(jì)就開始學(xué)著寫程序。即使是上了大學(xué)計(jì)算機(jī)課, 你真正學(xué)會(huì)編程, 大多也是通過(guò)自己實(shí)際寫程序。[3]

畫家通常會(huì)留下一系列作品, 你可以從中觀察到他們?cè)趯?shí)踐中學(xué)習(xí)的過(guò)程。如果你按年代順序觀察一個(gè)畫家的作品, 你會(huì)發(fā)現(xiàn)后一個(gè)作品在前一個(gè)作品基礎(chǔ)上的提高。如果一幅畫中的某樣?xùn)|西特別出色, 你多半會(huì)在更早的作品中發(fā)現(xiàn)其發(fā)展成熟的軌跡。

我認(rèn)為大多數(shù)創(chuàng)造者都是這樣工作的。作家和建筑設(shè)計(jì)師也不例外。對(duì)于黑客而言, 我覺得這樣的做法大概比較好: 從一個(gè)大概的草稿開始起步, 不斷嘗試采納新的想法, 做修訂版,而不是連續(xù)幾年埋頭做一個(gè)題目。

這種工作模式是區(qū)別黑客和科學(xué)家的另一個(gè)顯著標(biāo)志。科學(xué)家并不通過(guò)干活來(lái)學(xué)習(xí)科學(xué), 他們通過(guò)做實(shí)驗(yàn)和解題來(lái)學(xué)習(xí)科學(xué)??茖W(xué)家總是從完美的東西開始, 也就是說(shuō)他們重復(fù)前人已經(jīng)做過(guò)的工作, 最后達(dá)到某種高度, 才開始做自己創(chuàng)造性的工作。而黑客呢, 一開始就是做創(chuàng)造性的工作–當(dāng)然這時(shí)候作品還不成樣子。黑客從創(chuàng)造開始, 最終達(dá)到完美。而科學(xué)家從完美開始, 最終達(dá)到創(chuàng)造。

創(chuàng)造者學(xué)習(xí)的另一種方法是觀摩杰作。對(duì)畫家來(lái)說(shuō), 美術(shù)館是技巧的寶庫(kù)。幾百年來(lái), 美術(shù)館都是畫家學(xué)習(xí)和借鑒大師作品的地方, 它成為傳統(tǒng)教育方式的一個(gè)部分。觀摩杰作強(qiáng)迫畫家仔細(xì)觀察那幅畫是如何畫成的。

作家也是如此。本杰明-富蘭克林曾經(jīng)總結(jié)Addison和Steel的散文的特點(diǎn), 并加以模仿。Raymond Chandler也是這樣學(xué)寫偵探小說(shuō)的。

同樣, 黑客也是通過(guò)看優(yōu)秀的程序來(lái)學(xué)習(xí)編程–不僅看它的外在表現(xiàn), 而且要看源碼。開源軟件有一個(gè)少人提及的優(yōu)點(diǎn)就是: 你很容易從中學(xué)習(xí)編程。我學(xué)編程的時(shí)候, 不得不依賴書里的例子。其中有一大堆代碼是屬于Unix的, 但Unix也不開源。大部分人是讀John Lions的書里的源代碼, 而這些內(nèi)容是不合法的。這本寫于1977年的書, 直到1996年都還被禁止出版。

繪畫的過(guò)程就是不斷改進(jìn)的過(guò)程, 這是值得我們學(xué)習(xí)的另一個(gè)地方。繪畫通常從草圖開始,逐漸地添上細(xì)節(jié), 但又不僅僅是添上細(xì)節(jié)那么簡(jiǎn)單。有時(shí)候會(huì)發(fā)現(xiàn)最初的想法是錯(cuò)的。無(wú)數(shù)的人像作品, 在x光照射之下, 會(huì)發(fā)現(xiàn)面部輪廓修改過(guò), 嘴的位置也移動(dòng)過(guò), 諸如此類。

這就是我們應(yīng)當(dāng)學(xué)習(xí)的榜樣, 編程也應(yīng)當(dāng)遵循同樣的做法。想要假設(shè)軟件的規(guī)格設(shè)計(jì)完美無(wú)缺, 這顯然是不切實(shí)際的。預(yù)先接受這種現(xiàn)實(shí)對(duì)你有好處, 寫程序的時(shí)候就會(huì)有所準(zhǔn)備,隨時(shí)應(yīng)對(duì)可能發(fā)生的設(shè)計(jì)規(guī)格上的改變。

(大公司很難做到這一點(diǎn), 這又是一個(gè)小公司可以發(fā)揮優(yōu)勢(shì)的地方。)

現(xiàn)在差不多每個(gè)人都知道過(guò)早優(yōu)化的危險(xiǎn)。我認(rèn)為我們也同樣應(yīng)當(dāng)顧慮另外一個(gè)問(wèn)題, 就是過(guò)遲確定軟件的設(shè)計(jì)規(guī)格。

好的工具可以幫助我們避免這個(gè)危險(xiǎn)。好的語(yǔ)言也可以幫助你較容易地改變主意。動(dòng)態(tài)類型語(yǔ)言就有這個(gè)優(yōu)點(diǎn), 你用不著預(yù)先就指定數(shù)據(jù)的表現(xiàn)形式。不過(guò), 我認(rèn)為彈性的關(guān)鍵之處在于, 它使語(yǔ)言具有較高的抽象度, 如果一個(gè)程序比較短, 那它就比較容易修改。

這似乎聽起來(lái)讓人迷惑。但是偉大的作品總是精益求精。例如, 達(dá)芬奇在國(guó)家美術(shù)館畫Genevra de Benci像的時(shí)候, 頭像后面是檜柏樹叢, 他仔細(xì)地描繪每一片葉子。許多畫家也許認(rèn)為,這些東西是襯托頭像的, 沒(méi)人會(huì)仔細(xì)看。

達(dá)芬奇并不這樣認(rèn)為。他繪畫的認(rèn)真程度, 并不取決于看畫的人的認(rèn)真程度如何。達(dá)芬奇和米開朗琪羅一樣, 都是一絲不茍。從總體看去, 那些似乎看不見的細(xì)節(jié)也會(huì)變得顯著。這是一絲不茍的重要之處。觀眾經(jīng)過(guò)這幅畫的時(shí)候, 注意力一下子就被吸引過(guò)去, 那些原本不易覺察的細(xì)節(jié), 綜合在一起產(chǎn)生了驚人的效果, 就好像一千個(gè)細(xì)微的聲音唱出的和聲一樣。

偉大的軟件對(duì)于美的追求, 也需要超人的投入。當(dāng)你仔細(xì)查看好軟件的時(shí)候, 會(huì)發(fā)現(xiàn)那些不為人注意的部分同樣優(yōu)美。我不是說(shuō)我自己寫的軟件是偉大的, 但我知道, 寫代碼的時(shí)候,要盡量寫得清晰易讀。有的程序變量名取得丑陋極了, 有的程序行縮進(jìn)亂七八糟, 讀這樣的代碼真能讓我發(fā)瘋。

如果把黑客僅僅當(dāng)作代碼工人的話, 那他會(huì)像工人挖水溝一樣從一頭干到另一頭。但是如果把黑客當(dāng)作創(chuàng)造者的話, 我們就必須考慮靈感的因素。

編程序的過(guò)程和繪畫的過(guò)程類似, 也會(huì)有起有落。上新項(xiàng)目的時(shí)候, 一天干16個(gè)小時(shí)不知道累, 也有時(shí)候, 無(wú)論如何都提不起興致。

這種狀況也必須考慮在內(nèi), 你應(yīng)對(duì)的方法不同, 效果也會(huì)不一樣。當(dāng)你開著手動(dòng)檔汽車過(guò)山的時(shí)候, 有時(shí)候?yàn)榱朔乐箳佸^, 不得不松開離合器。松開離合器可以防止拋錨。在繪畫和編程之中, 有一些是關(guān)鍵的東西, 另外一些是常規(guī)的工作, 留下一些容易作的工作, 等你厭倦的時(shí)候, 就做這些較輕松的工作。

比如說(shuō), 在編程時(shí)可以故意留一些bug, 我比較喜歡找bug。這時(shí)候, 黑客這個(gè)詞的含義可以說(shuō)恰當(dāng)極了。你面臨的問(wèn)題總體上是有限制的, 你要做的就是解決掉它。假定你的程序應(yīng)該做x, 結(jié)果卻做了y, 哪里出了問(wèn)題? 你可以斷定最終一定是可以解決的。這個(gè)活跟刷墻一樣, 是不錯(cuò)的調(diào)劑。

繪畫不僅可以教我們?nèi)绾翁幚碜约旱墓ぷ? 還教我們?nèi)绾螀f(xié)同工作。過(guò)去很多偉大的作品都是由一群人共同完成的, 盡管在美術(shù)館的標(biāo)簽上可能只寫著一個(gè)人的名字。達(dá)芬奇在Verrocchio 的工作室當(dāng)學(xué)徒時(shí), 就參與繪制<<基督受洗>>中的天使。這樣的事情當(dāng)時(shí)很常見。當(dāng)米開朗其羅堅(jiān)持要自己一人繪制西斯廷教堂屋頂?shù)娜讼駮r(shí), 就被認(rèn)為是很不得體的事情。

就我所知, 畫家們一起作畫時(shí), 他們并不是一起畫一個(gè)共同的部分, 而是一個(gè)主要畫家畫主題人物, 他的副手畫背景和其他部分, 絕對(duì)不會(huì)有人摻和別人正在畫的東西。

我認(rèn)為這種模式也適用于軟件開發(fā), 不過(guò)別走得太遠(yuǎn)。如果一段代碼有三四個(gè)程序員分別寫過(guò), 那么沒(méi)人真正對(duì)它負(fù)責(zé)。結(jié)果就會(huì)變成公用房間一樣沒(méi)人收拾, 又冷清又灰暗。正確的做法是把程序分成嚴(yán)格定義的模塊, 每個(gè)模塊有專人負(fù)責(zé), 仔細(xì)設(shè)計(jì)模塊之間的接口, 使之盡可能像程序語(yǔ)言本身那樣, 精確地表達(dá)出來(lái)。

軟件和繪畫一樣, 都是為人而做的。黑客也應(yīng)當(dāng)像畫家一樣, 努力創(chuàng)作出偉大的作品。你必須為用戶的立場(chǎng)著想。

我小時(shí)候, 就聽人講要學(xué)會(huì)從別人的立場(chǎng)來(lái)設(shè)想。意思就是做別人想要你做的事情, 而不是做你自己想做的事情。這當(dāng)然給” 換位思考”這個(gè)詞帶來(lái)了壞名聲。因此我一直不愿意這樣做。

可是, 我錯(cuò)了。換位思考確實(shí)是成功的秘密, 這并不意味著放棄自我。理解別人的觀點(diǎn), 并不是說(shuō)你要按別人的興趣辦事。在某種情況下剛好相反, 舉個(gè)例子, 打仗的時(shí)候, 理解敵人觀點(diǎn), 其目的恰好是要反其道而行之。[4]

大多數(shù)創(chuàng)作是為人的, 你得理解人的需要。差不多所有偉大的作品主題都是人, 因?yàn)槿俗罡信d趣的, 就是人類自身。

好程序員和偉大的程序員之間的唯一的差別, 就是體察別人的能力。有些程序員很聰明, 但論到”換位思考”, 則是完全的自我主義者。這樣的人不可能設(shè)計(jì)出偉大的軟件[5], 他們從來(lái)不懂得理解別人的觀點(diǎn)。

判斷一個(gè)人換位思考的能力如何, 最好的辦法是看他怎樣向那些不懂技術(shù)的人講解技術(shù)問(wèn)題。我們大概都見過(guò)那樣一些人, 不管多么聰明, 這件事情上卻是糟得很。如果有人問(wèn), 什么是編程語(yǔ)言, 他們會(huì)說(shuō), 呃, 就是一種高級(jí)語(yǔ)言, 能經(jīng)過(guò)編譯器處理產(chǎn)生目標(biāo)碼。高級(jí)語(yǔ)言?編譯器? 目標(biāo)碼? 不知道編程語(yǔ)言的人, 難道會(huì)知道這些東西?

軟件的目標(biāo)之一, 就是解釋自己。你要寫出好程序, 就應(yīng)當(dāng)知道用戶對(duì)軟件了解甚少。他們用軟件時(shí), 全無(wú)思想準(zhǔn)備。如果軟件的行為剛好合乎他們的設(shè)想, 那就最好了。別指望用戶會(huì)去讀操作手冊(cè)。這方面, 我見過(guò)的最好系統(tǒng)是早期的蘋果, 那時(shí)候還是1985年。蘋果干了所有軟件都做不了的事情, 那就是能正常運(yùn)行。[6]

源碼同樣也應(yīng)當(dāng)解釋自己。如果讓人回憶關(guān)于編程的名言, 經(jīng)常提到的是結(jié)構(gòu)化和解釋語(yǔ)言初期的一句話:

程序?qū)懗鰜?lái)是給人看的, 碰巧機(jī)器也能運(yùn)行。

你不但要為用戶設(shè)身處地地著想, 對(duì)讀者也是一樣, 因?yàn)樽x者可能就是你自己。好多程序員寫了程序, 過(guò)半年再看, 簡(jiǎn)直看不懂究竟是怎么回事。我就見過(guò)有幾個(gè)人因?yàn)檫@原因放棄了perl。[7]

缺乏換位思考的能力仿佛是高智商的特征, 尤其在某些地方, 這都成了一種風(fēng)尚。但我不覺得真的有什么關(guān)聯(lián)。數(shù)學(xué)和自然科學(xué)和人類感情無(wú)關(guān), 這些領(lǐng)域的人顯然都很聰明, 于是乎高智商就和”不通世故人情”掛起構(gòu)來(lái)。事實(shí)上好多平常智商的人在這方面也不行??纯疵摽谛愎?jié)目里那些站起來(lái)發(fā)問(wèn)的人, 那些問(wèn)題問(wèn)的, 真叫拐彎抹角, 主持人得重新梳理一遍, 才能搞得清是啥意思。

如果編程和繪畫寫作一樣的話, 它也一樣酷嗎? 畢竟, 人只有一次生命, 最好是做有意義的事情。

這問(wèn)題真難回答。在贏得名氣上總是有很大的滯后。這就好像遙遠(yuǎn)的星星發(fā)出的亮光, 要經(jīng)過(guò)好多年才能到達(dá)我們眼里。繪畫行業(yè)光芒四射是因?yàn)?00年前就產(chǎn)生的杰作。那時(shí)候,沒(méi)人會(huì)象我們現(xiàn)在這樣看重這些作品。我們現(xiàn)在所知的Urbino 公爵Federico daMontafeltro先生的形象, 是從Piero della Francesca的作品里的高鼻子男人哪里得來(lái)的。這在當(dāng)時(shí)的人眼里看來(lái), 一定是非常奇特的。

所以當(dāng)我說(shuō)編程沒(méi)有繪畫那么酷的時(shí)候, 我們應(yīng)當(dāng)記住繪畫在它古老的光輝年代, 同樣也不見得那么酷。

我們可以自信地說(shuō), 現(xiàn)在正是黑客事業(yè)的光輝年代, 在大部分領(lǐng)域, 偉大的作品誕生很早。1430-1500年代的繪畫現(xiàn)在仍難以超越, 莎士比亞彷佛生來(lái)就是戲劇家, 把這門藝術(shù)推進(jìn)到如此之高的程度, 以致于后來(lái)的劇作家都生活在他的陰影里。Albrecht Durer之于雕刻, 奧斯丁之于小說(shuō), 也是如此。

一次又一次, 我們看到同樣的模式。新的媒體誕生了, 人們熱情高漲, 短短幾代人就把它的能量發(fā)揮到極至。黑客事業(yè)似乎也正處于這樣的時(shí)期。

達(dá)芬奇時(shí)代的繪畫行業(yè)并不酷, 是他的杰作造就了繪畫行業(yè)的酷。黑客事業(yè)之未來(lái), 全依賴我們今日之創(chuàng)造。

作者注:

[1] 照相術(shù)的出現(xiàn), 毀掉了畫家的日常工作。歷史上很多畫家靠替人畫像維持生計(jì)。

[2] 我聽說(shuō)微軟不鼓勵(lì)員工從事開源項(xiàng)目, 業(yè)余搞也不行。不過(guò)現(xiàn)在有那么多黑客都在做開源項(xiàng)目, 這種政策也許會(huì)令他們難以招募到很多一流程序員。

[3] 大學(xué)所能學(xué)到的編程技術(shù), 其狀況相當(dāng)于你學(xué)到的關(guān)于讀書, 打扮或者約會(huì)的知識(shí): 你上高中那時(shí)候的品味多差啊。

[4] 這里有一個(gè)”換位思考”的例子。在Viaweb的時(shí)候, 如果在兩個(gè)選擇之間下不了決心, 我們就會(huì)問(wèn): 我們的對(duì)手最恨什么? 當(dāng)一個(gè)對(duì)手在軟件里加了個(gè)沒(méi)用的特性, 這個(gè)特性我們沒(méi)有, 他們就在媒體上大作文章。我們當(dāng)然也可以解釋說(shuō)這個(gè)特性根本是廢物, 但是我們還是決定也實(shí)現(xiàn)它, 因?yàn)檫@樣的話, 對(duì)手會(huì)更生氣。于是當(dāng)天下午我們就加上了這個(gè)特性。

[5] 不包括文本編輯器和編譯器。因?yàn)檫@兩樣?xùn)|西黑客自己也天天用, 自己就是典型用戶,所以用不著了解別人的觀點(diǎn)。

[6] 差不多如此。他們?cè)趦?nèi)存使用上弄巧成拙, 產(chǎn)生好多很麻煩的磁盤交換。幾個(gè)月后, 我買了個(gè)新驅(qū)動(dòng)器加上, 這問(wèn)題就解決了。

[7] 給程序加注釋, 并不是增加易讀性的好辦法。我把Abelson和Sussman的話再發(fā)揮一下:程序語(yǔ)言是用來(lái)表達(dá)算法的, 碰巧也能在機(jī)器上運(yùn)行。好的編程語(yǔ)言, 表達(dá)軟件的能力比英語(yǔ)更好。只有在代碼含義復(fù)雜難解的地方, 才有必要加注釋, 就好像高速公路上急轉(zhuǎn)彎的地方才會(huì)有警告標(biāo)志。

感謝Trevor Blackwell, Robert Morris, Dan Giffin, 和Lisa Randall閱讀本文的草稿, 感謝Henry Leitner和Larry Finkelstei邀請(qǐng)我講話。




http://www.zhuoqun.net/html/y2010/1459.html

?如何成為一名黑客?(英文原文?)

翻譯:Barret

內(nèi)容一覽
為什么會(huì)有這份文檔?
什么是黑客?
黑客應(yīng)有的態(tài)度
黑客的基本技能
黑客文化中的地位
黑客和書呆子(Nerd)的聯(lián)系
風(fēng)格的意義
其它資源
FAQ(常問(wèn)問(wèn)題解答)

為什么會(huì)有這份文檔?

作為 Jargon File 的編輯和 一些其他有名的類似性質(zhì)文章的作者,我經(jīng)常收到充滿熱情的網(wǎng)絡(luò)新手的email提問(wèn)(確實(shí)如此) “我如何才能成為一名出色的黑客?”非常奇怪的是似乎沒(méi)有任何的FAQ或者Web形式的文檔來(lái)說(shuō)明這個(gè) 十分重要的問(wèn)題,因此我寫了一份。

如果你現(xiàn)在讀的是這份文檔的離線拷貝,那么請(qǐng)注意當(dāng)前最新版本(英文版)在 http://www.tuxedo.org/~esr/faqs/hacker-howto.html可以得到。

注意:在這份文檔最后有 FAQ(常問(wèn)問(wèn)題解答)。 請(qǐng)?jiān)谙蛭姨岢鋈魏侮P(guān)于這份文檔的疑問(wèn)之前讀兩遍。

目前這份文檔有很多翻譯版本: 保加利亞語(yǔ), 簡(jiǎn)體中文, 繁體中文, 丹麥語(yǔ), 荷蘭語(yǔ), 法語(yǔ), 德語(yǔ), 匈牙利語(yǔ), 印尼語(yǔ), 日語(yǔ), 朝鮮語(yǔ), 葡萄牙語(yǔ), 俄語(yǔ)及 瑞典語(yǔ)。 注意由于這份文檔時(shí)有修正,所以以上翻譯版本可能有不同程度的過(guò)時(shí)。

——————————————————————————–

什么是黑客?

Jargon File 包含了一大堆關(guān)于“hacker”這個(gè)詞的定義,大部分與技術(shù)高超和熱衷解決問(wèn)題 及超越極限有關(guān)。但如果你只想知道如何 成為 一名黑客, 那么只有兩件事情確實(shí)相關(guān)。

這可以追溯到幾十年前第一臺(tái)分時(shí)小型電腦誕生, ARPAnet 實(shí)驗(yàn)也剛展開的 年代,那時(shí)有一個(gè)由程序設(shè)計(jì)專家和網(wǎng)絡(luò)名人所組成的, 具有分享特點(diǎn)的文化社群。 這種文化的成員創(chuàng)造了 “hacker” 這個(gè)名詞。黑客們建立了 Internet?。 黑客們發(fā)明出了現(xiàn)在使用的 UNIX 操作系統(tǒng)。黑客們使 Usenet 運(yùn)作起來(lái), 黑客們讓 WWW 運(yùn)轉(zhuǎn)起來(lái)。如果你是這個(gè)文化的一部分,如果你對(duì)這種文化有所貢獻(xiàn),而且這個(gè)社群的其它成員也認(rèn)識(shí)你并稱你為 hacker, 那么你就是一位黑客。

黑客精神并不僅僅局限在軟件的黑客文化中。?有人用黑客態(tài)度對(duì)待其它事情,如電子學(xué)和音樂(lè)—— 事實(shí)上,你可以在任何最高級(jí)別的科學(xué)和藝術(shù)活動(dòng)中發(fā)現(xiàn)它?。 精于軟件的黑客贊賞這些在其他領(lǐng)域的同類并把他們也稱作黑客—— 有人宣稱黑客天性是絕對(duì)獨(dú)立于他們工作的特定領(lǐng)域的。 但在這份文檔中, 我們將注意力集中在軟件黑客的技術(shù)和態(tài)度, 以及發(fā)明了“黑客”一詞的以共享為特征的文化傳統(tǒng)之上。

有一群人大聲嚷嚷著自己是黑客,但他們不是。 他們(主要是正值青春的少年)是一些蓄意破壞計(jì)算機(jī)和電話系統(tǒng)的人。 真正的黑客把這些人叫做“駭客”(cracker),并不屑與之為伍。 多數(shù)真正的黑客認(rèn)為駭客們又懶又不負(fù)責(zé)任,還沒(méi)什么大本事。 專門以破壞別人安全為目的的行為并不能使你成為一名黑客, 正如用鐵絲偷開走汽車并不能使你成為一個(gè)汽車工程師。 不幸的是,很多記者和作家往往錯(cuò)把“駭客”當(dāng)成黑客; 這種做法一直使真正的黑客感到惱火?。

根本的區(qū)別是:黑客搞建設(shè),駭客搞破壞。

如果你想成為一名黑客,請(qǐng)接著讀下去。如果你想做一個(gè)駭客,去讀 alt.2600 新聞組,并在意識(shí)到你并不像自己想象的那么聰明后去坐五到十次監(jiān)獄。 關(guān)于駭客,我只想說(shuō)這么多。

——————————————————————————–

黑客應(yīng)有的態(tài)度

黑客們解決問(wèn)題,建設(shè)事物,同時(shí)他們崇尚自由和無(wú)私的雙向幫助。 要被他人承認(rèn)是一名黑客,你的行為得體現(xiàn)出你好像具備了這種態(tài)度一般。 而要想做得好象你具備這種態(tài)度一般,你就得切切實(shí)實(shí)堅(jiān)持它?。

但是如果你認(rèn)為培養(yǎng)黑客態(tài)度只是一條在黑客文化圈中得到承認(rèn)的路子, 那就大錯(cuò)特錯(cuò)了。成為具備這些特質(zhì)的這種人對(duì) 你自己非常重要——有助于你學(xué)習(xí),及給你提供源源不斷的動(dòng)力。 同所有創(chuàng)造性的藝術(shù)一樣,成為大師的最有效方法就是模仿大師的精神——不僅從智力上,也要從感情上進(jìn)行模仿?。

或許, 下面這首現(xiàn)代的禪詩(shī)很好的闡述了這個(gè)意思:

To follow the path:(沿著這樣一條道路:)
look to the master,(尋找大師,)
follow the master,(跟隨大師,)
walk with the master,(與大師通行,)
see through the master,(洞察大師,)
become the master.(成為大師。)

嗯,如果你想成為一名黑客,反復(fù)讀下面的事情直至你相信它們:
——————————————————————————–

1.?世界充滿了待解決的迷人問(wèn)題。

做一名黑客會(huì)有很多樂(lè)趣,但卻是要費(fèi)很多氣力方能得到的樂(lè)趣。 這些努力需要?jiǎng)恿?。成功的運(yùn)動(dòng)員從鍛煉身體、超越自我極限的愉悅中得到動(dòng)力。 同樣,做黑客,你得能從解決問(wèn)題,磨練技術(shù)及鍛煉智力中得到基本的樂(lè)趣。

如果你還不是天生的這類人又想做黑客,你就要設(shè)法成為這樣的人。 否則你會(huì)發(fā)現(xiàn),你的黑客熱情會(huì)被其他分心的事物吞噬掉——如金錢、性和社會(huì)上的虛名?。

(同樣你必須對(duì)你自己的學(xué)習(xí)能力建立信心——相信盡管當(dāng)你對(duì)某問(wèn)題近乎一無(wú)所知, 但只要你一點(diǎn)一點(diǎn)地試驗(yàn)、學(xué)習(xí),最終會(huì)掌握并解決它。)

——————————————————————————–

2.?一個(gè)問(wèn)題不應(yīng)該被解決兩次。

聰明的腦袋是寶貴的有限的資源。當(dāng)世界還充滿非常多有待解決的有趣的新問(wèn)題時(shí), 它們不應(yīng)該被浪費(fèi)在重新發(fā)明輪子這類事情上。

作為一名黑客,你必須相信其他黑客的思考時(shí)間是寶貴的——因此共享信息, 解決問(wèn)題并發(fā)布結(jié)果給其他黑客幾乎是一種道義,這樣其他人就可以去解決 新問(wèn)題而不是不斷地忙于對(duì)付舊問(wèn)題。

(你不必認(rèn)為一定要把你所有的發(fā)明創(chuàng)造公布出去, 但這樣做的黑客是贏得大家極度尊敬的人。賣些錢來(lái)養(yǎng)家糊口,租房買計(jì)算機(jī)甚至發(fā)大財(cái)和黑客價(jià)值觀也是相容的,只要你別忘記你還是個(gè)黑客。)

——————————————————————————–

3.?無(wú)聊和乏味的工作是罪惡

黑客(泛指具有創(chuàng)造力的人們)應(yīng)該從來(lái)不會(huì)被愚蠢的重復(fù)性勞動(dòng)所困擾, 因?yàn)楫?dāng)這種事情發(fā)生時(shí)就意味著他們沒(méi)有在做只有他們才能做的事情—— 解決新問(wèn)題。這樣的浪費(fèi)傷害每一個(gè)人。因此,無(wú)聊和乏味的工作不僅僅是令人不舒服而已,而且是罪惡。

作為一個(gè)黑客,你必須堅(jiān)信這點(diǎn)并盡可能多地將乏味的工作自動(dòng)化?, 不僅為你自己,也為了其他人(尤其是其他黑客們)。

(對(duì)此有一個(gè)明顯的例外。黑客有時(shí)也做一些在他人看來(lái)是重復(fù)性或枯燥的工作以進(jìn)行“腦力休息”,或是為了獲得某種技能,或是獲得一些除此以外無(wú)法獲得的 特別經(jīng)驗(yàn)。但這是自愿的——有腦子的人不應(yīng)該被迫做無(wú)聊的活兒。)

——————————————————————————–

4.?自由萬(wàn)歲。

黑客們是天生的反獨(dú)裁主義者。 任何能向你發(fā)命令的人能夠迫使你停止解決令你著迷的問(wèn)題, 同時(shí),按照獨(dú)裁者的一般思路,他通常會(huì)給出一些極端愚昧的理由。 因此,不論何處,任何獨(dú)裁主義的作法,只要它壓迫你和其他黑客,你就要和它斗到底。

(這并非向所有權(quán)威挑戰(zhàn)。兒童需要監(jiān)護(hù),罪犯要被看管起來(lái)。 如果服從命令得到某種東西比起用其他方式得到它更節(jié)約時(shí)間,黑客可以同意接受某種形式的權(quán)威。但這是一個(gè)有限度的,有意的交易; 那種權(quán)威想要的個(gè)人服從不是你應(yīng)該同意給予的。)

權(quán)威喜歡審查和保密。他們不信任自愿的合作和信息的共享—— 他們只喜歡由他們控制的所謂“合作”?。因此,作為一個(gè)黑客, 你得對(duì)審查、保密,以及使用武力或欺騙去壓迫有行為能力的人們的做法有一種本能的敵意。 同時(shí)你要有為此信念斗爭(zhēng)的意愿。

——————————————————————————–

5.?態(tài)度不能替代能力。

作為一名黑客,你必須培養(yǎng)起這些態(tài)度。 但只具備這些態(tài)度并不能使你成為一名黑客,也不能使你成為一個(gè)運(yùn)動(dòng)健將和搖滾明星。?成為一名黑客需要智力,實(shí)踐,奉獻(xiàn)精神和辛苦工作?。

因此,你必須學(xué)會(huì)懷疑,并尊重各種各樣的能力。 黑客們不會(huì)為那些裝模做樣的人浪費(fèi)時(shí)間,但他們卻非常尊重能力—— 尤其是從事黑客工作的能力,不過(guò)任何能力總歸是好的。 具備很少人能具備的那些方面的能力尤其好,其中具備 涉及腦力、技巧和專注方面能力的當(dāng)然最好。

尊敬能力,你就會(huì)享受到提高自己能力的樂(lè)趣?—— 辛苦的工作和奉獻(xiàn)會(huì)變成一種高度娛樂(lè)而非苦差事。 要想成為一名黑客,這一點(diǎn)非常重要。

——————————————————————————–

黑客的基本技能

黑客態(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)站得到。

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ì)覺得樂(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í)的例子。

——————————————————————————–

黑客文化中的地位

象大部分不涉及金錢的文化一樣,黑客王國(guó)靠聲譽(yù)運(yùn)轉(zhuǎn)?。 你設(shè)法解決有趣的問(wèn)題,但它們到底多有趣,你的解法有多好, 是要由那些和你具有同樣技術(shù)水平的人或比你更厲害的人去評(píng)判的。

相應(yīng)地,當(dāng)你在玩黑客游戲時(shí),你得認(rèn)識(shí)到你的分?jǐn)?shù)主要靠其他黑客對(duì)你的技術(shù)的評(píng)價(jià)給出 (這就是為什么只有在其它黑客稱你為黑客時(shí),你才算得上是一名黑客)。 這個(gè)事實(shí)常會(huì)被黑客是一項(xiàng)孤獨(dú)的工作這一印象所減弱;也會(huì)被另一個(gè)黑客文化的禁忌所減弱 (現(xiàn)在逐漸減弱但仍強(qiáng)大):拒絕承認(rèn)自我或外部評(píng)估與一個(gè)人的動(dòng)力有關(guān)系。

特別地,黑客王國(guó)被人類學(xué)家們稱為一種奉獻(xiàn)文化。?在這里你不是憑借你對(duì)別人的統(tǒng)治來(lái)建立地位和名望,也不是靠美貌,或擁有其他人想要的東西, 而是靠你的奉獻(xiàn)?。尤其是奉獻(xiàn)你的時(shí)間,你的創(chuàng)造和你的技術(shù)成果。

要獲得其他黑客的尊敬,基本上有五種事情你可以干:

1.?寫開放源代碼軟件?
第一個(gè)(也是最集中的和傳統(tǒng)的)是寫些被其他黑客認(rèn)為有趣或有用的程序, 并把程序源代碼提供給整個(gè)黑客文化使用。

(過(guò)去我們稱之為“free software (自由軟件)”, 但這卻使很多不知 free 的精確含義的人感到困惑。 現(xiàn)在我們很多人,根據(jù)搜索引擎網(wǎng)頁(yè)內(nèi)容分析至少有2:1的比率,使用“ open-source”software(開放源代碼軟件)這個(gè)詞)。

黑客王國(guó)里最受尊敬的偶像是那些寫了大型的、好用的、具有廣泛用途的軟件, 并把它們公布出去,使得每人都在使用他軟件的人。

2.?幫助測(cè)試并調(diào)試開放源代碼軟件

黑客也尊敬那些使用、測(cè)試開放源代碼軟件的人。 在這個(gè)并非完美的世界上,我們不可避免地要花大多數(shù)的開發(fā)時(shí)間在調(diào)試階段。 這就是為什么任何有頭腦的開放源代碼的作者都會(huì)告訴你好的beta測(cè)試員 (知道如何清楚描述出錯(cuò)癥狀,很好地定位錯(cuò)誤,能忍受快速發(fā)布中的bug, 并且愿意使用一些簡(jiǎn)單的診斷工具)象紅寶石一樣珍貴。 甚至他們中的一個(gè)能判斷出哪個(gè)測(cè)試階段是延長(zhǎng)的, 哪個(gè)是令人精疲力盡的噩夢(mèng),哪個(gè)只是一個(gè)有益的小麻煩。

如果你是個(gè)新手,試著找一個(gè)你感興趣的正在開發(fā)的程序,做一個(gè)好的beta測(cè)試員。 你會(huì)自然地從幫著測(cè)試,進(jìn)步到幫著抓臭蟲,到最后幫著改程序。 你會(huì)從中學(xué)到很多,并且與未來(lái)會(huì)幫你的人結(jié)下友誼。

3.?公布有用的信息

另一個(gè)好事是收集整理有用有趣的信息做成網(wǎng)頁(yè)或文檔如FAQ列表,且讓他們?nèi)菀撰@得。

主要技術(shù)FAQ的維護(hù)者受到幾乎同其他開放源代碼的作者一樣多的尊敬。

4.?幫助維護(hù)基礎(chǔ)設(shè)施的運(yùn)轉(zhuǎn)

黑客文化(還有Internet的工程方面的發(fā)展,就此而言)是靠自愿者運(yùn)轉(zhuǎn)的。 要使Internet能正常工作,就要有大量枯燥的工作不得不去完成——管理mail list,新聞組,維護(hù)大型軟件庫(kù),開發(fā)RFC和其它技術(shù)標(biāo)準(zhǔn)等等。

做這類事情的人會(huì)得到很多尊敬,因?yàn)槊咳硕贾肋@些事情是十分花時(shí)間又不象編程那樣好玩。 做這些事情需要奉獻(xiàn)精神。

5.?為黑客文化本身服務(wù)

最后,你可以為這個(gè)文化本身做宣傳(例如,象我這樣,寫一個(gè)“如何成為黑客”的正面的教程 :-) ) (譯者:不知道Barret把它翻成中文算不算?)。 這并非一定要在你已經(jīng)在這個(gè)圈子呆了很久,因以上四點(diǎn)中的某點(diǎn)而出名,有一定聲譽(yù)后才能去做。

黑客文化沒(méi)有領(lǐng)袖。精確地說(shuō),它確實(shí)有些文化英雄、部落長(zhǎng)者、歷史學(xué)家和發(fā)言人。 若你在這圈內(nèi)呆的夠長(zhǎng),你或許成為其中之一。 記住:黑客們不相信他們的部落長(zhǎng)者的自夸的炫耀?, 因此大舉追求這種名譽(yù)是危險(xiǎn)的。與其奮力追求,不如先擺正自己的位置 等它自己到你的手中——那時(shí)則要做到謙虛和優(yōu)雅。

——————————————————————————–

黑客和書呆子(Nerd)的聯(lián)系

同流行的迷思相反,做一名黑客并不一定要你是個(gè)書呆子。 但它確實(shí)有幫助,而且許多黑客事實(shí)上是書呆子。 做一個(gè)深居簡(jiǎn)出的人有助于你集中精力進(jìn)行十分重要的事情,如思考和編程。

因此,很多黑客都愿意接受“書呆子”這個(gè)外號(hào), 更有甚者使用更尖刻的“geek(怪人)”一詞并引以為豪—— 這是一種宣布他們獨(dú)立于主流社會(huì)的聲明方式。訪問(wèn) The Geek Page 參加更多的討論。

如果你能集中足夠的精力做好黑客工作同時(shí)還能有正常的生活,這很好。 現(xiàn)在作到這一點(diǎn)比我在1970年代是新手的時(shí)候要容易的多; 如今主流文化對(duì)技術(shù)怪人要友善的多。 甚至有越來(lái)越多的人意識(shí)到黑客通常是很好的戀人和配偶的材料。

如果你因?yàn)樯钌喜蝗缫舛陨献龊诳?#xff0c;那也沒(méi)什么——至少你不會(huì)分神了。 或許以后你會(huì)找到自己的另一半。

——————————————————————————–

風(fēng)格的意義

重申一下,作為一名黑客,你必須進(jìn)入黑客精神之中。 當(dāng)你不在計(jì)算機(jī)邊上時(shí),你仍然有很多對(duì)黑客工作有幫助的事情可做。 它們并不能替代真正的編程(沒(méi)有什么能),但很多黑客都那么做, 并感到它們與黑客的本質(zhì)存在某些基本的連系。

學(xué)會(huì)流暢地用母語(yǔ)寫作。盡管程序員不能寫好文章的錯(cuò)誤看法相當(dāng)普遍, 但是有令人驚訝數(shù)目的黑客(包括所有我知道的最棒的)都是不錯(cuò)的作家。

閱讀科幻小說(shuō)。參加科幻小說(shuō)討論會(huì)。(一個(gè)碰到黑客和未來(lái)會(huì)成為黑客的人的好方法)

學(xué)禪,并且/或者練功習(xí)武。(精神修煉看來(lái)是驚人相似。)

練就能分析音樂(lè)的聽覺,學(xué)會(huì)鑒賞特別的音樂(lè)。學(xué)會(huì)玩某種樂(lè)器,或唱歌。

提高對(duì)雙關(guān)語(yǔ)、文字游戲的鑒賞能力。

這些事情,你已經(jīng)做的越多,你就越是天生做黑客的材料。 至于為什么偏偏是這些事情,原因并不完全清楚, 但它們都涉及用到左-右腦能力的綜合,這似乎是關(guān)鍵所在 (黑客們既需要清晰的邏輯思維,有時(shí)又需要偏離邏輯跳出問(wèn)題的表象)。

最后,還有一些不要去做的事情。

不要使用愚蠢的,嘩眾取寵的ID或昵稱。

不要卷入U(xiǎn)senet(或其他地方的論壇)的罵戰(zhàn)。

不要自稱為“cyberpunk(網(wǎng)絡(luò)叛客)”,也不要浪費(fèi)時(shí)間和那些人打交道。

不要讓你寄出的Email或張貼的帖子充滿錯(cuò)誤的拼寫和亂七八糟的語(yǔ)法。

做以上的事情,只會(huì)招來(lái)嘲笑。黑客們個(gè)個(gè)記憶超群—— 你將需要數(shù)年的時(shí)間讓他們忘記你犯下的錯(cuò)誤?。

網(wǎng)名的問(wèn)題值得深思。將身份隱藏在虛假的名字后是駭客、解密者、d00dz 及其他低等生物幼稚愚蠢的行為特點(diǎn)。黑客不會(huì)做這些事; 他們對(duì)他們所作的感到驕傲,而且樂(lè)于人們將作品與他們的 真名相聯(lián)系。 因此, 若你現(xiàn)在用假名,放棄它。在黑客文化里它會(huì)令你你失敗的。

——————————————————————————–

其它資源

Peter Seebach 維護(hù)著一個(gè)非常好的 Hacker FAQ, 專給那些不懂如何與黑客打交道的經(jīng)理看的。如果Peter的站點(diǎn)不能訪問(wèn),下面這個(gè) Excite搜索應(yīng)該有一份拷貝。

我也著有黑客文化簡(jiǎn)史。

我寫了一份 大教堂與市集,對(duì)于Linux及開放源代碼文化現(xiàn)象有詳細(xì)的解釋。 我也在這個(gè)話題上進(jìn)一步闡述導(dǎo)致的結(jié)局—— 開拓智域。

Rick Moen寫了一份很好的關(guān)于 如何運(yùn)轉(zhuǎn)一個(gè)Linux用戶組的文檔。

我和Rick Moen合作完成了另一份關(guān)于 提問(wèn)的智慧的文章,可以讓你事半功倍的獲得幫助。

如果你想知道PC、UNIX及Internet基本概念和工作原理,參考 The Unix and Internet Fundamentals HOWTO。

當(dāng)你釋放出一個(gè)軟件或?yàn)槠浯蜓a(bǔ)丁,試著按 軟件發(fā)行慣例 HOWTO去做。 (以上的提到的文章的中文版大多都可以在www.aka.org.cn和www.linuxforum.net找到。)

——————————————————————————–

FAQ(常問(wèn)問(wèn)題解答)
問(wèn):你能教我做黑客嗎?
問(wèn):那么,我要如何開始?
問(wèn):我得什么時(shí)候開始學(xué)?現(xiàn)在會(huì)不會(huì)太遲了?
問(wèn):要學(xué)多久才能學(xué)會(huì)黑客道?
問(wèn):Visual Basic及Delphi是好的入門語(yǔ)言嗎?
問(wèn):你能幫我“黑”掉一個(gè)站點(diǎn)嗎?或者教我怎么黑它?
問(wèn):我怎么樣才能得到別人帳號(hào)的密碼?
問(wèn):我如何入侵/查看/監(jiān)視別人的Email?
問(wèn):我如何才能在IRC聊天室里偷到頻道op的特權(quán)?
問(wèn):我被黑了。你能幫我避免以后再被攻擊嗎?
問(wèn):我的Windows軟件出現(xiàn)問(wèn)題了。你能幫我嗎?
問(wèn):我在哪里能找到可以與之交流的真正的黑客?
問(wèn):你能推薦一些有關(guān)黑客的好書嗎?
問(wèn):成為一名黑客我需要擅長(zhǎng)數(shù)學(xué)嗎?
問(wèn):我該從那種語(yǔ)言學(xué)起?
問(wèn):我需要什么樣的機(jī)器配置?
問(wèn):我得因此憎恨和反對(duì)Microsoft嗎?
問(wèn):但開放源代碼軟件不會(huì)使程序員丟飯碗嗎?
問(wèn):我要如何開始?哪里有免費(fèi)的Unix?

問(wèn):你能教我做黑客嗎?

答:自從第一次發(fā)布這份文檔,我每周都會(huì)收到一些請(qǐng)求, (頻繁的話一天幾封)要我“教會(huì)他們做黑客”。遺憾的是,我 沒(méi)有時(shí)間和精力來(lái)做這個(gè);我自己的黑客項(xiàng)目,及我作為一個(gè)開放源代碼倡導(dǎo)者 的四處奔波已經(jīng)占用了我110%的時(shí)間。

即便我想教你,黑客也依然基本上是一項(xiàng)自行修煉的的態(tài)度和技術(shù)。 當(dāng)真正的黑客想幫助你的時(shí)候,如果你乞求他們一湯匙一湯匙“喂”你的話, 你會(huì)發(fā)現(xiàn)他們不會(huì)尊重你。

先去學(xué)一些東西。顯示你在嘗試,你能靠自己去學(xué)習(xí)。然后再去向你遇到的黑客請(qǐng)教特殊的問(wèn)題。

如果你發(fā)E-mail給一位黑客尋求他的幫助,這是兩件首要記住的事情。 第一,寫出來(lái)的文字顯得懶且粗心的人通常非常懶于思考且非常馬大哈,不能成為好黑客—— 因此注意拼寫正確,使用正確的語(yǔ)法及發(fā)音,否則你可能會(huì)無(wú)人理睬。 第二,不要試圖要求回復(fù)到一個(gè)ISP帳號(hào),而那個(gè)帳號(hào)與你 的發(fā)信地址不同。這樣做的人一般是使用盜用帳號(hào),不會(huì)有人有興趣為虎作倀幫助竊賊的。

問(wèn):那么,我要如何開始?

答:對(duì)你而言最佳的入門方式也許是去參加LUG(Linux用戶組)的聚會(huì)。 你可以找到在 LDP的綜合Linux信息頁(yè)面上找到類似的組織;也許有一個(gè)在你家附近的, 而且非常有可能與一所大學(xué)或?qū)W校掛鉤。如果你提出要求,LUG成員興許會(huì)給你一套Linux, 當(dāng)然此后會(huì)幫你安裝并帶你入門。

問(wèn):我得什么時(shí)候開始學(xué)?現(xiàn)在會(huì)不會(huì)太遲了?

答:你有動(dòng)力學(xué)習(xí)的時(shí)候就是好時(shí)候。大多數(shù)人看來(lái)都是在15-20歲之間開始感興趣的,但 據(jù)我所知,在此年齡段之外的例外也是有的。

問(wèn):要學(xué)多久才能學(xué)會(huì)黑客道?

答:這取決于你的聰明程度和努力程度。大多數(shù)人只要他們專注, 就能在18個(gè)月到2年之間學(xué)會(huì)一套令人尊敬的技能。但是,不要以為就此結(jié)束了; 如果你是一個(gè)真正的黑客,你要用你的余生來(lái)學(xué)習(xí)和完善你的技術(shù)。

問(wèn):Visual Basic及Delphi是好的入門語(yǔ)言嗎?

答:不,因?yàn)樗麄儾皇强梢浦驳摹K麄儾皇悄切┱Z(yǔ)言的開放源代碼實(shí)現(xiàn), 所以你被限制在廠商選擇支持的那些平臺(tái)里。接受這樣一種壟斷局面不是黑客的態(tài)度。

Visual Basic特別糟糕。它是Microsoft的私有語(yǔ)言這個(gè)事實(shí)就足夠讓它臉面全無(wú), 不像其他的Basic,它是一種設(shè)計(jì)糟糕的語(yǔ)言會(huì)教給你壞的編程習(xí)慣。

其中一個(gè)壞習(xí)慣是會(huì)依賴于單一廠商的函數(shù)庫(kù)、控件及開發(fā)工具。 一般而言,任何不能夠支持至少Linux或者一種BSD,或其他第三方操作系統(tǒng)的語(yǔ)言,都是 一種不適合應(yīng)付黑客工作的語(yǔ)言。

問(wèn):你能幫我“黑”掉一個(gè)站點(diǎn)嗎?或者教我怎么黑它?

答:No。任何讀完這份FAQ后還問(wèn)這個(gè)問(wèn)題的人,都是無(wú)可救藥的蠢材, 即使有時(shí)間指教我也不會(huì)理睬。任何發(fā)給我的此類E-mail都會(huì)被忽略或被痛罵一頓。

問(wèn):我怎么樣才能得到別人帳號(hào)的密碼?

答:這是駭客行為。滾得遠(yuǎn)遠(yuǎn)的,白癡。

問(wèn):我如何入侵/查看/監(jiān)視別人的Email?

答:這是駭客行為。在我面前消失,混蛋。

問(wèn):我如何才能在IRC聊天室里偷到頻道op的特權(quán)?

答:這是駭客行為。去S吧,冥頑不靈的家伙。

問(wèn):我被黑了。你能幫我避免以后再被攻擊嗎?

答:不行。目前為止,每次問(wèn)我這個(gè)問(wèn)題的,都是一些運(yùn)行Microsoft Windows的菜鳥。 不可能有效的保護(hù)Windows系統(tǒng)免受駭客攻擊;太多缺陷的代碼和架構(gòu)使保護(hù)Windows的努力有如 隔靴搔癢。唯一可靠的預(yù)防來(lái)自轉(zhuǎn)移到Linux或其他設(shè)計(jì)得至少足夠安全的系統(tǒng)。

問(wèn):我的Windows軟件出現(xiàn)問(wèn)題了。你能幫我嗎?

答:當(dāng)然。進(jìn)入DOS方式,然后鍵入“format c:”。你遇到的任何問(wèn)題將會(huì)在幾分鐘之內(nèi)消失。

問(wèn):我在哪里能找到可以與之交流的真正的黑客?

答:最佳辦法是在你附近找一個(gè)Unix或Linux的用戶組,參加他們的聚會(huì)。 (你可以在Metalab的LDP站點(diǎn) 找到一些指向用戶組的鏈接。)

我過(guò)去曾說(shuō)過(guò)不能在IRC上找到真正的黑客,但我發(fā)覺現(xiàn)在情況有所改變。 顯然一些真正的黑客的社區(qū)像GIMP及Perl,也有IRC頻道了。)

問(wèn):你能推薦一些有關(guān)黑客的好書嗎?

答:我維護(hù)著一份Linux Reading List HOWTO,也許你會(huì)覺得有用。 Loginataka也很有意思。

關(guān)于Python的介紹,請(qǐng)?jiān)L問(wèn)在Python站點(diǎn)上的 入門資料。

問(wèn):成為一名黑客我需要擅長(zhǎng)數(shù)學(xué)嗎?

答:不用。黑客道很少使用常規(guī)的數(shù)學(xué)或算術(shù),不過(guò)你絕對(duì)需要能邏輯性地思考和進(jìn)行精密的推理。

尤其是你不會(huì)用到微積分或電路分析(我們把這些留給電子工程師們 :-))。 一些有限數(shù)學(xué)(包括布爾代數(shù),集合論,組合數(shù)學(xué),圖論)的背景知識(shí)會(huì)有幫助。

問(wèn):我該從那種語(yǔ)言學(xué)起?

答:HTML——如果你還不懂的話。市面上有一大堆的封面精美,宣傳得天花亂墜的 糟糕的 HTML書籍,不幸的是很少有好的。我最喜歡的是 HTML: The Definitive Guide。

但 HTML 不完全是一種編程語(yǔ)言。當(dāng)你準(zhǔn)備開始編程時(shí),我推薦從 Python起步。 你會(huì)聽到一大群人推薦 Perl,并且 Perl 依然比 Python 流行得多,但是 難學(xué)得多且(以我之見)設(shè)計(jì)得不是很好。

C 確實(shí)重要,但它要比 Python 或 Perl 難多了。不要嘗試先學(xué) C。

Windows用戶不要滿足于 Visual Basic。 它會(huì)教給你壞習(xí)慣,而且它不可以移植,只能在Windows下運(yùn)行。避免它。

問(wèn):我需要什么樣的機(jī)器配置?

答:過(guò)去個(gè)人電腦能力相當(dāng)不夠并且內(nèi)存小,結(jié)果給黑客的學(xué)習(xí)過(guò)程設(shè)置 了人為的障礙。不過(guò)一段時(shí)間以前開始就不是這樣了;任何配置比一臺(tái) Intel 486DX50 好的 機(jī)器都有足夠的能力進(jìn)行開發(fā)工作,X,及 Internet 通訊,同時(shí)你現(xiàn)在買的最小的磁盤 都大得富足了。(依Barret之見,現(xiàn)在要至少Pentium 166MMX才夠。)

選擇用來(lái)學(xué)習(xí)的機(jī)器時(shí)重要的一點(diǎn)是注意配件是否是Linux兼容的(或BSD兼容,如果你選擇學(xué) BSD)。同剛才提到的一樣,大多數(shù)現(xiàn)在的機(jī)器都是符合的;唯一的值得注意的區(qū)域在于 modem和打印機(jī);有些具備為Windows設(shè)計(jì)的配件的機(jī)器不會(huì)在Linux下工作。

關(guān)于硬件兼容性有一個(gè)FAQ;最新版本在 這里。

問(wèn):我得因此憎恨和反對(duì)Microsoft嗎?

答:不,你不必如此。不是因?yàn)镸icrosoft不令人討厭,而是因?yàn)楹诳臀幕缭?Microsoft出現(xiàn)之前就存在了,且將在Microsoft成為歷史后依然存在。 你耗費(fèi)在憎恨Microsoft的任何力氣不如花在愛你的技術(shù)上。寫好的代碼—— 那會(huì)相當(dāng)有效地打擊Microsoft又不會(huì)讓你得到惡報(bào)應(yīng)。

問(wèn):但開放源代碼軟件不會(huì)使程序員丟飯碗嗎?

答:看起來(lái)不太可能——目前為止,開放源代碼軟件產(chǎn)業(yè)似乎創(chuàng)造了更多的就業(yè)機(jī)會(huì)而不是 減少就業(yè)機(jī)會(huì)。如果寫一個(gè)程序比起不寫來(lái)是純經(jīng)濟(jì)收益的話,那么在寫完后, 程序員應(yīng)該得到報(bào)酬不管程序是否是開放源代碼。 并且,無(wú)論寫出多么“免費(fèi)自由”的軟件,都存在更多對(duì)新的,定制的軟件的需求。 我有這方面更多的論述,放在開放源代碼 網(wǎng)站資料中。

問(wèn):我要如何開始?哪里有免費(fèi)的Unix?

答:在本份文檔的某個(gè)地方我已經(jīng)提到過(guò)何處可以得到最常用的免費(fèi)Unix。 要做一名黑客,你需要自立自強(qiáng),以及自學(xué)能力?,F(xiàn)在開始吧……




總結(jié)

以上是生活随笔為你收集整理的黑客与画家(翻译)、如何成为一名黑客的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。