第3章 太空大戰

1961年夏天,阿倫·考托克和其他tmrc駭客瞭解到,一家新公司將在不久之後完全免費地為mit提供一臺機器,它比tx-0的互動性提高了好幾個層次,它代表著計算領域的下一個階段。這臺機器甚至可能比tx-0更適合駭客使用。

這就是pdp-1。它將永遠地改變計算領域。它能進一步拉近駭客依然朦朧的夢想與現實之間的距離。

阿倫·考托克是使用tx-0的真正奇才,享有盛名,因此傑克·丹尼斯僱傭他和桑德斯、薩姆森、華格納以及其他幾個人,成立了tx-0的系統程式設計團隊。他們可以獲得每小時1.60美元的優厚報酬。對於其中幾個駭客來說,這份工作成為了他們不去上課的另一個藉口。一些駭客(比如薩姆森)可能永遠都不會畢業,並且他們太忙於駭客事業而不會真正對這種損失感到遺憾。考托克則不然,他不但能夠完成自己的課程,還能讓自己成為「權威」駭客。在tx-0實驗室和tmrc,他正在確立自己的傳奇地位。那年剛來到mit的一個駭客還記得考托克給新加入者演示tx-0如何工作時的情景:「我感覺他有點像甲亢患者。」同樣希望成為權威駭客的比爾·高斯珀回憶道:「那是因為他說話的語速非常慢,而且胖乎乎的,眼睛還半睜半閉。但這完全是錯誤的印象。(在tx-0實驗室)考托克在人們心目中有著無限的權威。他編寫出了國際象棋程式,他懂硬體。」(最後一點絕對不是無足輕重的恭維——「懂硬體」就像是理解了物理性質的精髓一樣。)

在pdp-1訊息不脛而走的那個夏天,考托克正在為美國西電公司工作,這幾乎是一種理想的職業,因為在所有可能的系統中,人們最讚不絕口的就是電話系統。tmrc經常會去參觀電話公司的交換臺,就像對繪畫感興趣的人會去博物館參觀一樣。考托克發現了一個有趣的事實,在經歷了數十年的發展而規模龐大的電話公司中,只有少數幾個工程師對系統內部的相互關係有著深刻的瞭解。儘管如此,工程師可以隨時提供系統中具體功能的細節,比如縱橫制交換和步進式繼電器。考托克和其他駭客會不斷地向這些專家詢問資訊,而這些得到誇讚的工程師也會毫不遲疑地回答,他們可能並不知道這些彬彬有禮的大學生們會真的運用這些資訊。

考托克十分積極地參與這些參觀活動,閱讀他能找到的所有技術材料,他還在mit複雜的電話系統(當時他只瞭解這個系統的一點皮毛)上試著撥打不同的電話號碼,看看會產生什麼結果。這些都是基本的研究探索,就像研究tx-0的數字秘密一樣。在1960~1961年之前的那個冬天,tmrc的駭客們忙著開發一個精密的「電話網路指紋系統」,記錄通過mit的專用線路系統可以撥到的所有地點。儘管沒有連線到普通的電話線上,但這個系統可以接通林肯實驗室,從那裡可以接通遍及美國的國防專案的承包商。這是一個關於對映和測試的問題。你可以先拿到一個接入程式碼,給它新增不同的數字,看看誰會接電話,詢問接電話的人在什麼地點,然後繼續在這個號碼中新增數字,讓它帶你到達下一個地方。有時,如果電話公司對你不加懷疑,你甚至可以接通郊區的外線。就像考托克後來承認的那樣:「如果電話系統中有一些設計缺陷,比如人們可以接通原本不應該接通的電話,那麼我是無法剋制自己不去利用這些漏洞的,但這是他們的問題,不是我的。」

儘管如此,他們的動機仍是研究,而不是欺詐,而且他們認為從這些奇怪的電話連線中非法獲益是錯誤的行為。有時,局外人是無法理解這些的。比如,薩姆森在伯頓·霍爾宿舍的室友不是駭客,他們認為利用系統缺陷沒什麼不正當的,不用附加系統探索這種神聖正當的理由。很多天來,他們一直在給薩姆森施加壓力,最終他妥協了,給了他們一個20位的號碼並告訴他們這個號碼可以接通外國的電話。「你可以用公寓電話撥打這個號碼,」他這麼告訴他們,「但是我不希望我在現場。」在他們迫不及待地撥打電話時,薩姆森來到了樓下的電話旁,他剛到這裡,電話鈴響了。「這裡是五角大樓,」他拿起電話用最官方的嗓音低沉有力地說道,「請問您的安全級別是什麼?」薩姆森聽到樓上的電話那頭恐懼的喘氣聲,然後傳來了結束通話電話的聲音。

