大多数有关发明的故事都围绕着一个特定的有形实物,如飞机或汽车。有形实物适合于创造者的描述,并且随着时间的推移而演变,在科技历史的背景下,其重要性越发明显。编著一本关于编程的发明的书也面临着其本身的挑战。程序其能够从电脑屏幕上打印出来或看到,尽管从这个意义上来说,它是“有形的”,但是“编程”却是编写程序的动态过程,所以编程的发明使得描述一个行为或一种活动的发明与描述一个事物一样很必要。 于是,历史学家大都忽视编程的历史,这就没什么大惊小怪的了。直到20世纪80年代和90年代初,威廉·阿斯普雷(William Aspray)、南希·斯特恩(Nancy Stern)、迈克尔·马奥尼(Michael Mahoney)、保罗·塞卢兹等人才开始研究计算机的历史。5他们的早期作品大多数着重于机器和制造这些机器的人。回顾历史,对硬件的强调到了荒谬的程度,直到1970年大量的计算机产业生产力投入到编程和软件开发中。到1985年,软件仍然占一套计算机系统成本的90%,而微软很快便在资本总额和影响力上击败了IBM。 第一次宣传编程历史的努力是1978年由美国计算机协会(Association for Computing Machinery)主持的一次会议。由资深程序员琼·萨米特(Jean Sammet)主持的为期三天的会议要求编程先驱们深入钻研他们的私人笔记本和日记,意在重建他们都曾是其中一部分的计算机历史。此次会议的主要发言人不是别人,正是格雷斯·霍珀。美国计算机协会在1993年召开了第二次编程语言历史会议。同样的,历史的创造者展示了他们的论文,并讨论了他们作品的历史性意义,而不是让专业的历史学家去讨论。幸运的是,这个历史意义重大的组织自上一次美国计算机协会会议以后就已经证明了人们对计算机和编程的兴趣越来越浓厚了。另外,2001年4月,关于软件历史的一次有许多人出席的会议在帕洛·阿尔托(Palo Alto)召开。 在设计第一代大型计算机的过程中,编程属于事后部分。因此,编程的复杂度是创始发明者始料未及的。在对马克一代和马克二代计算机进行编程的过程中,专家组不得不将每个问题都简化成一系列数学步骤。接着,每个步骤会以代码的形式呈现出来,编译出一种一行一行的译文,而这种译文会被传递到纸带上,并且能以手动的方式对其进行错误检查。直到约翰·莫克利(John Maunchly)和格雷斯·霍珀在1953年发表了一篇有关编程对未来计算机发展的影响方面的论文,硬件设计才开始考虑到编程的急需性。 前三位现代“程序员”是罗伯特·坎贝尔(Robert Campbell)、罗伯特·布洛赫(Robert Bloch)和格雷斯·霍珀。早在1944年,这三位哈佛学者就开始试图寻找更加有效编写和运行代码的方法。在战时的压力下,他们制定了一套相对有效和精确的系统的编码方法。尤其是霍珀和布洛赫对子程序、分支技术、压缩码流和调试程序的最早阶段进行了试验,并且他们还将这些技术应用到了范围广阔的科技和工程问题的解决中。此外,霍珀和布洛赫建立了一个信息处理系统,这个系统在昼夜不停地运作的同时,还达到了非常高的效率和准确性。 霍珀、坎贝尔和布洛赫在哈佛所研究出的编程技巧却在直到与宾夕法尼亚大学所取得的硬件突破相结合之后才得到重视。正如电子数字积分计算机(Electronic Numerical Integrator and Calculator,ENIAC)首次验证的,电子计算将运算速度从物理领域脱离出来。霍华德·艾肯的机械硬件能够每秒完成3次运算,而ENIAC却能处理5 000次运算。然而,尽管其内部运转速度达到惊人之快,但是以现今对词汇的定义看来,ENIAC并不是可编程的。 若要约翰·冯·诺依曼来想象一种将马克一代的编程优势与ENIAC的电子电路融合在一起的技术,那么他需要拥有十分灵活的头脑。1944年秋,冯·诺依曼与霍珀、布洛赫在剑桥就曼哈顿项目的核内爆问题进行了合作,而在冬季和春季,他与小J. P. 埃克特(J. Presper Eckert Jr.)和约翰·莫克利在宾夕法尼亚大学就下一代ENIAC问题进行了商讨。在这之后,冯·诺依曼便开始着笔,并且描述了一种计算机体系结构正在经历的变革。记载于1945年6月30日的“关于EDVAC的报告(初稿)”(EDVAC即电子离散变量自动计算机)概述了一种通用存储程序计算机的结构设计,并且成为了下一代计算机的运作蓝图,包括英国的电子延迟存储自动计算器(EDSAC)和访问控制条目(ACE)机器,以及美国的通用自动计算机(UNIVAC)和立即存取存储器(IAS)。 内存储器允许复杂且冗长的操作序列能够以电子速度而非机械速度来执行。这种存储程序结构将ENIAC的电子速度与马克一代的自动程序控制和编程能力结合在一起。后来“冯·诺依曼体系结构”成为计算机革命的理论基础,但是格雷斯·霍珀和哈佛的编程工作人员在之前并未被当做这个概念建立的重要参与者。这并不是说我们应该对冯·诺依曼产生创意的智力水平持怀疑态度。然而,创新概念并不是凭空出现的,而且,在1944年秋,冯·诺依曼对处于发展初期的计算机领域拥有其独特的远见。他能够指出计算机项目的优势与劣势所在,能够在共同的基础上设计出一种新的技术变体。艾肯回忆说:“冯·诺依曼拥有吸收和进行巨大转变的神奇能力,接着,他会谈论事物,谈论概念,而不担心它们是从何而来的。”(有趣的是,冯·诺依曼在“初稿”中提到了艾肯,却并未提及埃克特和莫克利。) 战后,霍珀永久地告别了她在瓦萨学院的职位,加入了海军后备队,并且继续与艾肯一起建立哈佛计算实验室。除了负责马克一代和编写其操作说明,霍珀也渐渐成为了艾肯最信任的助手。她忙于拜访学者、商人和对提高其自己计算能力有兴趣的军官,代表计算实验室参观其他大型的计算项目,并在艾肯不能出席的场合代表其发言。她也帮助组织了在哈佛举行的两次标志性的计算机会议,一次是在1947年,一次是在1949年。值得一提的是,霍珀在哈佛开始声名鹊起之时,正是许多女性在战后复员的压力下被迫离开公共生活的时候。 然而,作为发明家的霍珀,其最重大的贡献并不是出现在哈佛的校园里,而是在1949年至1960年间,当她工作在位于费城的EMCC公司的时候。尽管霍珀在1971年之前一直与EMCC公司有联系,但是1949年至1960年此期间才是关键,原因有很多。第一也是最重要的一条是,那段时期正好与霍珀发表关于编程和计算机设计的创意性论文的时间吻合。12这些论文描述了一系列让人们得以通过语言而不是二进位1和0来与进行电脑交流的编程进展。13霍珀的成就建立了在20世纪50年代以自动编程著称的领域,而自动编程从那一刻起便影响了编程和软件开发的方向,并且奠定了未来高级计算机语言的基础。第二,这段时期标志了编程从基本上只是委派给女性的辅助性工作过渡到了阻碍计算机产业进一步发展的主要“绊脚石”14。如果编程效率不能以相近的速率提升,那么无论软件计算能够多快都没有用。而且,大多数用户无法利用计算机的计算能力,因为他们缺少有用的应用程序和成本,缺乏熟练到能制作出此应用程序的高级数学人才。霍珀的发明打破了人与机器交流的障碍,使得计算机编程领域“民主化”,并且推动了20世纪60年代技术的大众化转型。 尽管有时候很难确定特定发明背后的动机,但显而易见的是,天才程序员的稀缺,现有编程技术的千篇一律所带来的个人困惑,以及雷明顿·兰德公司高级管理层无法提供支持计算机客户的资源,这些都促使了霍珀去发明诸如能够让计算机有效自动编程的编译器这样的技术和技巧。有趣的是,在她的A0编译器进化为A1和A2的同时,霍珀关于发明的理由也随着改变了。编译器更多的是减少编程成本和数据处理的时间,较少考虑到解除程序员编码单一化的难题。 霍珀对她的发明的动态展示与不断演化的革新方法相符,此革新我指的是分散式发明。这个术语描述了霍珀独特的程序开发风格,其原型已经应用于不断扩大的程序员和用户群中。这个不断扩大的发明网穿越了组织的界限,为霍珀提供了大量的反馈信息,她后来将这些反馈应用到了更加高级的样品中。 在20世纪50年代,霍珀使自己成为了在不断演变的计算机产业中的一位代言人。为了对其发明孜孜不倦的拥护者,霍珀提供了一个特别的未来展望,不仅仅是为了那些工作在计算机行业中的人,而且也为了潜在的用户。开发一种新技术只是成功的一半;让人们使用它而不只是一种选择才是成功的另一半。“以我的观点看,”琼·萨米特在1978年的首次美国计算机协会编程语言历史会议(ACM History of Programming Languages Conference)的欢迎辞中说,“格雷斯·霍珀在从技术和管理角度推销更高级别的语言上所付出的努力无人能及。”此论述赢得了雷鸣般的掌声。
优雅人生——编程的发明
书名: 优雅人生
作者: Kurt W·Beyer
出版社: 机械工业出版社华章公司
原作名: Grace Hopper and the Invention of the Information Age
译者: 包艳丽 | 刘珍 | 陈菲
出版年: 2010-12-25
页数: 256
定价: 39.00元
装帧: 平装
ISBN: 9787111325864