為Altair開發BASIC程序

蓋茨和艾倫準備編寫一個能讓發燒友用Altair電腦自己動手寫程序的軟件。具體來說,他們決定為編程語言BASIC寫一個能在Altair的英特爾8080微處理器上運行的解釋器。這將成為針對微處理器的第一款商業化本地高級編程語言,並將開創個人電腦軟件行業。

他們用帶有Traf-O-Data抬頭的舊信紙給生產Altair的阿爾伯克基初創公司MITS寫了封信,稱他們製作了一款能在8080微處理器上運行的BASIC解釋器。信中寫道:「我們希望通過你把這款軟件賣給廣大電腦發燒友。」55 這番話裡其實是有水分的,因為他們還沒有寫出任何軟件。但兩人知道,如果MITS表示有興趣,他們可以馬上動手。

這封信發出去之後便石沉大海,於是他們決定給MITS打電話。蓋茨建議艾倫打電話,因為他年紀大一些。但艾倫說:「不,應該你來打,你做這種事情更在行。」兩人經過商量各讓了一步:蓋茨負責打電話(他會在電話中掩飾自己尖細的嗓音),但他要以保羅·艾倫的名義打電話,因為他們知道,如果幸運的話,飛到阿爾伯克基的人會是艾倫。艾倫回憶說:「我留著鬍子,看起來至少像個成年人,而比爾看上去還像個十年級學生。」56

當嗓音粗啞的埃德·羅伯茨接電話時,蓋茨裝出一副低沉的語調:「我是波士頓的保羅·艾倫。我們為Altair電腦製作了一款BASIC軟件,很快就要完成了,我們想拿給您看看。」羅伯茨回答說,他接到過很多這樣的電話。誰最先帶著能用的BASIC軟件走進他阿爾伯克基的辦公室大門,誰就能拿到合同。蓋茨轉過身來興高采烈地對艾倫說:「天哪,我們可以動手了!」

由於他們手頭沒有Altair電腦,艾倫不得不在哈佛的PDP–10上進行模擬,他們製作Traf-O-Data計算機時用的也是這種策略。於是他們購買了一本8080微處理器的說明書,艾倫只用了幾個星期就把模擬器和其他開發工具準備好了。

與此同時,蓋茨在黃色標準拍紙簿上瘋狂地編寫BASIC解釋器代碼。等艾倫的模擬器準備就緒,蓋茨已經寫好了程序架構和大多數代碼。艾倫回憶說:「我還記得他會用很長時間思考問題,其間時而踱步,時而晃動身體,然後在黃色拍紙簿上記下點什麼,他的手指上沾滿了五顏六色的記號筆墨水。等我的模擬器準備就緒,他就可以使用PDP–10了,於是比爾就轉到終端上,一邊盯著他的拍紙簿一邊晃動身體,然後,他用奇怪的指法快速輸入一堆代碼,如此循環往復。他會像這樣一連幹上許多個小時。」57

一天晚上,他們在蓋茨住的柯裡爾樓裡吃飯,當時坐在同一桌的還有其他一些數學牛人。他們在飯桌上抱怨編寫浮點運算例行程序(可讓程序有能力處理科學計數法中非常小和非常大的數字和小數)實在太枯燥。[2] 這時,在哈佛當極客的優勢就顯現出來了。一個來自密爾沃基的卷髮男孩蒙特·達維多夫(Monte Davidoff)突然說:「我已經寫了一些這樣的例行程序。」58 蓋茨和艾倫開始向他拋出一大堆問題,看他是不是真有處理浮點代碼的能力。結果兩人滿意地發現達維多夫並沒有亂說,於是他們把他帶到蓋茨的寢室,經過協商決定向他支付400美元報酬。他成了這個團隊的第三名成員,最終掙到的錢要比400美元多得多。

蓋茨不再理會迫在眉睫的考試,甚至不玩撲克了。他和艾倫以及達維多夫連續8周沒日沒夜地躲在哈佛的艾肯實驗室裡,在國防部資助的PDP–10上書寫著歷史。他們偶爾會休息一下,到哈佛比薩屋或者一家名叫AkuAku的仿波利尼西亞風格餐廳吃頓飯。清晨時分,蓋茨有時會趴在終端機上打個盹兒。艾倫說:「有時候他正寫著代碼,突然身體慢慢前傾,直到鼻子碰到鍵盤為止。小睡一兩個小時之後,他會睜開眼睛,瞇眼看著屏幕,眼睛眨巴兩下,然後從之前中斷的地方開始繼續——他的專注力真是非常驚人。」

他們會在便箋本上打草稿,有時候還會比賽,看誰能用最簡短的代碼執行子程序。其中一個人會喊:「我能用9行執行。」另一個人則會說:「喔,我只要用5行!」艾倫指出:「我們知道,每壓縮一個字節,就能為用戶留下更多空間,讓他們去添加自己的應用。」增強版Altair的內存只有4K,而他們的目標是讓這個程序小於4K,盡量為用戶留出使用空間(如今,一部16GB智能手機的內存相當於前者的400萬倍)。晚上他們會把打印出來的程序帶在地板上展開,設法讓程序更優雅、更凝練、更高效。59

到1975年2月底,經過8周緊張的代碼編寫工作,他們終於成功地把程序精簡到了3.2K。蓋茨說:「問題不在於我能不能寫出這個程序,而在於我能不能把它壓縮到4K以下並讓它以超快的速度運行。這是我寫過的最酷的程序。」60 蓋茨最後檢查了一下程序中的錯誤,然後命令艾肯實驗室的PDP–10吐出一卷打孔帶,讓艾倫帶到阿爾伯克基。

