1967还是1968年高中快毕业的时候,我的电子学老师(此生所遇最好的一位老师)介绍我到位于森尼韦尔的喜万年公司参与电脑编程工作,因为我在学校时已经掌握了全面的电子学知识。McCollum先生每年都会为掌握了扎实电子学知识的学生安排实习,将他们送入当地的公司。在这些公司的工程师和项目的帮助下,这些高中生可以获得实习经验。当时我在IBM电脑上学习和使用FORTRAN语言进行编程。 也就是在那一年我第一次接触了BASIC语言。学校里那时并没有电脑,但通用电气公司有,我想他们是利用那个带调制解调器的终端来提升他们的分时业务的。我们中几个数学比较好的学生拿到了几页说明,然后用BASIC语言写出了很简单的几个程序。我觉得BASIC简单易学易上手,但是当时那台电脑只在我们学校放了几天。数学老师还让我写一份报告来说明电脑对学校会有什么好处。报告里我从逻辑思考和解决问题这两方面进行了阐述,但是学校之后并没有在分时程序中有进一步动作。 大学时我的编程语言主要是FORTRAN,PL-1和Algol。当然,我在学校和家里也经常使用汇编语言来编程。 在Homebrew电脑俱乐部的时候,有几本被我奉为“圣经”的书籍。一本是Ted Nelson的《Computer Lib/Dream Machine》,描述了未来世界里的超链接。他的想法像科幻小说,但我们都觉得那些想法在技术上是可行的。他如此看待未来的电脑运作,而我们就是他的信徒。另一本“圣经”就是《101 Games in BASIC》。我是一个电脑游戏迷,曾想过以后要有电脑的话我会要把所有游戏都放入电脑玩一遍。感觉让我相信,这将是开启家用电脑革命的关键所在。我身体中非商人的那一部分让我远离谈论市场和财政。 电脑为公司处理财政工作,这些电脑售价昂贵,而一台真正的电脑为此需要些什么,我并不是十分清楚。那些电脑物有所值。而我所清楚知道的只有眼前的东西。在惠普工作的时候,我在计算器上从事仿真芯片设计和逻辑设计。我的电脑必须能做这些事。我的电脑还必须能够玩游戏。至少我肯定一点,我的电脑应该能做那些昂贵的电脑能做的事,但我还不是十分肯定。 游戏的关键所在就是BASIC。那时比尔·盖茨在电子学领域之外无人知晓。俱乐部里的人都知道他已经为英特尔的微处理器编写了BASIC。经过深思熟虑,我认为要让我的电脑好用(受欢迎)的话,必须使用一款高级语言,而这款语言只能是BASIC。开启家用电脑革命的不会是使用FORTRAN的程序员。 学习BASIC并为之写一个解释器 我当时对BASIC几乎一无所知,高中有过的三天接触只让我勉强记住了它的每行语句前面有行号。于是我挑了一本BASIC手册开始熬夜研读,在笔记本上记下了这种语言的各种命令。而之前我从未学习过如何编写编译器(或解释器)。还好我在麻省理工的朋友Allen Baum给我寄了一些这方面的影印讲义,因此我也可以声称我是毕业于麻省理工的,哈哈哈。大二的时候,我在数学分析课上努力自学如何编写FORTRAN编译器,虽然我根本不懂编写编译器的相关知识。那时起,我开始为我的6502微处理器编写代码,逐行读取用户输入的命令,进行分析和错误检查。 我懂语法图知识,于是为这个BASIC创建了一份语法图。那时我并不知道HP BASIC和DEC BASIC大相径庭,后者正是《101 Games in BASIC》中使用的,也正是比尔·盖茨编写的那个BASIC。我以为所有的BASIC都是一样的,但是在处理字符串时,惠普的BASIC非常不一样。然后我完成了语法图,完整的语法图。我隐约觉得如果我能为6502编写第一个BASIC的话,我将会成为一颗明星,在业界会小有名气,就像比尔·盖茨那样。为了节省一些时间,我将浮点运算从语法图中剔除了。在为惠普工作时,我需要编写基于整形的模拟,而游戏正是基于逻辑的,也就是基于整形的。放弃浮点小数为我节省了几个星期的时间,让我更快地成为6502上开发出BASIC的第一人。你会看到在Apple II上我使用了浮点运算,但是在BASIC上我从没有使用过。手动写代码的时候,要更改位于中间位置的固定地址上的东西是十分困难的。
|