微軟誕生50週年,比爾・蓋茨撰文憶往昔,並發佈了Altair BASIC源代碼

選自 Gates Notes

作者:Bill Gates

機器之心編輯部

1975 年 4 月 4 日,比爾・蓋茨和保羅・艾倫在美國新墨西哥州阿爾伯克基市創立了微軟公司。到今天,半個世紀過去了,微軟早已成長為一家超級科技巨頭。

近日,比爾・蓋茨親自撰文回憶了微軟的誕生和他們的第一筆業務,同時還通過一份 157 頁的 PDF 文件分享了他們為這項業務編寫的 Altair BASIC 源代碼。

順帶一提,比爾・蓋茨這篇博客的風格相當炫酷,值得訪問原文一觀。

  • 博客地址:https://www.gatesnotes.com/meet-bill/source-code/reader/microsoft-original-source-code

  • 源代碼:https://images.gatesnotes.com/12514eb8-7b51-008e-41a9-512542cf683b/34d561c8-cf5c-4e69-af47-3782ea11482e/Original-Microsoft-Source-Code.pdf

1975 年,保羅・艾倫(Paul Allen)和我創造了微軟,因為我們相信我們的願景:每張辦公桌和每個家庭都應該有一台計算機。

現在,已經過去了五十年,微軟仍在繼續創新,讓生活更輕鬆、工作更高效。微軟成立 50 週年是一個巨大的成就,而這一切都離不開史提芬・波爾默(Steve Ballmer)和薩蒂亞・納迪拉維杜華(Satya Nadella)等傑出的領導者,以及多年來在微軟工作的許多人。雖然我很高興慶祝這個週年紀念日,但達到這個裡程碑卻讓人感到苦樂參半。我總是喜歡回顧微軟的歷史,夢想它的未來。但也很難相信,我生命中如此重要的一部分已經存在了半個世紀!

我和保羅在哈佛的計算機室裡面彎腰操作 PDP-10 的場景還恍如昨日,那時候我們編寫的代碼成為了我們新公司的首款產品。

保羅和我還是學生時就已經愛上了計算機保羅和我還是學生時就已經愛上了計算機

直到今天,那些代碼依然是我寫過的最酷的代碼。

微軟的故事始於一本雜誌:《大眾電子(Popular Electronics)》1975 年 1 月刊。當時這本雜誌的封面圖展示了 Altair 8800。

這個雜誌封面改變了我的生活這個雜誌封面改變了我的生活

Altair 8800 來自一家名為 MITS 的小型電子設備公司,是一款開創性的個人電腦套件,目標是為計算機愛好者帶來計算能力。當保羅和我看到那本雜誌的封面時,我們明白了兩個關鍵:個人計算機(PC)革命即將來臨,我們要參與進去成為基礎。

Altair 8800Altair 8800

當時,PC 幾乎還不存在。保羅和我知道,如果創造可以讓人們編程 Altair 的軟件,就可以徹底改變人們與這些機器的交互方式。因此,我們聯繫了 MITS 的創始人 Ed Roberts,並告訴他我們有編程語言 BASIC 的一個版本可用於 Altair 8800 運行的芯片。

但事實是:我們當時還沒有寫出那個軟件。是時候開始工作了。

BASIC 的基礎

BASIC 由達特茅斯學院的兩位教授於 1964 年發明,其目標是讓沒有計算機經驗的人也能輕鬆學習。只需很少的學習或技術能力,人們就可以用 BASIC 編寫自己的軟件 —— 從支票核對程序到井字遊戲。BASIC 是我和保羅學習的第一門語言(至今仍在使用)。

我一直是個數學很好的學生;我發現數學所需的邏輯和解題能力能幫助我學習計算機編程。我一直是個數學很好的學生;我發現數學所需的邏輯和解題能力能幫助我學習計算機編程。

像 BASIC 這樣的計算機語言與英語或任何其他語言具有相同的用途。就像你可以用英語在咖啡館點咖啡一樣,你可以用 BASIC 告訴計算機運行程序、解決數學問題或執行其他任務。

轉譯 BASIC

但有一個問題:計算機不會說 BASIC。而它們確實能用的語言又非常複雜且不直觀,因此用它編程非常困難。為了填補這一空白,保羅和我開始著手創建一個 BASIC 解釋器(interpreter),它可以在程序運行時逐行將代碼翻譯成計算機可以理解的指令。

我們考慮創建一個類似的工具,稱為編譯器(compiler),它可以先翻譯整個程序,然後一次性運行。但我們認為解釋器的逐行方法對新手程序員很有幫助,因為它會立即對代碼提供反饋,讓程序員能夠隨時修復任何錯誤。

當你發現你的方法有效時,那種感覺棒極了當你發現你的方法有效時,那種感覺棒極了
保羅和我與 Ric Weiland 一起上學,他後來成為微軟的第二名員工。保羅和我與 Ric Weiland 一起上學,他後來成為微軟的第二名員工。

開始

保羅和我決定分頭行動。

我們沒有 Intel 8080 芯片 —— 這正是 Altair 計算機運行的芯片,所以保羅開始編寫一個在哈佛的 PDP-10 主機上模擬 8080 的程序。這樣我們不需要真正的 Altair,也能測試我們的軟件。

與此同時,我則專注於編寫程序的主要代碼,而另一位朋友 Monte Davidoff 則負責編寫一個稱為數學包(math package)的部分。我們日夜不停地編程了兩個月,才創造出我們之前揚言已經寫好了的軟件。

哈佛的 PDP-10哈佛的 PDP-10

克服困難

那時候,計算機內存很貴。給 Altair 加內存的話,很可能內存會比這台計算機本身更貴,所以每個字節都很重要。我們認為,如果我們能將我們的 BASIC 代碼壓縮到僅 4 kB,那麼使用 BASIC 的 Altair 用戶仍然會有足夠的內存來運行他們編寫的程序(而不必再花更多錢)。

為了滿足這一限制,我使用了多種技術來優化內存使用,比如緊湊的數據結構和高效的算法。這是一次有趣的挑戰,儘管保羅和我覺得將 Altair BASIC 盡快交付給 MITS 的壓力很大,但我也非常開心地想出了讓一切都順利進行的方法。

微軟的誕生

最終,許多個不眠之夜之後,我們準備好了,向 MITS 的總裁 Ed Roberts 展示了我們的 BASIC 解釋器。

我們的演示非常成功,MITS 同意購買該軟件的授權。這對保羅和我來說是一個關鍵時刻。Altair BASIC 成為我們新公司的第一個產品,而我們決定將公司命名為 Micro-Soft。(我們後來去掉了連字符。)

你可以在我的回憶錄《源代碼(Source Code)》中閱讀更多 Altair BASIC 的起源故事,包括保羅在飛往阿爾伯克基的航班上完成部分代碼的經歷。

一想到這些代碼正是微軟半個世紀創新的起點,就感覺振奮不已。這些源代碼誕生在 Office、Windows 95、Xbox 或 AI 出現之前,即使這麼多年過去了,我仍然很高興看到它。

© THE END