很明顯,網路指紋識別只是駭客們的追求,他們渴望瞭解系統,不害怕陷入任何麻煩。

儘管電話公司的奧秘令考托克著迷,但是pdp-1的前景卻令他更加興奮。也許他感覺到了,在這之後,所有的事情,甚至電話入侵都會變得不同了。設計並銷售這個新型機器的那些人絕不會是普通計算機公司中毫無新意的工作人員。這家公司是一家名為dec公司(digitalequipmentcorporation)的全新公司,tx-0的一些使用者知道,dec的首批產品就是特別針對tx-0而設計的專用介面。在計算領域,與那些穿著灰色法蘭絨制服的ibm人員所具有的「批處理」心態相比,dec的一些創始人有著完全不同的觀點,這足以讓人興奮不已。而dec似乎注意到了tx-0社團的這種隨心所欲、互動、即興、凡事都親自動手嘗試的風格,並設計出了促進此類行為的計算機,這更加激動人心。pdp-1(這三個首字母是"programmeddataprocessor",即程式設計資料處理器的縮寫,人們認為這個名稱沒有「計算機」那麼有威脅感,計算機的含義包括了所有型別的笨重巨型機器。)將被稱為第一臺小型計算機,其目的不是為了實現大批次數字的處理任務,而是為了科學探究、數學公式……以及駭客探索。它的外形非常緊湊,整個裝置不超過三個冰箱的大小,因此它不需要過多的溫度調節。要開啟它,你甚至不需要整個一組工作人員按照正確的順序排列若干個電源,啟動時基發生器(time-basegenerator),或進行其他費力的工作。這臺計算機的零售價格也相當便宜,只需12萬美元——便宜到人們可以不再抱怨每一秒的計算機時間有多麼寶貴。這臺機器是dec製造的第二臺pdp-1(第一臺賣給了附近的一家科技公司boltberanekandnewman,也就是bbn),而mit獲得這臺機器沒有付出任何費用:dec將其捐獻給了rle實驗室。

因此,很明顯,駭客們使用pdp-1的時間會比花費在tx-0上的時間更多。

pdp-1附帶了一組簡單的系統軟體,但駭客認為這些軟體完全不夠用。tx-0的駭客已經習慣於在任何地方使用最先進的互動式軟體,那是一組令人眼花繚亂的系統程式,是駭客們自己編寫的,能夠絕對滿足他們對計算機進行控制這一永不停歇的需求。年僅12歲的彼得·多伊奇已經編寫出了一個更出色的彙程式設計式,鮑勃·桑德斯也設計出了flit偵錯程式的更為小巧、快速的版本micro-flit。這些程式的產生都得益於一組擴充套件指令集。一天,經過桑德斯和傑克·丹尼斯的周密規劃和設計後,tx-0被關閉了,一群工程師拆出其內部結構並開始利用硬連線將新指令寫入機器中。這個艱鉅的任務新增了若干條指令,擴充套件了組合語言。在完成了拆卸組裝的工作後,他們小心翼翼地啟動了tx-0,每個人都開始利用新指令瘋狂地更新程式並壓縮原有程式。

考托克瞭解到,pdp-1的指令集與tx-0的擴充套件指令集並沒有太大的區別,所以在那個夏天,考托克自然而然地開始利用他所能找到的所有空閒時間為pdp-1編寫系統軟體。考慮到機器送達後,每個人都會立即投入進來,開始編寫程式,因此他著手轉換micro-flit偵錯程式,以便大家能夠更輕鬆地在「這臺機器」上編寫軟體。薩姆森馬上將考托克的偵錯程式命名為"ddt",這個名字會一直沿用下去,而程式本身會被那些希望新增功能或壓縮指令的駭客們不停地修改。

