第246节 子程序的设想

  面对道谢,艾伦·麦席森毫不在意的,朝外挥了挥手背,然后将话题引到了更感兴趣的方向:
  “上次从银河实验室弄来的图纸,我们已经组装了大半,兰恩你要不要去看看?”
  “当然!”
  兰恩很高兴的答应,对于自己成果在别处的应用情况,他向来比较好奇。
  在计算机应用上,尝到过甜头的邱奇实验室成员们,在更新设备方面很是积极。
  由于之前采购的伊扎德系列计算机,对邱奇实验室研究任务的巨大促进,所以包括邱奇教授在内,都很乐于见到更先进符文计算机的进驻。
  尤其是,以数学为主要研究方向的邱奇实验室,平时并没有多少更新设备的需求,也没有太多花销,因此实验室的资金极为充沛。
  对于计算机图纸和建造授权的高昂售价,他们没怎么在意。所以他们痛快的批准了采购预案,爽快的拿下了图纸和授权。
  然后,邱奇实验室在学校里,借调了几位会使用印刷符文设备的研究员,就在实验大厅一侧,单独腾出的另一间房子里,开始了埃德瓦克图纸的组装工作。
  这间新的计算室,就在放置伊扎德二号计算机的房间隔壁。
  “啊,原来是班纳瑞先生,欢迎……康拉德怎么没来?”
  福兰特见到艾伦带着兰恩走过来,热情的上来问候,然后他往兰恩身后探头探脑的看了一下,没有发现康拉德,于是向兰恩问道。
  福兰特和康拉德,有过许多交流。尤其是和计算机下棋这一点上,二人有巨大的共同语言,因此交情颇深。
  兰恩笑道:
  “康拉德没有来,他在实验室忙着改进埃德瓦克呢。”
  听到这个消息,福兰特脸上闪过一丝失望,接着迅速消失不见。福兰特快乐的对兰恩说道:“班纳瑞先生,你是来看新计算机的进度的吧?跟我来——它看起来可真棒!”
  这台计算机,已经组装近半。
  几位学徒正在里里外外的忙碌,旁边的一台实验室版印刷符文设备,正在低声嗡嗡的运行。
  每一块符文基板,兰恩都眼熟非常,除了外部框架似乎被做了些许改进之外,和银河实验室里埃德瓦克改进前的样子,没有什么区别。
  “你们给它取了什么名字?”
  兰恩问一旁的艾伦。
  “书架,这是它的绰号,本来有人提议叫‘旋风’、‘巨像’、‘列车头’这些,最终我们还是选了这个。因为它现在没装好的外形,太像一个大型书架了……”
  “……”
  “魔力炉我们也准备好了,特意和银河实验室买的同一型号,巨松二型魔力炉”,艾伦拍拍旁边,介绍道,然后他对一旁的福兰特说道:
  “福兰特,等你把最近的任务完成后,等他们两个出了师,你要不要去银河实验室进修下?”
  “啊?可以么?当然!当然!”
  福兰特忙不迭的说道。
  艾伦对兰恩笑道:“看吧,他很乐意的。”
  ……
  重新回到沙发上,艾伦略带郑重的对兰恩说道:
  “兰恩,我之前收到一封信,这里面的内容,我认为有必要和你说一下。”
  “?请讲。”
  看到艾伦的神情,兰恩瞬间镇定下来,专注的准备听艾伦接下来的话。
  “由于研究领域接近的原因,我和伦丁尼市里,联动凸轮大学的威尔克斯奥术师比较熟悉,经常有书信往来,不知道你是否听过这个名字。”
  兰恩插话道:“嗯……好像有点印象,他们是最早一批,过来购买埃德瓦克图纸的人。噢对了,他们的想法是将他们手上的中继符文计算机,直接更换为埃德瓦克,所以他们之前还购买过银河实验室的伊扎德一号。”
  “嗯,就是他们。”
  艾伦点头说道:“威尔克斯他们按照埃德瓦克的图纸,组装好了一台计算机,然后迫不及待的在上面开展自己的研究,不过他告诉我,他们起初遇到了问题。”
  “由于这是存储程序计算机,所以它的性能极为强大,但是这也造成了一个后果:如果需要完成的任务非常复杂时,就需要拼了老命编写能够在它上面运行的程序。”
  “很不巧,威尔克斯他们需要计算的,就是这样的程序。于是,即使有微指令,不用直接操作机器码,编写这种程序仍然是一场噩梦。”
  “用威尔克斯的原话,就是:‘那时候,我正试着让自己编写的第一个真正意义上的程序运转起来。有一天,我像往常一样从机房出来,准备去操作打孔机,突然站在楼梯转角处犹豫了,心里意识到,单是给自己的程序除错,可能就要花掉我大半辈子的时间。’”
  艾伦学着兰恩未谋面过的威尔克斯,用他的说话口气描述道。
  “于是,威尔克斯和他的同伴戴维·惠勒,一道开始着手解决这个问题,他们想到了一个美妙的方法——编写子程序。”
  “子程序?”
  “是的,兰恩,他们意识到,许多程序在运行的过程中,都需要重复执行某个操作——比如在某个复杂的数字运算中,需要多次进行开平方操作。”
  “如果每次开平方都得把平方根代码写上,那么程序当中就会出现许多重复代码,占用不必要的空间,使程序变得庞大而低效。”
  “为了简化编程过程,威尔克斯的方法是建立子程序库,也就是将常见的函数单独列出,集中起来,就像把常见的词语及其释义收录在词典中一样。”
  “为此他们建立了一套公共的纸带系统,一旦程序在运行的过程中需要使用到某个常见函数,计算机就会在子程序库中‘查找定义’,执行相应的子程序代码,根据输入值进行运算,再将运算结果返回。”
  “他认为,这种方式很好,将子程序看做对基本指令集的扩展,后续的计算机中,就没有必要在为此再嵌入新的指令集,譬如一个特殊的开平方函数。”
  “我们商讨了这套方案,感觉很合适目前的情况,所以我才告诉你这些。”