尘世荣耀,就此消逝
差不多两年之后,克拉拉写道:“有一天,我看到了一个幽灵,它是一个不久前还生机勃勃的机器的骷髅——这台机器引起了巨大的争议。”
计算机,或者称为JONNYAC 、MANIAC,它还有一个更为正式的名字就是高级研究数值计算机(Advanced Study Numerical Computing Machine),总之现在已被束之高阁了。虽然并不是说计算机已经被掩埋,但是它被隐藏在了这栋大楼的密室里,而过去它曾是这里的王者。人们已经切断了它的生命之源——电源;人们还拆解了它的呼吸器官——空调系统。它依然有自己的小房间,但是只能穿过大厅才能进入。这个大厅过去是用来放置计算机的附属设备的前厅,但是现在这里变成了一个荒废的储藏室,放了一些空箱子、旧桌子和一些乱七八糟的设备——它们都是被废弃到这里来的,用不了多久就会“和大家一起被彻底遗忘”。
约翰尼去世后,克拉拉回到了普林斯顿。为了感谢冯·诺依曼大厅在普林斯顿大学所做的贡献,美国国防分析研究所在那里安装了一台新计算机。“那台旧的、原始的先驱者就这样静静地躺在那间脏乱的房子里——那儿就是它的墓穴,”她写道,“尘世荣耀,就此消逝。”
1955年,在冯·诺依曼离开普林斯顿前往华盛顿后,其他留在研究所的人们希望能够搭建一台新计算机,而且希望将他们在搭建第一台计算机时所积累的经验,在新计算机的搭建过程中付诸实践。“我们有非常多的想法,”毕格罗说,“可是这些想法从来没有付诸实践过。”然而,1956年2月29日,经研究决定:“高等研究院不再搭建新计算机。因此,绝大多数工程师想离开高等研究院,到其他地方谋求发展,而电子计算机必须从实验项目转变成一个工具,用来解决普林斯顿的科研团队在研究过程中所遇到的计算问题。”
“随着约翰尼的离开,计算机走下了神坛,”哈利斯·迈耶说,“而研究院本来就对MANIAC没有多大的兴趣,MANIAC也随之退场。”1957年7月1日,计算机被转移到了普林斯顿大学,随后,它一直被放置在古老小径的尽头。汉斯·梅吕(Hans Maehly)称:“与得到高等研究院资助的‘黄金时代’相比,出现了两大变化。”他从1956年7月1日开始担任代理主任,这是他在计算机转移到普林斯顿大学之后对奥本海默说的。“用户将可以使用无编码服务,不同之处在于我们必须准备通用程序的子程序(和过去的情况完全相反),而且需要有一台计算机记账,包括每小时收多少钱!”
与前5年大不相同的是,那时机器大部分时间都是有人占用的,而1957-1958年的机器日志上,经常出现机器“无人使用”的记录。除了发展更高层次的计算机语言,所有新项目都被搁置,正如梅吕所描述的那样:“用数学和英语来表述程序员所陈述的问题,然后转化为机器编码,这个过程没有必要进行人工干预。”剩下的工程师们还在努力开发易用的工具,如相对地址汇编程序ASBY,以及事后分析(POST-MORTEM)——这是一个调试程序,当代码“停错了地方、进入了循环,或者任何一个程序陷入死循环的时候”,它就会被激活。其中,FLINT是一个浮点解译程序。“一个解译程序,顾名思义,就是一个代码将一种新的‘语言’指令转变成普通的‘机器语言’指令,”梅吕解释道,“因此,搭载了FLINT的计算机虽然没有做什么改变,但是会像一台新机器那样运行。正因如此,我们才会把FLINT当作一台虚拟机来看待。”
拥有浮点运算能力的计算机能记录小数(或二进制)点的位置。如果没有浮点,程序员在进行计算的时候,必须“重新关注”数字。1945年11月围绕该问题进行了激烈讨论后,高等研究院的研究小组决定放弃浮点,让代码可以直接使用更多的内存空间,如巴里塞利不调用正常运算的方法,或者会占据所有可用的、二进制位的蒙特卡洛模拟程序。“冯·诺依曼认为任何能够如此使用计算机的人都足够聪明,能够理解整个相关过程的精度要求,”毕格罗说,“他从来没想过不擅长数学的人也能使用计算机。他认为计算机需要由像他那样优秀的数学家、物理学家和科研人员来运行。”浮点无法在整个空寂的宇宙里实现运作。
每个存储单元能存储一个40位的字符串,其中第一个(最左边的)位代表符号(0为正,1为负),其余39位代表数字本身。如果没有浮点,二进制点(相当于十进制算法里的小数点)就处于第二位。从左至右接下来的39个位置,代表2⁻¹(1/2)、2⁻²(1/4)、2⁻³(1/8),等等,一直到2⁻³⁹(1/549755813888)。因此,计算机只存储39个二进制位内从-1到+1之间的数字。1946年6月出版的《电子计算机逻辑设计初探》一书中已经对这样的原因进行了详细阐述——这样有利于计算机最大限度地利用可用的1024个40位的字符串。
如果是初级运算中的加减运算,那就是在一个单一操作下按39倍运算;如果是乘除运算,则是重复39次。这是因为加减运算都是精确运算,但是两个39位数相乘会生成一个78位数,且除法结果可能是一串任意长度的数字。这样,结果就必须取舍,也就不再精确了。“1946年,当计算非常精确的时候,就会出现这样的情况——计算机内出现的每个数字x都和另一个数字x′近似。”伯克斯、戈德斯坦和冯·诺依曼解释道。一个值迟早都会取39位数,而它的其他位将被舍弃。如何取近似值需要人为判断,而根据所选择的算法得出近似值则是计算的第39步。
FLINT对它的用户来说,就是将我们的机器变成了一个运行更缓慢却更简便的工具,而且机器的编程也更加容易了。同时,终端用户也不需要直接与机器进行通信。“采用的一般外部语言应当尽可能小地受到机器特殊性的影响;换句话说,它应该尽可能地与程序员的思维保持一致,”有人解释道,“用户完全不需要懂得机器语言,特别是在调试程序的时候。”人类并非必须学会使用机器语言编写代码,而是机器必须学会读取使用人类语言所编写的代码——这种趋势至今仍在持续。






本书评论