当前位置: 首页 > news >正文

Grace Hopper:编译语言之母、千年虫制造者、世界第三位程序员(COBOL语言创始人)、海军少将

(本文转自51CTO,原文地址:http://developer.51cto.com/art/200912/171577.htm)

编者按:1992年1月1日,美国海军少将,Grace Hopper(格雷斯·霍珀)博士在睡梦中与世长辞。她对计算机领域的贡献不可磨灭,她发现了计算机程序中的第一个Bug,同时也创造了计算机世界最大的 Bug——千年虫(Y2K);她实现了第一个编译语言和编译器;创造了世界上第一种商业编程语言COBOL并为之后的高级程序设计语言定义了模型。

 


 

1906年,Grace Hopper出生在美国纽约一个中产阶级家庭。Grace的童年是在身为美国海军退役将军的曾祖父身边度过的,那时她常常坐在曾祖父的腿上,抚摸军服上的各种装饰,瞪大眼睛,听老人讲惊险的战斗故事。这些,可能就是她选择海军作为自己终身职业的原因。

 

Grace在少年时代就才华出众,特别是数学和物理方面表现超群。她在1928年获得美国优等生荣誉,同年,取得了数学物理学士学位。利用奖学金,Grace进入耶鲁大学深造,并在1930年获得数学学士学位,成为耶鲁大学第一位女博士。

第二次世界大战期间,Grace加入军队,在那里,她得以与计算机亲密接触。她幸运地被任命为著名计算机专家霍德·艾肯(H.Aiken)博士的助 手,参与Mark Ⅰ计算机的研制。她后来回忆说:“我成了世界上第一台大型数字计算机的第三名程序员。”从此,Grace博士走上了软件大师的成功之路。

Bug发现者和千年虫制造者

Grace博士的主要任务是编写程序,她为MarkⅠ,以及后续机器MarkⅡ、Mark Ⅲ编写出大量软件。在这期间,Grace博士在软件设计领域的第一项重大“发明”,Bug诞生。

1946年,她在发生故障的MarkⅡ计算机的继电器触点里,找到了一只被夹扁的小飞蛾,正是这只小虫子“卡”住了机器的运行。Grace博士顺手 将飞蛾夹在工作笔记里,并诙谐地把程序故障称为“Bug”。Bug的意思是“臭虫”,而这一奇怪的称呼,后来演变成计算机行业的专业术语。虽然现代电脑再 也不可能夹扁任何飞蛾,大家还是习惯地把排除程序故障叫做Debug(除虫)。

那时的硬件极其昂贵,为了节省内存空间,Grace博士开始采用6位数字来储存日期,即年、月、日各两位。随着COBOL语言的影响日愈扩大,这一习惯做法被人们沿用下来,到2000年前,居然变成了危害巨大的“千年虫”,这当然是Grace博士始料不及的事。

编译语言之母

二战结束后,带着美国海军的嘉奖令,Grace博士陆续创造了计算机软件领域一些列的丰功伟绩。

1949年,她加盟第一台电子计算机ENIAC发明人莫契利和埃克特创办的公司,开始第一次使用“简短指令代码“ 为世界上第一台储存程序的商业电脑UNIVAC编写多软件。作为世界上第三位程序员,Grace博士在UNIVAC上编程时体会到编码的效率和执行效率的 不平衡。

基于这些想法,1952年,在斯佩里·兰德公司兼任系统工程师时,她率先研制出世界上第一个编译程序A-O,能够将类似英语的符号代码转换成计算机 能够识别的机器指令,并发表了第一篇关于编译器的论文。到了50年代中期,她又开发出Flow-Matic语言,这是第一个英语数据处理的编译程序,也是 第一个运用词语的计算机语言。后来,Flow-mafic被吸收进COBOL这个广为使用的商业计算机语言,为COBOL高级语言诞生创造了基础。

COBOL语言

1959年5月,在五角大楼支持下,她领导着一个工作委员会,成功地研制出第一个商用编程语言COBOL。

COBOL是一种面向数据处理的、面向文件的、面向过程(POL)的高级编程语言,是一种功能很强而又极为冗长的语言。适合于具有循环处理周期的环 境(例如打印工资支票)以及数据操纵量相当大的环境。COBOL主要应用于商业数据处理领域,对各种类型的数据进行 收集、存储、传送、分类、排序、计算及打印报表、输出图象是它的强项。经过40多年的不断修改、丰富完善和标准化,COBOL已发展为多种版本的庞大语 言,在财会工作、统计报表、计划编制、情报检索、人事管理等数据管理及商业数据处理领域,都有着广泛的应用。

COBOL语言最重要的特征是语法与英文很接近,可以让不懂电脑的人也能看懂程序;编译器软件只需做少许修改,就能运行于任何类型的电脑。COBOL将程 序和数据截然分开,因此,如果程序员要改变程序,他只需要改变前面编写的程序部分,不必全改。这种语言有显著的文件处理能力,它支持顺序文件和直接存取文件,特别适用于管理存储在磁带或磁盘上的大量数据。Grace博士的COBOL语言是高级程序设计语言的第一步,定义了高级语言的雏形。

当时,五角大楼的专家害怕这种语言的命运不会太长久,特地为它制作了一块小小的墓碑。然而,COBOL语言不但留存下来,还被广泛使用。1963年,美国 国家标准局将它进行了标准化。用COBOL写作的软件,要比其他语言多得多,Grace博士也因此被誉为计算机语言领域的先驱人物。到今年(2009 年),COBOL语言已经50岁,走过了半个世纪,依然被应用在软件开发领域。

海军少将

Grace博士生活在一个充满变化的时代,为了时刻激励自己创新意识,她在办公室墙上挂了一个逆时针转动的大钟。她也经常告诫青年人,不必害怕变 化,必须勇于创新。她坚信,现在的青年会比他们这辈人更勇敢地面对问题。美国海军部门为了照顾她的身体,曾多次动员她退休,但每次都不得不将她重新请回 来,因为离开了这位博学多才的软件大师,许多事情根本无法运转。

直到1986年,已获得海军少将军衔的霍波,才Grace博士80岁高龄从海军退休,继续担任DEC公司资深顾问。在波士顿,以美国军队的最高规格为她举行了退休仪式。在告别演说中,Grace博士关注着未来:“我们年青的人民是属于未来的,我们必须为他们创造未来。”

 

为表彰她对美国海军的贡献,有一艘驱逐舰被命名为“格蕾丝号”;加利福尼亚海军数据处理中心也改称“霍波服务Grace博士”。霍波一生Grace 博士得许多殊荣,如计算机科学年度人物奖、国家技术奖等、海军功勋服务奖、国防部卓越服务奖等等。1971年,为了纪念现代数字计算机诞生25周年,美国 计算机学会特别设立了“格蕾丝·霍波奖”Grace博士发给当年最优秀的30岁以下的青年计算机工作者。因此,“霍波奖”Grace博士全球电脑界“少年英雄”的标志。

Grace Hopper博士珍惜生命,她希望能够活到94岁,新世纪来临的那一天(上世纪80年代末,千年虫问题还没有被发现,如果她想到问题的存在,一定会亲自解 决)。她是计算机界崇拜的软件大师,事实上,她对计算机领域的贡献不只是COBOL语言,Bug和千年虫,更重要的是,她开创了程序语言的编译时代,为现 代编程语言提供了出行,解放了程序员的生产力,为计算机软件打下了告诉发展的理论基础和实例模型。

请记住Grace Hopper博士,美国海军上将,世界第三位程序员,Bug发现者,编译语言创始人和现代高级程序设计语言的奠基人。

 


 

《优雅人生:格雷斯·霍珀和信息时代的创新(计算机程序之母Grace Hopper的传奇人生)》

样章试读 :http://www.china-pub.com/193728

相关文章:

  • Grace Hopper:编译语言之母/千年虫制造者/世界第三位程序员/COBOL语言创始人/海军少将...
  • 《深入理解计算机系统》英文版6.5折预定!
  • 迅速步入jQuery的殿堂
  • 《jQuery权威指南》
  • 《人月神话》作者Frederick P. Brooks, Jr.大师论设计原本
  • 《企业文化地图》首发仪式圆满落幕
  • 《人月神话》作者Brooks最新力作《设计原本》前500册65折首发,英文版同步发售!
  • 《人月神话》作者Brooks最新力作《设计原本》前500册65折首发,英文版同步发售!...
  • 2011年第1期华章新书书讯:设计原本、深入理解计算机系统、jQuery权威指南
  • 《设计原本》成书始末(BY 高博)
  • Mongo北京大会3月3号召开!报名抢注火爆进行中!(免费)
  • Mongo北京大会3月3号召开!免费报名,抢注火爆进行中!
  • 主题演讲:《中国IT外包新视界— 当中国成为世界第二大经济体 》
  • 主题演讲沙龙:《中国IT外包新视界— 当中国成为世界第二大经济体 》
  • 《设计原本》中英文版最低5.0折团购
  • php的引用
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Mysql5.6主从复制
  • October CMS - 快速入门 9 Images And Galleries
  • php ci框架整合银盛支付
  • React的组件模式
  • session共享问题解决方案
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 初识 beanstalkd
  • 关于springcloud Gateway中的限流
  • 解析带emoji和链接的聊天系统消息
  • 来,膜拜下android roadmap,强大的执行力
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 用jQuery怎么做到前后端分离
  • 转载:[译] 内容加速黑科技趣谈
  • 阿里云服务器购买完整流程
  • #在 README.md 中生成项目目录结构
  • (pojstep1.1.2)2654(直叙式模拟)
  • (笔试题)分解质因式
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (规划)24届春招和25届暑假实习路线准备规划
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • **PHP分步表单提交思路(分页表单提交)
  • .bat文件调用java类的main方法
  • .Net 代码性能 - (1)
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .net6+aspose.words导出word并转pdf
  • .NET程序员迈向卓越的必由之路
  • .Net各种迷惑命名解释
  • @Transactional 竟也能解决分布式事务?
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ARM]ldr 和 adr 伪指令的区别
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [Java] 模拟Jdk 以及 CGLib 代理原理
  • [Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用
  • [lesson17]对象的构造(上)