考托克不是唯一一個做好準備迎接pdp-1到來的人。就像是一群形態各異的準父母,其他駭客也忙於為即將來到自己家庭的新生兒編織著「軟體的嬰兒襪和毯子」,這樣,這個計算王國的註定王位繼承人在9月末來到這裡的時候將立即享受到大家的歡迎。

駭客們幫忙將pdp-1安放到它的新家,也就是tx-0隔壁的房間klugeroom。它非常漂亮:坐在只有tx-0一半長的控制台後,你會看到一個排列緊湊的面板,上面佈滿了開關和指示燈;面板旁邊是顯示屏,裝在一個淺藍色的六面外殼中;顯示屏後面是高大的機櫃,有一臺冰箱的大小、三臺冰箱的厚度,裡面是電線、面板、開關和電晶體——當然機櫃是禁止入內的。pdp-1連線了一臺電傳打字機用於線上輸入(人們常常抱怨flexowriter電傳打字機的噪聲,最後它被改裝後的ibm打字機所取代,但ibm的打字機並不那麼好用),以及一臺高速紙帶讀取裝置,這也是用於輸入的裝置。總而言之,這是一個絕對美妙的玩具。

傑克·丹尼斯喜歡bbn為pdp-1原型編寫的一些軟體,特別是彙程式設計式。但是,考托克在看到這個彙程式設計式執行的時候會覺得不舒服(它的執行模式似乎不符合他喜歡的天馬行空的風格),於是考托克和其他幾個駭客告訴丹尼斯,他們希望編寫自己的彙程式設計式。「這可不是個好主意。」丹尼斯說,他希望有一個可以立即啟動並執行的彙程式設計式,並認為這些駭客要寫出彙程式設計式需要花費好幾周的時間。

考托克和其他人態度堅定。這是他們賴以工作的程式,它必須非常完美。(當然,沒有程式是完美的,但是這並不會阻止駭客對完美的追求。)

「這樣吧,」這位憨態可掬的20歲青年考托克對持懷疑態度卻有同情心的傑克·丹尼斯說道,「如果我們在週末編寫這個程式,並能讓它工作,你會為我們所花費的時間支付薪水嗎?」

根據當時他們的薪酬水平,這個程式的總報酬低於500美元。「這聽起來很公平。」丹尼斯說道。

於是,在1961年9月末的一個週五晚上,考托克、薩姆森、桑德斯、華格納和其他兩個駭客開始工作了。他們認為應該從丹尼斯編寫了初始版本並由12歲的彼得·多伊奇等人修改過的tx-0彙程式設計式開始著手。他們不會改變輸入或輸出,也不會重新設計演算法。每個駭客都將負責tx-0程式中的一部分,將其轉換成pdp-1程式碼。他們不眠不休。6名駭客在那個週末連續工作了250個人工小時,編寫程式碼、除錯,並就著從tmrc娛樂室拿來的可口可樂把滿嘴的中餐外賣送到胃裡。這是一次程式設計的狂歡盛宴。星期一,當傑克·丹尼斯走進實驗室時,他驚奇地發現pdp-1中已經載入了這個彙程式設計式,它正在演示將自己的程式碼彙編成二進位制。

純粹憑藉著他們的技術實力,tx-0,不,pdp-1的駭客們在一個週末編寫出了計算機行業需要數週、甚至可能需要好幾個月才能順利完成的程式。對於這種專案,計算機行業不經過申請、研究、溝通和執行決定等漫長乏味的流程是不太可能實現的,在這個過程中很有可能還會經歷相當大的妥協。這個專案也許根本就不會完成,而這是駭客道德的勝利。

這些駭客甚至獲得了使用這臺新機器的更多機會,比他們之前設法使用tx-0的時間還多,幾乎所有的駭客都將自己的工作轉移到了klugeroom。只有少數幾個頑固派依然在使用tx-0,而對於pdp-1的駭客們來說,這很適合開一些無傷大雅的玩笑。為了幫助記憶,pdp-1的駭客們在這個全新機器指令集的基礎上發明了一些縮寫,包括一些奇異的指令,比如dac(寄存累加器)、lio(載入輸入/輸出)、dpy(部署)和jmp。pdp-1團隊會站成一排,然後整齊地喊出:

lac,

