Datawhale分享
作者:比尔·盖茨,编辑:机器之心
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 8800
当时,PC 几乎还不存在。保罗和我知道,如果创造可以让人们编程 Altair 的软件,就可以彻底改变人们与这些机器的交互方式。因此,我们联系了 MITS 的创始人 Ed Roberts,并告诉他我们有编程语言 BASIC 的一个版本可用于 Altair 8800 运行的芯片。
但事实是:我们当时还没有写出那个软件。是时候开始工作了。
BASIC 的基础
BASIC 由达特茅斯学院的两位教授于 1964 年发明,其目标是让没有计算机经验的人也能轻松学习。只需很少的学习或技术能力,人们就可以用 BASIC 编写自己的软件 —— 从支票核对程序到井字游戏。BASIC 是我和保罗学习的第一门语言(至今仍在使用)。

我一直是个数学很好的学生;我发现数学所需的逻辑和解题能力能帮助我学习计算机编程。
像 BASIC 这样的计算机语言与英语或任何其他语言具有相同的用途。就像你可以用英语在咖啡馆点咖啡一样,你可以用 BASIC 告诉计算机运行程序、解决数学问题或执行其他任务。
转译 BASIC
但有一个问题:计算机不会说 BASIC。而它们确实能用的语言又非常复杂且不直观,因此用它编程非常困难。为了填补这一空白,保罗和我开始着手创建一个 BASIC 解释器(interpreter),它可以在程序运行时逐行将代码翻译成计算机可以理解的指令。
我们考虑创建一个类似的工具,称为编译器(compiler),它可以先翻译整个程序,然后一次性运行。但我们认为解释器的逐行方法对新手程序员很有帮助,因为它会立即对代码提供反馈,让程序员能够随时修复任何错误。

当你发现你的方法有效时,那种感觉棒极了

保罗和我与 Ric Weiland 一起上学,他后来成为微软的第二名员工。
开始
保罗和我决定分头行动。
我们没有 Intel 8080 芯片 —— 这正是 Altair 计算机运行的芯片,所以保罗开始编写一个在哈佛的 PDP-10 主机上模拟 8080 的程序。这样我们不需要真正的 Altair,也能测试我们的软件。
与此同时,我则专注于编写程序的主要代码,而另一位朋友 Monte Davidoff 则负责编写一个称为数学包(math package)的部分。我们日夜不停地编程了两个月,才创造出我们之前扬言已经写好了的软件。

哈佛的 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 出现之前,即使这么多年过去了,我仍然很高兴看到它。
(文:Datawhale)