飛機下降的時候,艾倫突然想起還沒寫加載器,也就是一系列引導Altair將BASIC解釋器載入內存的命令。在飛機準備著陸時,他抓起一個便箋本,用英特爾微處理器使用的機器語言寫了21行代碼,每行都是一個三位的八進制數。等艾倫離開航站樓時已經渾身冒汗了。這時,身穿棕黃色奧司維滌綸西裝的艾倫開始在人群中尋找埃德·羅伯茨。最後,他找到了一個有著雙下巴,體重足有300磅的彪形大漢,他身穿牛仔褲,繫著蝶形領結,開著一輛皮卡。艾倫回憶說:「我本來以為自己會見到某家前沿創業公司身居要職的高管,就像聚集在128號公路(波士頓附近高科技企業雲集的環城公路)沿線的那種公司。」

MITS全球總部也和艾倫預想的不太一樣。它位於一家租金低廉的購物中心內,唯一一台內存大小滿足BASIC運行要求的Altair電腦還在調試。艾倫說,於是他們決定把測試推遲到第二天早晨進行,然後到「一個名叫『潘喬家』的墨西哥餐館吃了頓三美元的自助餐,這個價格也吃不到什麼好東西」。羅伯茨開車帶他去了當地一家喜來登酒店,前台接待告訴他一間房要50美元。但艾倫身上只有40美元,於是,在一陣尷尬之後,羅伯茨不得不替他付了房錢。艾倫說:「我猜我和他預想的也不一樣。」61

第二天早晨,艾倫返回MITS去進行這場重要測試。他花了近10分鐘時間才載入他和蓋茨寫的BASIC解釋器代碼。羅伯茨和他的同事們含笑對視了一下,他們已在懷疑這場演示恐怕要搞砸了。但電傳打字機隨後開始卡嗒作響。屏幕顯示:「內存大小?」MITS團隊中有一個人叫道:「嘿,它打出東西來了!」艾倫驚喜萬分。他鍵入了答案:7168(字節)。Altair答道:「好。」艾倫又輸入一行命令:「打印2+2」。這是最簡單的一個命令,但它不僅能測試蓋茨的代碼,而且能夠測試達維多夫的浮點運算例行程序。Altair的回應是「4」。

到這時為止,羅伯茨一直在一旁靜靜地觀察。他認為自己可以製造出一台發燒友能用而且也能買得起的電腦了,但這種野心已經讓他麾下瀕臨破產的公司背負了更多債務。此時此刻,創造歷史的一幕正在他眼前展開。這是軟件程序有史以來第一次在家用電腦上運行。他不由驚叫:「哦,天哪,它打印出『4』來了!」62

羅伯茨邀請艾倫去他的辦公室,他同意在所有Altair電腦上安裝BASIC解釋器並購買相關授權。艾倫承認:「我笑得合不攏嘴。」他帶著一台能操作的Altair電腦回到劍橋,安裝在蓋茨的寢室裡,然後他們一起出去慶祝。蓋茨像往常一樣點了杯「秀蘭·鄧波兒」,也就是生薑汽水加馬拉斯奇諾櫻桃果汁。63

一個月後,羅伯茨邀請艾倫擔任MITS軟件主管。艾倫在霍尼韋爾的同事們認為他考慮接這份工作簡直是瘋了。他們對艾倫說:「你在霍尼韋爾的工作很穩定,你可以在這兒工作好多年。」但職業穩定並不是那些渴望領導計算機革命的人的理想。於是艾倫於1975年春動身前往阿爾伯克基,一個他剛剛才知道不在亞利桑那州的城市。

蓋茨決定暫時留在哈佛繼續讀書。他在哈佛經歷了一場許多最成功的學生都經歷過的「成年禮」(當然,這種事只在事後回憶時才會覺得有意思):被神秘的大學行政理事會召去接受處分。蓋茨一案是國防部審計員在審查哈佛艾肯實驗室那台由國防部資助的PDP–10計算機使用情況時東窗事發的。審計人員發現,這台計算機的多數時長都是一個名叫W·H·蓋茨的大二學生使用的。經過一番煎熬,蓋茨寫了一份材料為自己辯護,敘述他是如何把PDP–10作為模擬器來開發BASIC程序的。最後,學校沒有為使用計算機而追究蓋茨的責任,但他還是因為讓校外人員保羅·艾倫用他的密碼登錄PDP–10而「受到警告處分」。他接受了這項輕微的處分,並同意把BASIC解釋器的早期版本(而不是他和艾倫當時正在編寫的改進版)放在公共領域。64

當時,蓋茨在他和艾倫的軟件合作項目上投入的精力已經超過了他的哈佛學業。1975年春天,他讀完了大學二年級,然後飛往阿爾伯克基,在那兒待了一個暑假,並決定秋季繼續待在那兒,而不是回校讀大三第一學期。在1976年春季和秋季,他回到哈佛又讀了兩個學期,就在離畢業還有兩個學期的時候,他永遠告別了哈佛。2007年6月,當蓋茨回到哈佛接受榮譽學位時,他在演講的開頭對坐在聽眾席的父親說了這樣一段話:「有句話我等了30多年才說出口:爸爸,我一直都跟你說,我會回來把學位拿到手的。」65

《創新者:一群技術狂人和鬼才程序員如何改變世界》