0%
第五章 計算機中的精靈 BASIC語言探源

第五章 計算機中的精靈

BASIC語言探源

那麼你應該考慮使用小型BASIC軟體。
你想使用這台計算機做家庭作業,進行數學演算,並且用它玩數字、星星、陷阱、赫克爾(HURKLE)、斯納克(SNARK)和巴格爾斯(BAGELS)等遊戲。
後來,1975年1月號的《大眾電子學》雜誌刊登了介紹Altair計算機的封面報道。蓋茨的朋友保羅·艾倫手裡拿著這篇文章,穿過哈佛廣場,來到蓋茨面前,說:「你瞧,微機終於問世了!我跟你說過,它一定會問世的!我們一定要抓住這個機會!」蓋茨不得不承認他朋友的話是對的,看來他們一直要找的東西終於被找到了。
《多布博士》雜誌和《人民計算機公司》的讀者考慮的不僅僅是小型BASIC語言,他們想得更遠。他們將艾利森開發的程序當做一個起點,並對它進行修改,創建出功能更強的語言。這些早期的小型BASIC語言使得許多程序員能夠開始使用微機。其中最成功的兩個版本是湯姆·皮特曼和王利成(Li-chen Wang)開發的。而皮特曼像英特爾公司的工程師一樣,對微處理器有著清楚的了解,因為他曾經為4004微處理器編寫過程序。皮特曼和王利成之所以取得了成功,原因是他們實現了小型BASIC語言的既定目標,為用戶提供了一種比較簡單的語言。小型BASIC語言的開發者並不想用它作為發財致富的工具。當時另一種功能更強的BASIC語言也在開發之中。1974年秋,比爾·蓋茨離開華盛頓進入哈佛大學。蓋茨的父母一直想讓他讀法律,而此時他們終於認為他找對了前進的目標。
雖然業餘計算機愛好者兼企業家開發的微處理器和原始的微機確實將計算能力賦予了普通人,但是只有依靠BASIC編程語言,他們才能利用這種計算能力。達特默思學院的兩位教授為了尋求一種更好的辦法,使他們的學生能夠使用計算機,九九藏書便利用全國科學基金會提供的經費,於1964年推出了BASIC語言。由約翰·凱門奈伊和托馬斯·庫爾茨開發而成的這種語言是一種能夠迅速見效的產品。與用FORTRAN語言進行編程時的緩慢、煩瑣和複雜的過程相比(FORTRAN是當時比較常用的計算機語言),BASIC給人以快捷而方便的快|感。
鮑勃·奧爾布雷克特開發軟體並不是為了實現個人野心。他一向致力於讓孩子們對計算機產生興趣,當Altair計算機問世時,他自問道:「如果能夠開發出一種小型BASIC語言,使之能夠放入2K內存中,並且適合孩子們使用,這不是很好嗎?」這種軟體可以放入Altair計算機有限的4K內存中,並且可以立即使用。
他們兩人就在終端旁邊睡覺,經常一邊吃飯,一邊討論BASIC的問題。一天,在蓋茨就讀的哈佛大學宿舍區的餐廳里,他們討論起某些數學常式的問題,這些子程序可以用來處理BASIC需要的非整型數運算。這些浮點運算常式編寫起來並不難,但是他們都不太感興趣。蓋茨說他不想編寫這些程序,艾倫說他也不想干。這時,從桌子的另一端傳來一個著急的聲音:「我編寫過一些浮點運算常式。」兩人都把頭轉向這奇怪的聲音傳過來的方向,這就是在校園餐廳用午餐時馬蒂·達維多夫加入他們編程小組的故事。
對於艾倫來說,這意味著他們的程序能夠運行。若要列印這個消息,至少要有75%的代碼是正確的。他輸入內存大小——7K,又鍵入「PRINT2+2」(輸出2+2的結果)。機器列印結果為「4」。
在他們面前的一張凳子上,放著配有當時世界上最大內存的微機,這台微機擁有7K內存,放在7塊1K內存板上,它正在運行一個程序,通過將隨機信息寫入計算機內存並讀取信息,對內存進行測試。內存需要測試,不過九-九-藏-書這個程序並不是他們擁有的惟一測試程序。程序運行時,Altair計算機上的所有指示燈都在不停地閃爍。這一天他們剛剛使它用7K內存進行工作。
——早期計算機零售商迪克·海澤
蓋茨認為在哈佛大學讀書不如到MITS公司工作有意思,於是他轉到朋友艾倫的手下工作。雖然蓋茨從未成為MITS公司的專職員工,但是他的大部分時間是為MITS公司工作。後來他和艾倫發現,除了Altair計算機用戶外,還存在著更大的軟體市場。因此兩人與埃德·羅伯茨簽訂了一份BASIC語言的使用特許權協議,同時著手尋找BASIC語言的其他客戶。這時,蓋茨和艾倫開始將他們的企業稱為微軟公司。
「它列印出了『內存大小是多少?』這個消息」羅伯茨說道。「這是什麼意思?」
兩個人全身心投入了這項軟體的開發,編程工作每天都要進行到夜深人靜的時候。蓋茨甚至犧牲和放棄了夜間打撲克的娛樂活動。有時他們工作著就打起了瞌睡。有一次艾倫看到蓋茨打瞌睡腦袋碰到鍵盤,突然醒過來,朝屏幕看一眼,又立即開始鍵入操作。艾倫想,他的這位朋友肯定是睡著時進行編程的,醒過來之後又繼續幹下去。
羅伯茨建議將BASIC的測試推遲到次日再進行,然後讓艾倫住進了「阿爾伯克基最昂貴的飯店。」第二天,由於艾倫沒有攜帶足夠的錢來支付飯店住宿費用,因此不得不由羅伯茨掏錢。
這時艾倫已經沒有時間擔心這擔心那了。羅伯茨已經在約定的時間來到機場迎候他。埃德·羅伯茨不拘禮節,開了一輛小型運貨車來接艾倫,這使艾倫非常驚奇。他原想一定有一位身著制服的人開一輛漂亮的汽車來迎接他。同樣使他驚奇的是MITS公司總部破舊的外觀。羅伯茨將艾倫引進房間,對他說:九-九-藏-書「我們到了,這就是Altair計算機。」
艾倫對自己和蓋茨的能力充滿信心,但是當飛機接近阿爾伯克基上空時,他的心裏卻犯起了嘀咕,他擔心他們的軟體中會不會漏掉了什麼東西。飛機就要降落的時候,他突然想起,他們沒有編寫載入程序,以便從紙帶上讀取BASIC。如果沒有這個載入程序,艾倫將無法將BASIC載入到Altair計算機中去。在模擬的Altair計算機上,這不是個問題,因為這種模擬並不那麼精確。艾倫找出一張廢紙,當飛機降落時,開始用8080機器語言編寫載入程序。就在飛機落地的一刻,他已經草就了一個載入程序。現在他不再擔心BASIC語言,卻又開始擔心起這個草草編成的載入程序。
蓋茨馬上打電話給MITS公司,聲稱他與合伙人有一種BASIC語言可以用於Altair計算機。當MITS公司的老闆埃德·羅伯茨問蓋茨何時能來阿爾伯克基展示他的BASIC語言時,蓋茨看了看他的朋友,深深地嘆了口氣,說:「好吧,再過兩三個星期。」蓋茨放下電話,轉身對保羅·艾倫說:「我想我們該去買一份說明書。」於是他們徑直來到一家電子設備商店,買了一份亞當·奧斯本寫的關於8080處理器的說明書。
奧爾布雷克特請他的朋友、計算機學教授丹尼斯·艾利森從事小型BASIC的開發。《人民計算機公司》和《多布博士》雜誌刊登了軟體開發進展情況的報道。艾利森在報道中稱:「小型BASIC項目的開發,表明我們試圖為計算機業餘愛好者提供一種更便於使用的語言以及用於對程序進行加密的方法。」在早期的一份《人民計算機公司》的新聞通訊中,艾利森與「其他一些人」講述了他們要達到的目標:
在接下來的兩年中,全國數學教師委員會就究竟支持FORTRAR還是BASIC作為標準教學語言的問題展開了爭論https://read•99csw•com。FORTRAN廣泛用於科學計算,因此比較適合執行大型計算任務,而BASIC的特點是學習起來非常容易。鮑勃·奧爾布雷克特是BASIC語言的積極支持者,作為兒童計算機教學的先驅者,他一向不喜歡FORTRAN語言。在使教學者認識到計算機能夠幫助學生學習的過程中,個人計算機和BASIC語言是兩個最重要的產品。
這天上午,當機器開始運轉時,艾倫屏住了呼吸,他用了大約5分鐘時間裝入紙帶。他撥動Altair計算機上的開關,輸入啟動程序的起始地址。當他撥動計算機的「運行」開關時,他心裏想:「如果我們在某個地方出了差錯,比如在彙編程序或解釋程序中出錯,或者我們對8080中的某個問題沒有搞懂,那麼這個程序就無法運行。」他急切地等待著結果。
6個星期後,蓋茨和艾倫認為這個項目的開發已經接近尾聲。他們將這個情況電話告訴了羅伯茨,羅伯茨請他們去展示開發的成果。當艾倫和蓋茨對BASIC語言進行收尾工作時,艾倫訂了一張飛機票。在艾倫準備乘坐第二天早晨6點鐘飛赴阿爾伯克基的航班的頭天晚上,他們仍在忙於BASIC的工作。大約凌晨1點時,蓋茨叫他的朋友去睡幾個小時,等他醒來的時候,裝有BASIC語言的紙帶就準備好了。艾倫接受了蓋茨的好意,當他醒來時,蓋茨將紙帶遞給了他,並且說:「誰知道這東西行不行?祝你好運。」艾倫用手打了3下響指,急忙去趕飛機。
如果有人扼殺了比爾·蓋茨,微機產業的發展進程將會倒退兩年。
雖然蓋茨相當聰明,但是他發現與他同住一起的一位數學系學生比自己還要機靈,當這位同學跟蓋茨說,他不打算讀數學而想改修法律時,蓋茨感到非常吃驚。蓋茨想:「如果這個同學不學數學,我肯定也不學。」經過選擇,蓋茨投入了心理學課程的學read.99csw.com習,而選修研究生的物理和數學課程,晚上則長時間玩撲克。
羅伯茨相信這個程序確實能夠運行,然後又要求艾倫增加一些他認為BASIC必須擁有的附加特性。幾個星期後,羅伯茨委任艾倫擔任MITS公司軟體部主任之職,艾倫欣然接受了。
假定你今年7歲,並不關心浮點運算、對數、正弦、矩陣求逆和核反應堆等計算。你的家用計算機運算能力比較小,內存也不多。也許這是一台Mark-8或Altair8800計算機,內存不到4K位元組,並且配有一台TV打字機用於數據輸入和輸出。
在接下來的幾個星期里,蓋茨與艾倫夜以繼日地從事BASIC語言的開發。當他們編寫程序時,他們設法確定適用的BASIC語言的起碼特性,這與奧爾布雷克特和艾利森面臨的問題相同,差別在於小型BASIC可以用於各種不同的計算機。蓋茨和艾倫不受這方面的限制,他們可以將BASIC語言搞成自己想要的任何形式。BASIC語言或其他任何軟體都不存在固定的產業標準,因為當時它還沒有形成一個BASIC軟體產業。通過自己確定BASIC語言的要求,蓋茨和艾倫制定了一個大約持續6年的未來軟體開發模式。他們沒有對市場展開調研,而只是在開始時規定了將什麼特性放入他們的軟體。
在BASIC語言的開發過程中,蓋茨、艾倫或達維多夫都沒有見過Altair計算機。他們在一台大型計算機上編寫BASIC語言,然後用艾倫編寫的在大型機上模擬Altair計算機的程序對BASIC進行測試。到了一定的時候,蓋茨打電話問埃德·羅伯茨,Altair如何處理鍵盤鍵入的字元,羅伯茨得知他們真的在認真開發這個項目,感到非常驚奇,於是他又打電話給負責電路板技術的專家比爾·耶茨,耶茨對蓋茨說,他是第一個提出這種重要問題的人。他對蓋茨說:「也許你們真的能夠搞出點名堂。」