dac,

dippydap,

lio,

dio

jump!

在喊出最後一個單詞"jump!"(跳!)時,他們會同時跳到右側。他們缺乏舞蹈技巧,卻有著可以彌補這一切的熱情:這臺機器的美妙以及計算機的魅力令他們興奮不已。

從駭客們更為自發地使用pdp-1進行程式設計這一行為,同樣可以很明顯地看出這種熱情,他們在pdp-1上編寫嚴格的系統程式,控制原始的機械臂,再到天馬行空地研究。最近的一個實驗利用了pdp-1和tx-0之間的連線——一條連線兩臺機器的導線,資訊通過這條導線以每次一位的速度傳遞。根據薩姆森的說法,駭客們找來了令人尊敬的ai先驅約翰·麥卡錫,讓他坐在pdp-1旁邊。「麥卡錫教授,看看我們新的國際象棋程式吧!」然後,他們又叫來了另一位教授坐在tx-0旁。「這就是那個國際象棋程式!請輸入您的走法!」麥卡錫輸入了他的第一步後,他的走法顯示在了tx-0的電傳打字機上。駭客們告訴另一個教授,他看到的是tx-0開局的第一步棋。「現在該您了!」在走了幾步棋後,麥卡錫注意到,計算機在輸出走法的時候,一次只輸出一個字母,有時還會有所停頓,這很可疑。於是,麥卡錫沿著那條連線的導線找到了他的真人對手。駭客們歡快地來回奔跑著。但是,用不了多久,他們就能開發出讓計算機真正參加國際象棋錦標賽的程式。

pdp-1解放了駭客們,讓他們可以沒有任何限制地程式設計。薩姆森可以隨意地研究諸如瑪雅曆法(基於以20為基數的數字系統工作)之類的事情,還可以加班,利用pdp-1擴充套件的音訊效能來編寫tx-0音樂程式的新版本,創作出由三種聲音發聲的音樂——三聲部巴赫賦格曲、互動旋律……古舊的klugeroom房間傳出了計算機音樂的聲音!dec的人聽說了薩姆森的程式,並要求他在pdp-1上完成這個程式,因此薩姆森最終將其實現為,人們可以通過將音符簡單轉換為字母和數字的方式來在機器上輸入樂譜,而計算機則會做出回應,發出三聲部的風琴奏鳴曲。另一小組則編出了吉爾伯特和蘇利文的歌劇。

薩姆森自豪地向dec演示了這個音樂編譯器,它可以釋出給任何需要的人。其他人會使用他的程式,這讓他深感驕傲。負責編寫新彙程式設計式的團隊也有同樣的感受。比如,他們很願意將記載著程式的紙帶放入抽屜,這樣任何使用這臺機器的人都可以獲取程式、嘗試改進它、壓縮其中的若干條指令或新增一些功能。如果dec請求他們提供這個程式以便給其他的pdp-1擁有者使用,那他們會覺得很榮幸。版稅問題從來不在他們的考慮之內。對於薩姆森和其他駭客來說,使用計算機是他們的樂趣,他們甚至願意為此付費。而在計算機上每工作一小時所獲得的1.60美元的「鉅款」是額外的獎勵。至於版稅,軟體難道不更像是給這個世界的禮物嗎?它本身不就是獎勵嗎?駭客的觀點是讓計算機更為實用,讓使用者更高興地使用它,讓計算機的趣味性吸引人們使用它、研究它並最終破解它的奧秘。如果你編寫出了一個優秀的程式,那麼你就是在建立一個社群,而不是研究出一個產品。

不管怎樣,人們不應該為軟體付費——資訊應該是完全免費的!

tmrc的駭客們並不是唯一一群為迎接新pdp-1的到來而制定計劃的人。1961年夏天,一個在那時最為複雜精密的駭客計劃正在緊鑼密鼓地設計中,這個計劃可以說是嚴格應用駭客道德所創造的偉大結果的最好展示。這次活動發生在位於劍橋海厄姆大街(highamstreet)的一棟住宅樓裡,而始作俑者是3個20多歲的程式設計師,他們有好幾年的時間一直在不同的計算中心來回穿梭著工作。其中有兩個人住在這棟住宅樓裡,所以,為了向附近的哈佛大學所散發出來的自負氣息「致敬」,這三個人嘲弄地將這棟住宅樓命名為"highaminstitute"(海厄姆學院)。

