为芯片编写程序
与此同时,德州仪器公司与CTC公司签订了合同,并且交付了一款微处理器。德州仪器公司和英特尔一样,紧盯着微处理器的市场。当时德州仪器公司的盖里·博恩刚为一个叫作“单片计算机”的东西申请了专利。这样一来就出现了三款微处理器鼎立的情景。
然而,英特尔的市场部对微处理器客户支持工作量巨大的担忧不无道理。比如说,用户需要芯片功能的说明文档、芯片能识别语言的说明文档、芯片使用的电压、发热情况和其他一系列问题的说明文档。总得有人来编写使用手册吧。英特尔将这一工作交给了一位名叫亚当·奥斯本的工程师,后来他在使计算机走向个人化方面做出了巨大贡献。
另一种重要的客户支持形式是微处理器软件。通用计算机或通用处理器的缺点在于,没有程序就什么也做不了。作为通用处理器,芯片需要程序,程序会给出指令让处理器运行起来。为了编写程序,英特尔首先为两款微处理器芯片分别装配了一台完整的计算机。这些计算机不是商用机器,而是专门用于开发的系统,即为处理器写程序的工具。这些计算机也可算是微型计算机,不过当时没有人使用这一叫法。
率先开发这类程序的人当中,有一位是距硅谷不远的加州太平洋丛林镇的海军研究生院的教授,名叫加里·基尔代尔。基尔代尔和奥斯本一样,也在个人计算机开发领域起到了重要作用。
加里·基尔代尔 为英特尔4004微处理器编写了第一门编程语言以及第一个控制程序,这个程序后来成为个人计算机领域中最常用的操作系统。(资料来源:汤姆·奥尼尔)
1972年年末,基尔代尔就为4004处理器写过一门简单的语言。它基本上是个程序,能将神秘的命令翻译成更神秘的1和0,它们构成了微处理器的内部指令集。虽说该程序是专为4004处理器编写的,但它实际上是在一台巨型的IBM360型计算机上运行的。有了这个程序,用户可在IBM的键盘上输入各种命令,并生成可输出至4004处理器的指令文件,当然,前提是有一台4004处理器与这台IBM360型计算机联机。
要想将4004处理器和其他机器联机可不是一件容易的事。这需要将4004接入一块特制电路板上,而这块电路板本身需要与其他芯片或电传打字机之类的设备相连接。英特尔当时的开发系统就是为了解决这类问题而创建的。于是,基尔代尔被吸引到了配有这类开发系统的英特尔微机实验室。
最后,基尔代尔与英特尔签订了一份合约,承诺为该公司编写一门语言。与由微处理器指令集构成的低级机器语言相比,微型计算机编程语言(ProgramingLanguageforMicrocomputers,简称PL/M)算是高级编程语言。如果用户使用PL/M语言编写程序,那么这个程序可在4004处理器、8008处理器或是英特尔未来可能生产的其他处理器上运行。这将加快编程速度。
但是编写这门语言并不是一蹴而就的任务。要想知道缘由,你需要先思考计算机语言的运作原理。
计算机语言是计算机能识别的一套命令集。实际上,计算机只能对编入其电路或刻在其芯片上的固定命令集做出反应。编写一门计算机语言,相当于编写一个将用户能理解的命令翻译成机器能够使用的命令的程序。
微处理器不仅体型微小,能够进行的逻辑操作也很有限。因为它们靠尽可能少的逻辑来工作,所以为它们编程很难。为这类机器设计任何编程语言都不容易,更遑论如PL/M这样的高级语言了。基尔代尔的一位朋友兼同事后来谈起他这一选择时说,基尔代尔当初选择这一语言主要是因为这种语言极难编写。正如他之前或之后的许多了不起的程序员和设计师一样,基尔代尔搞这类设计主要是为了挑战自己的才智。
话说回来,基尔代尔当时开发的最重要的软件其实比这门语言要简单得多。