微軟誕生50周年,比爾?蓋茨撰文憶往昔,并發(fā)布了Altair BASIC源代碼
1975 年 4 月 4 日,比爾?蓋茨和保羅?艾倫在美國新墨西哥州阿爾伯克基市創(chuàng)立了微軟公司。到今天,半個(gè)世紀(jì)過去了,微軟早已成長為一家超級(jí)科技巨頭。
近日,比爾?蓋茨親自撰文回憶了微軟的誕生和他們的第一筆業(yè)務(wù),同時(shí)還通過一份 157 頁的 PDF 文件分享了他們?yōu)檫@項(xiàng)業(yè)務(wù)編寫的 Altair BASIC 源代碼。
順帶一提,比爾?蓋茨這篇博客的風(fēng)格相當(dāng)炫酷,值得訪問原文一觀。
- 博客地址: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)和我創(chuàng)造了微軟,因?yàn)槲覀兿嘈盼覀兊脑妇埃好繌堔k公桌和每個(gè)家庭都應(yīng)該有一臺(tái)計(jì)算機(jī)。
現(xiàn)在,已經(jīng)過去了五十年,微軟仍在繼續(xù)創(chuàng)新,讓生活更輕松、工作更高效。微軟成立 50 周年是一個(gè)巨大的成就,而這一切都離不開史蒂夫?鮑爾默(Steve Ballmer)和薩蒂亞?納德拉(Satya Nadella)等杰出的領(lǐng)導(dǎo)者,以及多年來在微軟工作的許多人。雖然我很高興慶祝這個(gè)周年紀(jì)念日,但達(dá)到這個(gè)里程碑卻讓人感到苦樂參半。我總是喜歡回顧微軟的歷史,夢想它的未來。但也很難相信,我生命中如此重要的一部分已經(jīng)存在了半個(gè)世紀(jì)!
我和保羅在哈佛的計(jì)算機(jī)室里面彎腰操作 PDP-10 的場景還恍如昨日,那時(shí)候我們編寫的代碼成為了我們新公司的首款產(chǎn)品。
保羅和我還是學(xué)生時(shí)就已經(jīng)愛上了計(jì)算機(jī)
直到今天,那些代碼依然是我寫過的最酷的代碼。
微軟的故事始于一本雜志:《大眾電子(Popular Electronics)》1975 年 1 月刊。當(dāng)時(shí)這本雜志的封面圖展示了 Altair 8800。
這個(gè)雜志封面改變了我的生活
Altair 8800 來自一家名為 MITS 的小型電子設(shè)備公司,是一款開創(chuàng)性的個(gè)人電腦套件,目標(biāo)是為計(jì)算機(jī)愛好者帶來計(jì)算能力。當(dāng)保羅和我看到那本雜志的封面時(shí),我們明白了兩個(gè)關(guān)鍵:個(gè)人計(jì)算機(jī)(PC)革命即將來臨,我們要參與進(jìn)去成為基礎(chǔ)。
Altair 8800
當(dāng)時(shí),PC 幾乎還不存在。保羅和我知道,如果創(chuàng)造可以讓人們編程 Altair 的軟件,就可以徹底改變?nèi)藗兣c這些機(jī)器的交互方式。因此,我們聯(lián)系了 MITS 的創(chuàng)始人 Ed Roberts,并告訴他我們有編程語言 BASIC 的一個(gè)版本可用于 Altair 8800 運(yùn)行的芯片。
但事實(shí)是:我們當(dāng)時(shí)還沒有寫出那個(gè)軟件。是時(shí)候開始工作了。
BASIC 的基礎(chǔ)
BASIC 由達(dá)特茅斯學(xué)院的兩位教授于 1964 年發(fā)明,其目標(biāo)是讓沒有計(jì)算機(jī)經(jīng)驗(yàn)的人也能輕松學(xué)習(xí)。只需很少的學(xué)習(xí)或技術(shù)能力,人們就可以用 BASIC 編寫自己的軟件 —— 從支票核對程序到井字游戲。BASIC 是我和保羅學(xué)習(xí)的第一門語言(至今仍在使用)。
我一直是個(gè)數(shù)學(xué)很好的學(xué)生;我發(fā)現(xiàn)數(shù)學(xué)所需的邏輯和解題能力能幫助我學(xué)習(xí)計(jì)算機(jī)編程。
像 BASIC 這樣的計(jì)算機(jī)語言與英語或任何其他語言具有相同的用途。就像你可以用英語在咖啡館點(diǎn)咖啡一樣,你可以用 BASIC 告訴計(jì)算機(jī)運(yùn)行程序、解決數(shù)學(xué)問題或執(zhí)行其他任務(wù)。
轉(zhuǎn)譯 BASIC
但有一個(gè)問題:計(jì)算機(jī)不會(huì)說 BASIC。而它們確實(shí)能用的語言又非常復(fù)雜且不直觀,因此用它編程非常困難。為了填補(bǔ)這一空白,保羅和我開始著手創(chuàng)建一個(gè) BASIC 解釋器(interpreter),它可以在程序運(yùn)行時(shí)逐行將代碼翻譯成計(jì)算機(jī)可以理解的指令。
我們考慮創(chuàng)建一個(gè)類似的工具,稱為編譯器(compiler),它可以先翻譯整個(gè)程序,然后一次性運(yùn)行。但我們認(rèn)為解釋器的逐行方法對新手程序員很有幫助,因?yàn)樗鼤?huì)立即對代碼提供反饋,讓程序員能夠隨時(shí)修復(fù)任何錯(cuò)誤。
當(dāng)你發(fā)現(xiàn)你的方法有效時(shí),那種感覺棒極了
保羅和我與 Ric Weiland 一起上學(xué),他后來成為微軟的第二名員工。
開始
保羅和我決定分頭行動(dòng)。
我們沒有 Intel 8080 芯片 —— 這正是 Altair 計(jì)算機(jī)運(yùn)行的芯片,所以保羅開始編寫一個(gè)在哈佛的 PDP-10 主機(jī)上模擬 8080 的程序。這樣我們不需要真正的 Altair,也能測試我們的軟件。
與此同時(shí),我則專注于編寫程序的主要代碼,而另一位朋友 Monte Davidoff 則負(fù)責(zé)編寫一個(gè)稱為數(shù)學(xué)包(math package)的部分。我們?nèi)找共煌5鼐幊塘藘蓚€(gè)月,才創(chuàng)造出我們之前揚(yáng)言已經(jīng)寫好了的軟件。
哈佛的 PDP-10
克服困難
那時(shí)候,計(jì)算機(jī)內(nèi)存很貴。給 Altair 加內(nèi)存的話,很可能內(nèi)存會(huì)比這臺(tái)計(jì)算機(jī)本身更貴,所以每個(gè)字節(jié)都很重要。我們認(rèn)為,如果我們能將我們的 BASIC 代碼壓縮到僅 4 kB,那么使用 BASIC 的 Altair 用戶仍然會(huì)有足夠的內(nèi)存來運(yùn)行他們編寫的程序(而不必再花更多錢)。
為了滿足這一限制,我使用了多種技術(shù)來優(yōu)化內(nèi)存使用,比如緊湊的數(shù)據(jù)結(jié)構(gòu)和高效的算法。這是一次有趣的挑戰(zhàn),盡管保羅和我覺得將 Altair BASIC 盡快交付給 MITS 的壓力很大,但我也非常開心地想出了讓一切都順利進(jìn)行的方法。
微軟的誕生
最終,許多個(gè)不眠之夜之后,我們準(zhǔn)備好了,向 MITS 的總裁 Ed Roberts 展示了我們的 BASIC 解釋器。
我們的演示非常成功,MITS 同意購買該軟件的授權(quán)。這對保羅和我來說是一個(gè)關(guān)鍵時(shí)刻。Altair BASIC 成為我們新公司的第一個(gè)產(chǎn)品,而我們決定將公司命名為 Micro-Soft。(我們后來去掉了連字符。)
你可以在我的回憶錄《源代碼(Source Code)》中閱讀更多 Altair BASIC 的起源故事,包括保羅在飛往阿爾伯克基的航班上完成部分代碼的經(jīng)歷。
一想到這些代碼正是微軟半個(gè)世紀(jì)創(chuàng)新的起點(diǎn),就感覺振奮不已。這些源代碼誕生在 Office、Windows 95、Xbox 或 AI 出現(xiàn)之前,即使這么多年過去了,我仍然很高興看到它。