這本書嘗試解釋計算機世界裡發生了什麼事,所以,它不僅僅是寫給程式設計師看的,也適合所有人。比如,第6章講如何致富,我相信這是所有讀者普遍感興趣的內容。
你可能注意到了,過去三十年中,很多賺到大錢的人都是程式設計師,比如比爾·蓋茨、史蒂夫·賈伯斯、拉裡·埃裡森。為什麼?為什麼是程式設計師,而不是土木工程師,或者攝影師,或者精算師?第6章將告訴你答案。
軟體帶來財富,僅僅代表了大趨勢的一面而已。這種大趨勢就是本書的主題。我們的時代是計算機時代。以前,人們曾經認定這個時代應該是太空時代或者原子時代。但是事實證明,它們只是公關公司發明的概念。計算機對人類生活的影響遠遠超過了太空航行或者原子技術的影響。
我們生活中的一切,都正在成為計算機。打字機被計算機取代了,電話也變成了計算機,照相機亦是如此。很快,電視機也將變成計算機。當今小轎車所具備的計算能力比1970年佔滿一間屋子的大型計算機還要強。信件、百科全書、報紙,甚至本地的小店,都正在被網際網路取代。所以,如果你想理解我們目前的世界以及它的未來動向,那麼多了解一些黑客的想法會對你有幫助。
黑客?那不是侵入他人計算機的人嗎?在外行人看來,這個詞的意思就是這樣。但是在計算機世界中,黑客指的是專家級程式設計師。因為本書的目的是解釋真實的計算機世界是怎麼一回事,所以我決定冒著被誤解的風險,按照行業內的定義使用這個詞。
本書的前幾章回答了一些大家可能都想過的問題。怎樣創業才會成功?技術是否造成了技術人員與普通人之間的隔閡?程式設計師到底在做些什麼?為什麼那些讀高中時普普通通的學生,最終卻搖身一變成為世界上最有影響力的人士?微軟公司會控制網際網路嗎?怎樣才能對付垃圾郵件?
《黑客與畫家:矽谷創業之父Paul Graham文集》後面幾章談的是大多數非計算機行業的人士沒有想過的問題——程式語言。為什麼普通人要去關心程式語言?因為如果你想了解黑客,就必須懂一點程式語言。這就好比回到1880年,如果你想理解技術發展,就必須懂一點蒸汽機。
電腦程式只是文本而已。你選擇什麼語言,決定了你能說什麼話。程式語言就是程式設計師的思維方式。
因此很自然,程式語言對程式設計師的思想有巨大的影響。你從他們寫的軟體中就可以看出來。旅遊網站Orbitz成功打入了競爭激烈的網絡訂房訂票市場。該市場原先被兩大巨頭主宰,一個是微軟公司,另一個是擁有數十年電子預定服務經驗的Sabre。Orbitz是怎麼從它們手中搶到市場的?最主要的原因就是它使用了一種更好的程式語言。
根據使用的語言不同,程式設計師往往會被分成不同的派別。人們區分程式設計師甚至不是看他們寫了什麼程序,而是看他們使用什麼語言。所以,聲稱一種語言優於另一種語言被認為是不禮貌的行為。但是,沒有一個程式語言的設計者會相信「不同的語言各有千秋」這種文縐縐的客套話。我將直言不諱地說出自己對於程式語言的看法,這也許會令很多人不快,但是如果想要理解黑客,我真的覺得沒有其他更好的方法。
有些讀者可能不理解第3章的內容。這一章與計算機有什麼關係?事實是黑客很在乎言論自由。Slashdot(它是黑客世界的《紐約時報》)有一個專欄討論這個問題。我想Slashdot的大多數讀者都認為重視言論自由是天經地義的事情。不過《飛機與飛行員》(Plane & Pilot)雜誌就肯定不會有一個這樣的欄目。
為什麼黑客那麼在乎言論自由?我認為,部分原因在於,革新對於軟體行業實在是太重要了,而革新和異端實際上是同一件事。優秀的黑客養成了一種質疑一切的習慣。這是肯定的,因為如果你不得不同一臺機器打交道,而這臺機器全部由文字組成,像機械式手錶一樣複雜,並且規模大出1000倍,那麼你也會養成這種習慣的。
此外,我還認為,行為怪異的人和憤世嫉俗的人比普通人更可能成為黑客。計算機世界就像是智力世界的大西部,在那裡沒有你不敢想的事情,只要你願意承擔冒險後果。
如果我成功實現了自己對這本書的設想,那麼它也將是一片智力的大西部。我不希望你帶著某種壓迫感來閱讀此書,心裡想著:「沒辦法,這些書呆子看上去正在接管世界。我最好能懂一點他們正在幹的事情,這樣就不會被他們整出來的下一個東西唬到了。」如果你喜歡思考,閱讀此書應該會帶給你很多樂趣。雖然黑客從外表看上去一般都是呆呆的,但是他們的大腦內部卻是一個有趣得讓你吃驚的地方。
寫於麻薩諸塞州坎布裡奇
2004年4月
阮一峰:黑客的含義
文/
阮一峰(本書譯者)
一、
您現在拿在手裡的,是一本非常重要、也非常獨特的書籍。
它的作者是美國網際網路界舉足輕重、有"創業教父"之稱的哈佛大學計算機博士Paul Graham。 本書是他的文集。
這本書的內容並不深奧,不僅僅是寫給程式設計師和創業者的,更是寫給普通讀者的。Paul Graham最大的目的,就是通過這本書,讓普通讀者理解我們所處的這個計算機時代。
1968年--1972年期間,美國出版過一本叫做《地球商品目錄》(Whole Earth Catalog)的雜誌,內容從植物種子到電子儀器,無所不包,出版目的據說是要幫助讀者"理解整個系統"(Understanding Whole Systems)。多年後,蘋果公司的總裁賈伯斯盛讚它"有點像印刷版的Google"。從某種意義上說,《黑客與畫家》也是如此,這本書試圖從許許多多不同的方面,解釋這個時代的內在脈絡,揭示它的發展軌跡,幫助你看清我們現在的位置和將來的方向。
二、
電子技術的發展,使得計算機日益成為人類社會必不可少的一部分。
每個人的日常生活,很大一部分都在與計算機打交道。家用電錶是智能的,通信網絡是程控的,信用卡是聯網的,就連點菜都會用到電子菜單。越來越多的跡象表明,未來的人類生活不僅是人與人的互動,更多的將是人與計算機的互動。
想要把握這個時代,就必須理解計算機。理解計算機的關鍵,則是要理解計算機背後的人。表面上,這是一個機器的時代。但是實際上,機器的設計者決定了我們的時代。程式設計師的審美,決定了你看到的軟體界面;程式設計師的愛好,決定了你有什麼樣的軟體可以使用。
我們的時代是程式設計師主導的時代,而偉大的程式設計師,就是黑客。
《黑客與畫家》這本書,就是幫助你了解黑客、從而理解這個時代的一把鑰匙。
三、
在媒體和普通人的眼裡,"黑客"就是入侵計算機的人,就是"計算機犯罪"的同義詞。但是,這並不是它的真正含義(至少不是原意),更不是本書所使用的含義。
要想讀懂這本書,首先就必須正確理解什麼是"黑客"。
為了把這個問題說清楚,有必要從源頭上講起。1946年,第一臺電子計算機ENIAC在美國誕生,從此世界上一些最聰明、最有創造力的人,開始進入這個行業,在他們身上,逐漸地形成了一種獨特的技術文化。在這種文化的發展過程中,湧現了很多"行話"(jargon)。60年代初,麻省理工學院有一個學生團體,叫做"鐵路模型技術俱樂部"(Tech Model Railroad Club,簡稱TMRC),他們把難題的解決方法稱為hack。
在這裡,hack作為名詞,有兩個意思,既可以指很巧妙或很便捷的解決方法,也可以指比較笨拙、不那麼優雅的解決方法。兩者都能稱為hack,不同的是,前者是漂亮的解決方法(cool hack或neat hack),後者是醜陋的解決方法(ugly hack或quick hack)。hack的字典解釋是砍(木頭),在這些學生看來,解決一個計算機難題,就好像在砍下一棵大樹。那麼相應地,完成這種hack的過程就被稱為動詞hacking,而從事hacking的人就是hacker,也就是黑客。
從這個意思出發,hack還有一個引申義,指對某個程序或設備進行修改,使其完成原來不可用的功能(或者禁止外部使用者接觸到的功能)。在這種意義上,hacking可以與盜竊信息、信用卡欺詐或其他計算機犯罪聯繫一起,這也是後來"黑客"(hacker)被當計算機入侵者的稱呼的原因。
但是,在六十年代這個詞被發明的時候,"黑客"完全是正面意義上的稱呼。TMRC使用這個詞,帶有敬意,因為在他們看來,如果要完成一個hack,就必然包含著高度的革新、獨樹一幟的風格、精湛的技藝。最能幹的人會自豪地稱自己為黑客。
這時,"黑客"這個詞不僅是第一流能力的象徵,還包含著追求解決問題過程中產生的精神愉悅或享受。也就是說,從一開始,黑客就是有精神追求的。自由軟體基金會創始人Richard Stallman說:
"出於興趣,解決某個難題,不管它有沒有用,這就是黑客。" (Playfully doing something difficult, whether useful or not, that is hacking.)
四、
根據Richard Stallman的說法,黑客行為必須包含三個特點:好玩(playful)、高智商(cleverness)、探索精神(exploration)。只有行為同時滿足這三個標準,才能被稱為"黑客"。另一方面,它們也構成了黑客的價值觀,黑客追求的就是這三種價值,而不是實用性或金錢。
1984年,《新聞周刊》的記者Steven Levy出版了歷史上第一本介紹黑客的著作《黑客:計算機革命的英雄》(Hackers: Heroes of the Computer Revolution)。
在該書中,他進一步將黑客的價值觀,總結為六條"黑客倫理"(hacker ethic),直到今天都被視為這方面的最佳論述:
1.使用計算機,不應受到任何限制。任何事情都應該親手嘗試。(Access to computers--and anything that might teach you something about the way the world works--should be unlimited and total. Always yield to the Hands-On Imperative!)
2.信息應該全部免費。(All information should be free.)
3.不信任權威,提倡去中心化。(Mistrust Authority--Promote Decentralization.)
4.判斷一個人應該看他的技術能力,而不是看其他標準。(Hackers should be judged by their hacking, not bogus criteria such as degrees, age, race, or position.)
5.你可以用計算機創造美和藝術。(You can create art and beauty on a computer.)
6.計算機使生活更美好。(Computers can change your life for the better.)
根據這六條"黑客倫理",黑客價值觀的核心原則可以概況成這樣幾點:分享(Sharing)、開放(Openness)、民主(Decentralization)、計算機的自由使用(Free access to computers)、進步(World Improvement)。
所以,"黑客"這個詞的原始含義,就是指那些信奉"黑客倫理"、而且能力高超的程式設計師。歷史上一些最優秀的程式設計師,都是"黑客"。除了上文提到的Richard Stallman,還包括Unix作業系統創始人Dennis Ritchie和Ken Thompson、經典巨著《電腦程式設計的藝術》的作者史丹福大學計算機教授Donald Knuth、Linux作業系統創始人Linus Torvalds、"開源運動"創始人Eric S. Raymond、微軟公司創始人Bill Gates等等。正是黑客把計算機工業推向了更高的高度。
五、
"黑客倫理"的一個必然推論,就是黑客不服從管教,具有叛逆精神。
黑客通常對管理者強加的、限制他們行為的愚蠢規定不屑一顧,會找出規避的方法。一部分原因是為了自由使用計算機,另一部分原因是為了顯現自己的聰明。比如,計算機設備的各種安全措施,就是最常被黑客破解的東西。Steven Levy對這一點,有過一段生動的描述:
"對於黑客來說,關著的門就是一種挑釁,而鎖著的門則是一種侮辱。......黑客相信,只要有助於改進現狀、探索未知,人們就應該被允許自由地使用各種工具和信息。當一個黑客需要一樣東西,來幫助自己創造、探索、或者改正某種設備時,他不會自找麻煩,接受那些財產專有權的荒謬概念。"
這就是黑客有時會入侵計算機系統的原因,他們的主要目的並不是侵犯別人的利益,這與那些計算機罪犯是不同的。
但是,上個世紀80年代初,事情發生了變化。
1983年,一幫密爾沃基州的青少年黑客入侵了美國和加拿大的一些計算機系統,這件事被廣泛報導,同年9月5日的《新聞周刊》(Newsweek)封面報導的標題就是"小心:黑客在行動"(Beware: Hackers at play),這是歷史上主流媒體第一次使用"黑客"這個詞。在報導的時候,媒體只注意和強調黑客行為一個很窄的方面:入侵系統。(可能因為這種行為容易引起公眾的注意,提升報導的關注度。)他們把黑客簡單定義為:入侵系統、破壞安全設施的人。從此,大多數人對於黑客有了錯誤的看法。同時,那些入侵計算機的程式設計師也自稱"黑客",使得這個問題進一步變得複雜。
雜誌、電視劇、電影、小說都對黑客的這種形象大肆渲染。黑客成了反社會的技術高手的代名詞,仿佛只要他坐在鍵盤前,就有一種從事犯罪活動的魔力,可以操縱任何與網絡相連的機器,從核彈到車庫大門,都在黑客敲打鍵盤的操作之中被控制。根據這種觀點,黑客在最好的情況下是一個沒有認識到自己能力的清白的人,在最壞的情況下則是一個恐怖分子。在過去幾年中,隨著計算機病毒的泛濫,黑客在大眾心目中已經成了一種有害的人群。
那些傳統意義上的黑客,不認同這樣使用"黑客"這個詞。他們認為,歷史上確實有一些正直的黑客,為了親自動手了解系統,做過違反法規的入侵舉動。但是,那些人並沒有惡意,而且從一開始,惡作劇就是黑客文化的一部分,僅僅由此推斷入侵和破壞系統就是黑客文化的實質,完全是錯誤的觀點。真正的黑客,致力於改變世界,讓世界運轉得美好。媒體對黑客的定義,未免過於片面。
為了澄清"黑客"這個概念,他們提出只有傳統意義上的黑客,才能被稱為hacker,而那些惡意入侵計算機系統的人,應該被稱為cracker(入侵者)。這個觀點已經在程式設計師社區中,得到普通認同。
《黑客與畫家》正是在這個意義上,使用"黑客"這個詞。在本書中,"黑客"就是指最優秀的程式設計師,而不是入侵計算機系統的人。
六、
為了幫助讀者理解黑客,全書十五章可以大致分成三個部分。
第一部分:從第一章到第四章,解釋了黑客是如何成長的,以及他們看待世界的一些觀點。
第二部分:從第五章到第九章,解釋了黑客怎樣做出自己的成果,這些成果又是怎樣對全世界產生了影響。
第三部分:從第十章到第十五章,解釋了黑客的工具(程式語言)和工作方法,這是黑客文化的基礎和核心。
Paul Graham想讓公眾了解,黑客並不神秘,更不是技術怪人。《黑客與畫家》這個書名,就是在提示應該把黑客與畫家當作同一種人看待。和畫家一樣,黑客只是懷有一門特殊手藝、有創造天賦的普通人。這個書名還有另一層含義,提出編程是一種藝術創作,黑客就是藝術家,開發軟體與畫家作畫、雕塑家雕刻、建築師設計房屋並沒有本質不同。
總之,這是一本幫助你理解這個時代的書。Paul Graham想教給你的,其實是新思想。讀完以後,你看待世界的眼光,很可能會完全不同。如果你想在21世紀立足,理解這一次新的技術革命,做一個掌握自己命運的成功者,我建議你讀這本書。
《黑客與畫家》是一本為黑客正名的技術散文集。一提到「熊貓燒香」、網路遊戲盜號木馬以及某某公司網站系統被人入侵的消息,人們總會聯想到是「黑客」幹的。實際上,黑客的本意並非如此。在計算機世界中,「黑客」(hacker)指專家級程式設計師,「黑客」象徵著第一流的能力,以及求解問題過程中產生的精神愉悅或享受。他們崇尚分享、開放、民主、計算機的自由使用和進步。而那些惡意入侵計算機系統的人更應該被稱為cracker(駭客)。
1984年,《新聞周刊》記者史蒂文·列維(Steve Levy)出版了歷史上第一本介紹黑客的著作——《黑客:計算機革命的英雄》(Hackers: Heroes of the Computer Revolution),在該書中,他將黑客的價值觀總結為六條「黑客倫理」(hacker ethic):
1)使用計算機以及所有有助於了解這個世界本質的事物都不應受到任何限制。任何事情都應該親手嘗試。
2)信息應該全部免費。
3)不信任權威,提倡去中心化。
4)判斷一名黑客的水平應該看他的技術能力,而不是看他的學歷、年齡或地位等其他標準。
5)你可以用計算機創造美和藝術。
6)計算機使生活更美好。
因為作者初衷並非寫給純技術人員閱讀,所以書中談論了包括如何學習、編程與藝術的關係、言論自由、創造財富、創業、品味和技術等眾多話題,他希望除了幫助對編程有興趣的人成為黑客以外,還能引起更多非技術讀者的思考。
保羅·格雷厄姆在哈佛大學一拿到計算機科學博士,就到羅德島設計學院和佛羅倫斯學習繪畫,以期有朝一日實現自己的畫家夢,中學寫小說以及大學研修哲學的經歷,使得他對編程和創業有著與其他黑客不一樣的見解。在他看來,僅僅精通程式語言和會開發軟體並不能作一名合格的黑客,真正的黑客必須重視言論自由,擁有設計師的品味,通過創造而非掠奪來積累財富,坦然接受自己某些諸如可能因不善交際而不受歡迎的特點。
在羅德島設計學院和佛羅倫斯美術學院學習繪畫的保羅·格雷厄姆(Paul Graham)或許從來沒有想過,有一天他會因畫畫無法維生而只好去作程式設計師。因為他成功的創業經歷和對創業的思考,以及在他隨後開辦的創業訓練營培育出眾多成功創業公司而使他逐漸成為一位矽谷的創業教父。他將黑客比作「手工藝人」,讓人們對黑客是否能稱為偉大藝術家一類的職業有了更多的期望。
為什麼創業公司比大公司更有優勢
到目前為止,從 Y Combinator 「畢業」的創業公司已有200多家,已經失敗的公司不到20%,而網際網路創業的平均失敗率是90%。《福布斯》雜誌據此將保羅·格雷厄姆視為「撼動矽谷的人」。為什麼格雷厄姆的 Y Combinator 能如此高效地孵化出成功的創業公司?
他給創業公司的內部運作和管理提了很多建議。比如,大公司內部最好的內部網(intranet)其實就是網際網路(internet)。想一想吧,國內很多企業開發自己的內部郵箱系統,不僅速度慢,容量小,體驗差,還要花不少錢和人力去開發和維護,而Gmail可以直接拿過來用。什麼事情可以外包,什麼事情不能外包?格雷厄姆提供的一個可能的答案是:公司內部所有不直接感受競爭壓力的部門都應該外包出去,讓它們暴露在競爭壓力之下。
大的軟體公司可以僱到能幹的人,讓他們去幹輕鬆的事情,也可以僱到不能幹的人,讓他們去幹艱苦的事情,但是無法僱到非常能幹的人,讓他們去幹非常艱苦的事情。由於大公司會使得每個員工的貢獻平均化,導致員工即使再努力工作也很難準確估量自己的工作成績,這使得優秀員工更容易懈怠,從而拖慢整個公司的效率。而這是創業公司的機會。
在面對大公司的正面競爭和挑戰的時候,創業公司應該如何制勝?格雷厄姆提出了「更上一層樓」法則:
假定你是一個身手敏捷的小男孩,身後有一條壯碩的大狗正在追你,你跑到樓梯口,這時應該上樓還是下樓?應該上樓。如果下樓的話,大狗可能跑得跟你一樣快。上樓的話,大狗的龐大身軀就將成為劣勢。不錯,跑上樓你會比較吃力,但是大狗會感到更加吃力。
在實際操作中,這就意味著我們故意選擇那些很困難的技術問題。假定軟體有兩個候選的新功能,它們創造的商業價值完全相同,那麼我們總是選擇比較困難的那個功能。不是因為這個功能能帶來更多的收入,而是因為它比較難。我們很樂於迫使那些又大又慢的競爭對手跟著我們一起走進沼澤地。創業公司就像遊擊隊一樣,喜歡選擇不易生存的深山老林作為根據地,政府的正規軍無法追到那種地方。
黑客:數字時代的手工藝人
程式設計師因為常常埋頭於編程,而沒有更多的時間精力去與學習如何與別人相處。這常常導致他們看起來有點「呆」——就像書呆子經常只和書打交道一樣,程式設計師大部分時間只對著計算機屏幕。——這往往導致他們在學校的時候不受同齡人歡迎。在保羅·格雷厄姆看來,書呆子們並非不想讓自己不受歡迎,他們只是更願意讓自己聰明。在他們看來,聰明遠遠比受歡迎更重要。
在一本談論黑客的書裡,格雷厄姆花了大篇幅談論公民自由的重要性。為什麼公民自由很重要?嚴謹的格雷厄姆會用數據圖表式的語言來描述:「如果將人均國民生產總值與公民自由的關係畫成圖,你會發現它們是很清楚的正相關關係。」或者,他也會引經據典來闡述他的觀點:「如果讀美國開國元勳的自述,你會發現他們聽起來很像黑客。『反抗政府的精神』,傑弗遜寫道,『在某些場合是如此珍貴,我希望它永遠保持活躍。』」
編程像繪畫。幾乎所有的美術老師都會告訴你,畫畫的時候應該快速地用幾條線畫出一個大致準確的輪廓,然後再逐步地加工草稿。在大多數藝術領域,原型使用的材料與成品的材料一般來說是不一樣的。印刷活字先畫在紙上,然後才做成鉛字。雕塑先用石蠟創作,然後採用青銅澆鑄。地攤團先用墨水畫成紙型,然後才織成地毯。建築物先做出木模型,然後才做成石頭建築。編程也一樣,應該儘快寫出能運行的代碼,發布到網上。編程像文學,E.B.懷特說:好的文字來自不停地修改。編程也類似,軟體發布到網上後,需要根據用戶反饋逐步優化。但開發軟體的時候,必須恪守一條基本規則:任何時候,代碼都必須能夠運行。
黑客要有品味。如何做出優秀的產品?發現醜陋的東西要比你想像出一個優美的東西更容易。大多數做出優美成果的人好像只是為了修正他們嚴重醜陋的東西。「這樣解決太糟糕了!一定有更好的選擇。」不要忽視這種聲音,要培育它們。優秀作品的秘訣就是:非常嚴格的品味,再加上實現這種品味的能力。此外,士氣也是產品設計的一個關鍵因素。如果你覺得開發某樣東西很乏味,那麼你開發出來的東西就會真的很乏味。這也可以解釋為什麼程式設計師和設計師很難為低端用戶設計和開發出優秀的產品。
當今時代,其他行業的人,都必須依附於流水線的工業化生產才能謀生,除了藝術家,幾乎只有程式設計師可以靠個人手藝謀生。程式設計師就是數字時代的手工藝人。如果編程與繪畫和寫作是同一類工作,黑客是否有機會像偉大藝術家一樣備受尊崇、流芳百世?「很遺憾,這個問題很難回答。」格雷厄姆說。
17世紀以前,大多數富人積累財富的方式主要是通過偷竊(戰爭,徵稅,貪汙),工業革命以後,技術的發展使得通過創造積累財富的速度第一次超過通過偷竊積累財富的速度。17世紀的英國,當官是最能發財的職業;到了19世紀,大多數富人已經變成了實業家,而政府逐漸被將良心和名譽看得比金錢更重要的人所主導。
「在達·文西的年代,繪畫並不是一件很酷的事情,達·文西用自己的工作推動繪畫成為一種偉大的表達方式。同樣,編程到底能夠有多酷,取決於我們能夠用這種新媒介做出怎樣的工作。」我們不知道如今的黑客是否會流芳百世,但我們可以看到,如同藝術家一樣,這些數字時代的手工藝人正在創造世界。
(發於《商業價值》)