史蒂夫·拉塞爾是這所假學院中的一員,不知為何他的綽號叫斯拉格。他說話時總是喜歡一口氣把話說完,這一點像極了駭客。他戴著厚厚的眼鏡,中等身材,對計算機、無聊電影以及庸俗的科幻小說有著狂熱的愛好。在海厄姆大街的住所中,這些居民在閒談中總會涉及所有這三個興趣愛好。

拉塞爾長久以來都是約翰·麥卡錫大叔的「苦力」(這是tmrc的專用語言)。麥卡錫一直在試圖設計和實現可以用於完成人工智慧工作的更高階語言。他認為lisp是合適的語言。這種語言是以其方法"listprocessing"(列表處理)來命名的;它有著簡單但功能強大的命令,可以用很少的程式碼實現許多功能;lisp還可以執行強大的遞迴操作(引用自己內部的東西),因此,用這種語言編寫的程式可以真正從程式執行時發生的狀況中「學習」。那時,lisp的問題是它會佔用計算機上相當大的空間,執行異常緩慢,並且會隨著程式執行生成大量的額外程式碼,以至於需要其自身的「垃圾回收」程式定期清理計算機的記憶體。

拉塞爾正在幫助約翰大叔為ibm704編寫lisp直譯器。用他的話說,這是「一個可怕的工程工作」,大部分是因為704枯燥無味的批處理。

與704相比,pdp-1對斯拉格·拉塞爾來說就像是一方樂土。它不但比tx-0更容易接近,而且沒有批處理!儘管它的功能還不足以使用lisp語言,但是它具有其他神奇的功能,其中的一些也是「海厄姆學院」討論的主題。讓拉塞爾和他的朋友們備感興趣的是使用crt螢幕在pdp-1上製造出某種型別的唯美「炫麗顯示」。在經過了許多午夜座談後,這個由三人組成的「海厄姆學院」堅持認為能夠最為有效地演示計算機神奇之處的,非視覺打鬥遊戲莫屬。

曾有人在tx-0上做過若干次類似的嘗試。其中一個就是《迷宮裡的老鼠》——使用者先用光筆構造出一座迷宮,螢幕上代表老鼠的光點會試探性地在迷宮裡找路,搜尋另一組代表楔形乳酪的光點。這個遊戲還有一個「vip版本」,在這個版本中,老鼠會去尋找裝著馬蒂尼的酒杯。找到酒杯後,它會繼續尋找下一個,直到它跑不動了,醉得無法繼續為止。但是,如果你按動開關讓老鼠第二次進入迷宮,它會「記住」通往酒杯的路徑,就像慣常的酒鬼會毫不遲疑地奔向酒會一樣。這就是駭客目前能夠在tx-0上進行的展示。

pdp-1配備了螢幕,比tx-0更便於程式設計,而且已經有了一些很好的顯示效果。其中最讓人欣賞的工作出自mit人工智慧雙子大師之中的一位馬文·明斯基之手(另一位大師當然就是麥卡錫)。明斯基比麥卡錫更為外向,也更習慣駭客的活動模式。他對於計算領域的未來有著非常宏大的想法——他確實相信,有一天機器將能夠思考,他公開宣稱人類的大腦是「人肉機器」,暗示著非肉質的機器有一天也可以實現大腦的功能,這通常會引起很大的轟動。明斯基身材矮小,酷似精靈,在他厚厚的眼鏡後面有著一雙充滿靈氣的眼睛,禿頂的他總是穿著高領毛衣,他會以他慣常不形於色的風格說出上面的話,同時做好準備迎接最尖銳的挑戰,並會稍微流露出這只是一種打發時間的方式——機器當然不能思考,呵呵。明斯基具有真才實學,pdp-1的駭客常常會去上他的一門課「ai6.544入門」,不僅因為他是位優秀的理論家,更因為他理解自己所講授的知識。到了20世紀60年代初期,明斯基開始組織建立世界上第一個ai實驗室。他知道,要完成他希望實現的事情,他需要一些程式設計天才作為他的小兵,因此,他以任何可能的方式鼓勵駭客技術。