微软50周年:比尔·盖茨忆往昔,公开Altair BASIC源代码

比尔·盖茨发文庆祝微软50周年,并公开了公司首款产品Altair BASIC的源代码,回顾了他与保罗·艾伦的创业历程。

原文标题:微软诞生50周年,比尔?盖茨撰文忆往昔,并发布了Altair BASIC源代码

原文作者:机器之心

冷月清谈:

为庆祝微软成立50周年,比尔·盖茨撰文回顾了公司创立之初的故事,并发布了Altair BASIC的源代码。文章讲述了盖茨和保罗·艾伦在1975年受到《大众电子》杂志的启发,预见到个人电脑革命的到来,并着手为Altair 8800编写BASIC解释器的过程。他们克服了内存限制等技术挑战,最终成功向MITS公司演示并授权了该软件,这标志着微软的第一个产品诞生。盖茨在文中强调了BASIC语言的易用性及其在个人电脑发展中的重要作用,并分享了优化代码以适应早期计算机有限资源的经验。此外,他还提到了史蒂夫·鲍尔默和萨蒂亚·纳德拉等领导者对微软的贡献。盖茨表示,能够见证这些代码成为微软半个世纪创新的起点,他感到非常振奋。

怜星夜思:

1、在那个年代,4KB的内存限制对编程来说是巨大的挑战。除了文章中提到的紧凑数据结构和高效算法,你觉得还有哪些方法可以有效地优化内存使用,在极小的空间里发挥最大的效能?
2、文章中提到BASIC语言让没有计算机经验的人也能轻松学习编程。你认为在现代,还有没有类似的编程语言或者工具,能够让完全没有编程基础的人快速入门并创造出有趣的应用?
3、比尔·盖茨提到他和保罗·艾伦当时是“先吹牛,后实现”,你认为在创业初期,这种“大胆的承诺”对于吸引资源、推动项目进展有多重要?有什么潜在的风险?

原文内容

选自 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 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 出现之前,即使这么多年过去了,我仍然很高兴看到它。



© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:liyazhou@jiqizhixin.com

4KB!感觉回到了石器时代… 我猜可以考虑使用查表法,把一些常用的计算结果预先算好存起来,用的时候直接查表,避免重复计算,也能省不少内存,不过缺点就是需要提前规划,而且只能用于计算量不大,结果有限的情况。

现在低代码/零代码平台挺火的,像宜搭、钉钉搭这种,通过图形化界面拖拽组件就能搭建应用,完全不需要写代码,对业务人员特别友好,能快速把想法变成现实。我觉得和当年的BASIC有异曲同工之妙。

我觉得除了文章里说的,还可以用汇编语言来写关键部分的代码,汇编更接近机器语言,能更精细地控制硬件资源,优化内存使用肯定更有效率。不过就是开发难度会高很多,需要对硬件架构有深入的理解。

Python必须拥有姓名!语法简洁易懂,库又非常丰富,能做的事情太多了。而且现在有很多针对Python的入门课程和教程,跟着学一段时间就能写出一些简单的脚本和应用,成就感满满。

我觉得这体现了一种“增长思维”。敢于设定高目标,才能激发更大的潜力。当然,光有目标还不够,还需要脚踏实地地去实现。创业就像跑马拉松,需要激情,更需要耐力。如果只是为了吸引眼球而夸夸其谈,最终只会自食其果。

这不就是“先开枪,后瞄准”的策略吗?在快速变化的市场中,快速行动往往比完美计划更重要。先大胆承诺,可以逼迫自己快速学习和成长,倒逼团队提升执行力。但风险也很明显,如果能力跟不上,承诺无法兑现,很容易陷入困境,甚至导致创业失败。

Scratch了解一下?这可是专门为青少年设计的编程语言,用搭积木的方式编程,简单有趣,还能做出各种小游戏和动画,孩子玩得可high了。当然,对于成年人来说可能有点过于简单了,但作为入门还是不错的。

当年搞嵌入式的同学可能会比较有发言权。我猜想还可以用位运算,把多个状态或者标志位塞到一个字节里,充分利用每一个bit,这样也能省下不少空间。再有就是代码压缩技术,把代码本身压缩起来,运行时再解压,也能在一定程度上缓解内存压力。

我觉得在创业初期,适当的“吹牛”是必要的,可以理解为一种愿景的表达。它可以帮助你吸引投资人、合作伙伴甚至早期的用户。但要把握好度,不能过度夸大,更不能欺骗。承诺要建立在一定的实力基础之上,否则很容易被打脸,失去信任。