第一批程序员
1945年圣诞节,克拉拉首次参观了洛斯阿拉莫斯国家实验室。她从普林斯顿坐火车向西行,途经芝加哥时坐上“超级老大号”列车。“希望你星期六早上能到拉米,”12月15日,约翰尼发电报说,“如果可能的话,把骑具和滑冰用具带上,这个机会非常好。”这里让她一见倾心。山脉、骑马、滑雪、班德利尔(Bandelier)的普韦布洛遗址(Pueblo Ruins),前洛斯阿拉莫斯男校的小屋(约翰尼是这里的贵宾,可以随时入住),欧洲人(包括匈牙利人)在此享受的优势地位,频繁自发组织的聚会,深夜的扑克游戏——所有这些都唤起她对蒙特卡洛和布达佩斯的记忆。洛斯阿拉莫斯有普林斯顿缺乏的东西。克拉拉和约翰尼之间的火花重新燃起,他们开始合作开发程序,这些编码将赋予新型计算机生机,并让氢弹成为现实。
“新型数学工具并非约翰尼想在这方面做的唯一实验,”克拉拉回忆道,“他也想看看对这一领域经验很少或者完全没有经验的人,会怎样使用这种做数学的新方法。在这个实验中,他需要一个实验对象,最好是数学白痴,符合这一条件的理想对象无疑近在咫尺,那就是我。”克拉拉在高中通过了代数和三角学的考试,不过仅仅是因为“我的数学老师比较欣赏我的坦白:我真的对数学一窍不通”。
“在这台机器完工前的很长时间里,我都充当着约翰尼的实验小白兔,”她说,“其中有很多很多的乐趣。我学会了如何把代数方程转化为数值形式,然后再把它的数值形式转化为机器语言。机器语言必须遵循一定的顺序。机器按照时间的先后次序或不断循环执行机器语言,直到完成问题的一个部分,然后继续进行一定的计算过程。一切按部就班。”克拉拉发现编程是一个“非常有趣且相当复杂的拼图游戏”,她很快成为首批程序员中的一员,这种新职业在今天已经相当普遍了。
“首先,必须让这台机器清楚原委,并一次性给出所有要执行的指令,然后让其自行运作,直到执行完所有指令,”克拉拉解释说,“其实,用于特殊用途的高速自动机器早已存在,但是它们只能演奏一首曲子……像一个音乐盒……相比之下,‘通用机’就像是一种乐器。”
今天的程序员并没有将这些便捷视为理所当然:编译器、操作系统、相对寻址、浮点运算。每一个步骤都必须指定存储单元,重要数字要随着计算过程的展开而进行调整。“实际上,克拉拉为核弹设计所做的准备编程,”詹姆斯·波默林解释道,“换句话说,你必须接受这种机器,这种机器也必须接受你。”
克拉拉在战时所从事的人口统计工作,已经为她日后协助约翰尼编码做好了准备。另一方面,约翰尼也开始了编码工作。特定核弹设计是否爆炸(如果爆炸,如何有效爆炸)的问题取决于其产生中子的速度。另外,死亡率和移民是否也具有调节作用。“统计问题将迎来一种全新的处理方法,”1945年1月,冯·诺依曼曾这样解释,而ENIAC当时尚未建成,“很有可能,大多数这样的问题都将通过做真实的统计实验来解决:通过计算成百上千次特例以及记录它们的统计分布。”已经有人使用统计方法来处理棘手的物理问题,包括20世纪30年代的恩里科·费米(Enrico Fermi)。不过这项技巧还未命名,也没有得到证明。斯坦·乌拉姆在冯·诺依曼和尼古拉斯·梅特罗波利斯的帮助下完成了这两件事。
本书评论