在她到来的6个月里,海军上尉格雷斯·霍珀将自己从一个计算机新手转变成了该领域的一名新秀专家。她所发明与理查德·布洛赫成功使用的编码系统满足了由现代战争必需品所产生的不断增加的需求。战时情况要求哈佛团队以一种在和平时期少有经历过的速度来工作。到1945年冬,马克一代已经完成,并且95%的时间都在运转,考虑到几乎处于同一时期内的宾夕法尼亚大学的ENIAC所遭遇的操作难题,这真是令人难以置信。 尽管马克一代在可靠性方面取得了巨大进步,但是其硬件却对速度强加了理论限制。主要传动轴的循环运转设定数据处理的速度为300毫秒。数据和指令输入的速率受限于传送机制的机械速度,而且信息必须按照顺序输入——这就是说,纸带无法为了输入先前的命令或数据而自行倒退。 纯粹出于需要,霍珀和布洛赫开始研究创新编码方法以提高硬件的性能。“早在1944年,我们就开始组合一些能将准确程序编写得更多和更快而且越发简单化的东西。”霍珀回忆说。而且,与她在整个事业中所取得的诸多计算机领域的突破进展一样,“熟练的”反复实验转变成了革新。“没有理论,没有更高等的数学,”霍珀说,“没有计算机的未来,只有解决那些问题。”战争其实变成了发明之母。 利用他们在硬件方面的知识,霍珀和布洛赫意识到,一点点编程的精巧设计就能够在传动轴旋转次数最少的前提下将计算机的数据处理能力最大化。例如,对于一次需要转动25圈的运算来说,事实上只有5圈在计算机的主线上产生了功效。霍珀和布洛赫开始在指令中嵌入额外的运算,确定嵌入的编码不会对正在进行的基本运算造成相反的影响。例如,打印命令可以嵌入到乘法运算中。很快,这变成了编写可以将嵌入指令的数量最大化的程序的标准用法。结果,处理时间减少了36%之多。因为马克一代相对缓慢的处理速度,36%很轻易地就能够累积成数个星期的时间节省。 “黑客”的最初形式34能够创造一些非常高效率的编码,但是它也会产生有害的后果。例如,嵌入了额外编码的程序的逻辑流程会变得非常复杂。事实上,这个流程复杂到了操作员几乎不可能译解出究竟发生了什么的程度。霍珀承认,当她试图处理布洛赫的入侵时,她甚至也感到不知所措。“迪克曾经一夜之间改变了马克一代的指令,”她回忆说,“如果他想到了一个能够将他的某个问题简单化的不错指令,他就会输入其中,然后第二天早上,我们所有的纸带就都不能用了。” 复杂的编码同样也使得对计算机停止运转的原因分析变得很困难。霍珀和布洛赫两人都很难译解他们自己造成的结果,尤其是在编写密码和执行编码之间的充足时间已经过去了。为了设法解决这个问题,霍珀在其编码中制定了一种记录方法。她在用来穿孔的主导程序纸上写上与每行编码相对应的符号和方程式。随着哈佛队伍的不断壮大,布洛赫和其他人很快就采用了这种方法,而程序记录最终编程了编码师和程序员的常规做法。 其他加速数据处理时间的技巧没有这般精妙。霍珀使用了一种特别有趣的方法来控制“四舍五入”在小数点后23位之内。霍珀将其硬件知识应用到了创造理想的四舍五入的效果,即通过重新装备计算机,而不是编制精确度有限的密码:“我拉动继动器,我拉动单元中较低的十二个位置继动器。”这种做法一直很有效,直到有一天晚上,她忘记了重新连接计算机。下一轮值班的操作员对马克一代的奇怪行为迷惑不解,于是打电话请霍华德·艾肯来诊断问题所在。愤怒不已的艾肯自此禁止霍珀或其他人通过重装硬件来达到他们的编码需求。