科技: 人物 企业 技术 IT业 TMT
科普: 自然 科学 科幻 宇宙 科学家
通信: 历史 技术 手机 词典 3G馆
索引: 分类 推荐 专题 热点 排行榜
互联网: 广告 营销 政务 游戏 google
新媒体: 社交 博客 学者 人物 传播学
新思想: 网站 新书 新知 新词 思想家
图书馆: 文化 商业 管理 经济 期刊
网络文化: 社会 红人 黑客 治理 亚文化
创业百科: VC 词典 指南 案例 创业史
前沿科技: 清洁 绿色 纳米 生物 环保
知识产权: 盗版 共享 学人 法规 著作
用户名: 密码: 注册 忘记密码?
    创建新词条
科技百科
  • 人气指数: 6956 次
  • 编辑次数: 1 次 历史版本
  • 更新时间: 2009-07-05
明天
明天
发短消息
相关词条
范内瓦·布什
范内瓦·布什
山内溥
山内溥
瑞·米尔顿·杜比
瑞·米尔顿·杜比
刘易斯·科恩菲尔德
刘易斯·科恩菲尔德
BOSE博士
BOSE博士
朱利亚斯·布兰克
朱利亚斯·布兰克
菲罗·范斯沃斯
菲罗·范斯沃斯
埃尔玛·加德诺·法恩斯沃斯
埃尔玛·加德诺·法恩斯沃斯
大卫·华尔兹
大卫·华尔兹
杰克·特拉梅尔
杰克·特拉梅尔
推荐词条
希拉里二度竞选
希拉里二度竞选
《互联网百科系列》
《互联网百科系列》
《黑客百科》
《黑客百科》
《网络舆情百科》
《网络舆情百科》
《网络治理百科》
《网络治理百科》
《硅谷百科》
《硅谷百科》
2017年特斯拉
2017年特斯拉
MIT黑客全纪录
MIT黑客全纪录
桑达尔·皮查伊
桑达尔·皮查伊
阿里双十一成交额
阿里双十一成交额
最新词条

热门标签

微博侠 数字营销2011年度总结 政务微博元年 2011微博十大事件 美国十大创业孵化器 盘点美国导师型创业孵化器 盘点导师型创业孵化器 TechStars 智能电视大战前夜 竞争型国企 公益型国企 2011央视经济年度人物 Rhianna Pratchett 莱恩娜·普莱契 Zynga与Facebook关系 Zynga盈利危机 2010年手机社交游戏行业分析报告 游戏奖励 主流手机游戏公司运营表现 主流手机游戏公司运营对比数据 创建游戏原型 正反馈现象 易用性设计增强游戏体验 易用性设计 《The Sims Social》社交亮 心理生理学与游戏 Kixeye Storm8 Storm8公司 女性玩家营销策略 休闲游戏的创新性 游戏运营的数据分析 社交游戏分析学常见术语 游戏运营数据解析 iPad风行美国校园 iPad终结传统教科书 游戏平衡性 成长类型及情感元素 鸿蒙国际 云骗钱 2011年政务微博报告 《2011年政务微博报告》 方正产业图谱 方正改制考 通信企业属公益型国企 善用玩家作弊行为 手机游戏传播 每用户平均收入 ARPU值 ARPU 游戏授权三面观 游戏设计所运用的化学原理 iOS应用人性化界面设计原则 硬核游戏 硬核社交游戏 生物测量法研究玩家 全球移动用户 用户研究三部曲 Tagged转型故事 Tagged Instagram火爆的3大原因 全球第四大社交网络Badoo Badoo 2011年最迅猛的20大创业公司 病毒式传播功能支持的游戏设计 病毒式传播功能 美国社交游戏虚拟商品收益 Flipboard改变阅读 盘点10大最难iPhone游戏 移动应用设计7大主流趋势 成功的设计文件十个要点 游戏设计文件 应用内置付费功能 内置付费功能 IAP功能 IAP IAP模式 游戏易用性测试 生理心理游戏评估 游戏化游戏 全美社交游戏规模 美国社交游戏市场 全球平板电脑出货量 Facebook虚拟商品收益 Facebook全球广告营收 Facebook广告营收 失败游戏设计的数宗罪名 休闲游戏设计要点 玩游戏可提高认知能力 玩游戏与认知能力 全球游戏广告 独立开发者提高工作效率的100个要点 Facebook亚洲用户 免费游戏的10种创收模式 人类大脑可下载 2012年最值得期待的20位硅谷企业家 做空中概股的幕后黑手 做空中概股幕后黑手 苹果2013营收 Playfish社交游戏架构

Roy Nutt,计算机科学公司(Computer Sciences Corporation)创始人之一,也是FORTRAN语言的共同创造者。计算机科学公司(CSC),由琼斯(Fletcher Jones)和纳特(Roy Nutt)于1959年创立。到1963年,CSC是世界上最大的独立计算机服务公司,收入接近400万美元。1997年,CSC仍是全球最大的软件服务公司之一,总收入63亿美元。

目录

[显示全部]

个人简介编辑本段回目录

Roy Nutt (October 20, 1930 - June 14, 1990) was an American businessman and computer pioneer who co-founded Computer Sciences Corporation and was a co-creator of FORTRAN.

(图)Roy NuttRoy Nutt

Born in Marlborough, Massachusetts, Roy Nutt grew up in Glastonbury, Connecticut. He graduated in 1953 with a bachelor's degree in mathematics from Trinity College in Hartford. A pioneer in the fledgling software industry of the 1950s, Roy Nutt was a major contributor in the creation of IBM's FORTRAN, the first high-level scientific and engineering programming language. Part of the FORTRAN project's team, he was responsible for developing the computer command FORMAT, which controls data for input. Nutt also created an assembler for the IBM 704 mainframe that is today seen as the most successful individual programming effort of the 1950s. During this period, Roy Nutt met Fletcher Jones when he joined with nineteen others from the aerospace industry to form an IBM user group known as SHARE which developed its own operating system known as SOS. Jones, as Secretary of the group, became its national spokesman and their working relationship would later result in a business partnership.

Roy Nutt had become a widely respected computer programmer for United Aircraft Corp. in East Hartford, Connecticut when he left in 1959 to team up with Fletcher Jones to establish Computer Sciences Corporation (CSC) in Los Angeles. Jones, who ran the business and marketing end of things, obtained a contract from Honeywell that gave their business profitability and respect within the industry. Nutt was responsible for building Honeywell the first commercial compiler and oversaw the company's made a major 1961 entry into the space industry when they obtained a contract to support the NASA Jet Propulsion Laboratory's Flight Operations Facility. Within four years of its founding, CSC became the largest software company in the United States. Taking their business public with an IPO listed on the American Stock Exchange. By the end of the 1960s, CSC was listed on the New York Stock Exchange and had operations in Canada, the United Kingdom, Germany, Italy, and in The Netherlands.

In later years, Roy Nutt used some of his wealth to benefit Trinity College. He set up an endowment fund for a professorship and donated money to assist in the construction of the college's engineering and computing building.

Roy Nutt died of lung cancer in Seattle, Washington on June 14, 1990.

计算机科学公司编辑本段回目录

CSC 50载,尽辉煌
      弗吉尼亚州福尔斯彻奇市,2009年4月16日 — CSC(纽约证券交易所:CSC)公司今天宣布该公司举行隆重庆典,以庆祝该公司创立并为全球客户提供优质服务已达50载。CSC是1959年由两名计算机科学家用一百美元和一个梦想建立起来的公司,现在CSC已经成长为一家全球领先的咨询、系统集成和外包企业,在80个国家拥有超过9.2万名员工,并为政府及企业客户提供广泛的业务和技术解决方案。

(图)Roy Nutt等创始人Roy Nutt等创始人

     “经过多年发展,CSC已经成长为全球知名企业,并拥有一大批有能力、敬业的高素质人才,”CSC公司主席、总裁兼首席执行官迈克.拉朋先生说,“我们的业绩永远取决于客户的成功,CSC提供创意、将业务拓展至全球并且提供灵活多样的服务,对此我们感到非常满意。尽管我们意识到现在的经济处于特殊变化时期,但是我们仍将对未来进行投资并且利用我们50年来形成的优势和经验帮助我们的客户取得更大的发展。”
50 年展望
      展望未来,CSC已经认识到今后将推动未来50年发展的三大巨变。它们是:消费科技成为信息技术(IT)业革新的起点、IT在业务职能和业务流程中的普及以及业务和IT共同演化和发展的关系。为了应对这些巨变以及当今特殊的经济压力,大型企业和政府机构必须确定出最优方案,以引导IT业的未来发展。更多信息在www.csc.com/cscworld
佳绩
      CSC的重要里程碑:
• 1959年4月16日:Roy Nutt 和 Fletcher Jones创建了计算机科学公司(CSC)。

(图)Roy Nutt and Fletcher JonesRoy Nutt and Fletcher Jones

• 1961年:CSC与美国宇航局的喷气推进实验室(JPL)签署了该公司的第一份联邦政府合同,通过利用计算机系统从无人太空探测器中收集遥感勘测数据。
• 1965年:CSC取代了比CSC规模大一千倍的通用电气公司,成功赢得了与美国原子委员会的合同。
• 1971年:CSC为巴拿马运河建立了第一套自动交通控制系统。
• 1981年:CSC开始为约翰斯•霍普金斯大学空间望远镜研究所的哈勃空间望远镜项目提供支持并且为哈勃30年的日常运行提供支持,其中包括 1990年的成功启用。
• 1989年:CSC创建了前沿论坛(Leading Edge Forum),以引领全球创新。
• 1996年:CSC与杜邦公司签署了40亿美元的长期外包协议,该协议是有史以来最大和最具创新意义的技术协议之一。
• 2004年:CSC从苏黎世金融服务那里赢得了保险业中最大的应用外包合同。
• 2007年:CSC 通过收购康伟实和第一咨询集团,在印度扩展了外包业务。

CSC的在线互动历史资料在www.csc.com/timeline

(图)CSCCSC

      1963年,CSC成为在太平洋美国证券交易所进行交易的首家软件公司。五年后的1968年,CSC成为在纽约证券交易所上市的第一家独立IT服务公司。CSC在财富500强中排名第170位。
“回顾过去50载的光辉历程的确令人非常兴奋,但是我们不愿停留在这些荣誉上,”拉朋先生说,“我们为取得的成就感到自豪的同时, 通过开发下一代业务解决方案,并利用我们的专业技术,致力于为客户提供服务以继续推进未来50年的创新,并取得更大成功。”

关于CSC
    CSC,全球IT服务的领导者之一,在三大业务领域为客户提供以技术为依托的解决方案和服务 – 商业解决方案与服务、服务管理部和北美公共部门。凭借领先科技和卓越能力,CSC业务与服务范围覆盖系统设计与集成、IT与业务流程外包、应用软件开发、互联网及应用软件托管服务、任务支持和管理咨询服务等。CSC 总部位于美国弗吉尼亚州福尔斯彻奇市(瀑布教堂市),全球现有雇员近92,000人。截至2009年1月2日,CSC全球年收入达171亿美元。

1954 Fortran诞生 编辑本段回目录

1954年大事记
●IBM与American Airlines的联合研究小组发布了一项研究成果,为计算机化航班预订系统Sabre奠定了基础。
●IBM销售了450台650磁鼓计算机,超过了701 Defense Calculator的销量,成为首家大量生产计算机的厂家。
●因研制晶体管而获得诺贝尔奖的William Shockley成立了Shockley Semiconductor公司,该公司聚拢了当时被称为Fairchild Eight的一班工程师,这些工程师后来又创建了Fairchild Semiconductor公司,并间接地导致了硅谷的出现。

(图)Roy NuttRoy Nutt

有一句英文谚语 :需要乃发明之母。但是有的时候,单调乏味的工作也能导致产生新的发明。正如John Backus所说,单调乏味的编程工作使他产生了创造世界上第一种自动编程语言Fortran的想法。这位来自哥伦比亚大学的数学家时年29岁,参加IBM的701和704计算机的研制工作已经有几年了,因而完全厌倦了复杂的编程工作。
现年74岁的Backus提到他发明Fortran的动力时说:"那纯粹是懒惰使然。"他说:"编写程序极其乏味,你必须考虑大量的细节问题,处理那些本不该管的事情。因此我想让编程工作变得容易些。"
Backus必须克服全部困难:当时没有研究成果为他的想法提供理论基础 ;没有开发软件的方法学;没有成功的典范。
1953年接近年底的时候,Backus断言,在计算机的运行费用中,至少有一半到3/4花在了编程和测试上。"编程人员的工资通常等于或超过一台计算机的租金。"他当时推断,如果发明一种自动执行指令码的语言,使用循环的方法,让计算机在一组指令的控制下执行重复任务,将会极大地降低计算机的运行成本。
Backus的想法并非前无古人。Remington Rand公司Eckert-Mauchly部的Grace Hopper此前已经发表了A-O编译程序,其设计目的就是完成重复任务。但Backus说,这个编译程序"不够灵活,速度很慢,用起来很费劲。"而且IBM新的704机增加了两种新的功能,这两种新功能不仅使得对Backus设想的语言的需求更显迫切,而且还对其提出了更加复杂的要求
。内置浮点协同处理能力和变址寄存器使得704机有能力使用自动数学语句,使用这种语句不再需要编写重复指令码。Backus说,这一改进标志着编程技术的"聪明"度大大增加。
发明这种语言的复杂性加之人们对A-O编译程序反应冷淡,导致在IBM内外出现了一股怀疑情绪。但Backus的上司、IBM应用科学部主任Cuthbert Hurd批准了他的计划。1954年初,工作开始了。
最初,Backus从IBM内部请来了Irving Ziller与他一起工作,后来,又增加了另一个IBM人Harlan Herrick。Backus说,他找的人要具有创造性,非常机敏并富有经验。当时有很多种类型的人参与了这项工作,其中包括物理学家、晶体学家、英语专家等。
暂时从MIT借来的Sheldon Best做了这个项目中最难的工作,即怎样使用变址寄存器。Backus说 :"他首先在一张纸上画出一个流程图,当他要增加流程图报告时,他就将很多张纸粘在一起,形成一个巨大的流程图。回到MIT后,再花几个月的时间来弄清楚流程图的含义以及程序是怎样工作的。"
Roy Nutt当时负责United Aircraft数据中心的工作,后来创立了Computer Sciences公司。他对这种语言十分热衷,也参加了开发队伍。Backus回忆说:"Roy总是坐在键控穿孔机旁,键控穿孔机受一段将要运行的程序控制。他负责Fortran中的全部输入/输出系统。"
编程人员们每天很晚才开始工作,有时白天在IBM公司对面的Langdon旅馆中睡觉,这样晚上就可以上计算机了。
Backus说,经过两年的时间,在这支队伍中成长出了IBM最好的程序员。
1956年整个夏天的时间都用来测试这种语言了。IBM在1957年向客户交付了第一套Fortran语言。
今天,42年过去了,Fortran在军事和科学应用中仍然是主要的编程语言。

大师的智慧:第二章编辑本段回目录

我们并不知道我们想要什么和怎样去做。这只是顺其自然的事情。第一个挑战就是这种语言看上去会像什么。然后便是怎样分析表达式?D?D这是一个很大的问题,现在看来,当时我们做的是极其笨拙的……
?D?D约翰·巴库斯论Fortran的发明
怎样与机器对话?
有句谚语说:需要是发明之母。但有些发明家却不是由于需要的驱使,而更多的是由于对不精确或效率低下的不满。约翰·巴库斯就是这样一位发明家。他在三个重大的创造中扮演了主要的角色:Fortran,第一个高级程序设计语言;巴库斯-诺尔范式,为高级语言提供描述语法规则的方法;和一种叫FP的函数程序设计语言。今天,这几个发明推动着全世界的研究和商业进展。但对于巴库斯自己来说,这个发明却是起因于对他能找到的概念上的工具的不耐烦。
好象整个家庭看起来都对效率低下感到不满。第一次世界大战前,巴库斯父亲在阿特拉斯火药公司从普通员工升到了首席化学家的职位,这是一家生产用于炸药的硝化甘油的制造商。很好的理由导致了他的提升。
他们的工厂常常发生爆炸,或者产量极低,他们并不知道这是为什么。这种产品对温度极其敏感。我父亲发现他们使用的德国产的昂贵的温度计并不准确。于是,他去了德国,学习温度计制造,并得到了一些好温度计,这样他们的工厂便不再发生那么多爆炸了。
第一次世界大战期间,老巴库斯居于军火官员的高位。但他并没有得到许诺的战后在杜邦公司的工作,于是他改做证券经纪人。到1924年约翰·巴库斯在费城出生时,他父亲已经在战后的繁荣中发了财。巴库斯在特拉华州的威尔明顿度过了他的童年,然后就学于宾夕法尼亚州波茨敦市很有名望的希尔学校。
我年年不及格,从未学习过。我讨厌学习。我只是到处走来走去打发时间。结果每年我都去新罕布什尔州的暑期学校,夏日里可以去划船,度过美好的时光,这真令我高兴。
1942年巴库斯在希尔学校迟迟地毕业后,去了弗吉尼亚大学,他父亲希望他在那儿学化学。巴库斯喜欢理论知识,但讨厌实验室。他把大多数时间花在舞会上,等着被征入伍。到第二学期末,他每周只上一堂课?D?D一堂轻松的音乐欣赏课。最后,校方处罚了他,他在弗吉尼亚大学的学业便结束了。1943年,他参了军。
巴库斯成了一名下士,在乔治亚州的斯图沃特堡率领一个防空小队,但他在一次能力测试中的成绩使得陆军决定送他参加匹兹堡大学的工程预科学习。后来的一次医科能力测试可能救了他的命。
我的战友们都送到了突围战役二战期间美军和德军之间最重要的战役之一。?D?D译者注的战场上,而我去哈弗富德(Haverford)学院学习医学预科。

(图)Roy NuttRoy Nutt

作为医学预科学习的一部分,巴库斯到大西洋城医院的神经外科病房护理重伤员。一次偶然的机会,巴库斯被诊断出脑袋上有骨瘤,然后安装了一块金属板进去。不久,他参加了第五大街医院(现在的纽约医学院)的医科学习,但只学了9个月。
我讨厌那儿。医科学校的人不喜欢思考。他们只会背书?D?D那是他们需要你做的全部。你不需要思考。
巴库斯发现他脑袋里的金属板装得不对,便到附近的一家有专业平板技术的斯塔屯岛医院更换了一下。他找到技术员并自己设计了一个。那以后,巴库斯便没再作过医学方面的工作。他在纽约城租了一套每月18美元的小公寓。
我的确不知道我到底想要做什么。我觉得自己想要的是一套高保真的音响,因为我喜欢音乐。那时候并没有那种东西,于是我到一所无线电技术学校学习。我有了一位非常好的老师,这是我遇到的第一位好老师,他让我与他合作为一家杂志计算一些电路的特性。
我记得作了一些相对简单的计算,得出放大电路曲线中的几个点。这是一件费力、乏味又烦人的工作,但它使我对数学感起了兴趣。它有所应用使我感兴趣。
巴库斯到哥伦比亚大学基础学院注册学习了一些数学课程。他不喜欢微积分,但喜欢代数。1949年春,25岁的巴库斯差几个月就要毕业拿到数学学士学位了,但他仍然不知道自己想要做什么。
那年春天的一个晚上,他参观了IBM公司曼迪逊大街上的计算中心。他被带领参观了选择顺序电子计算器(SSEC计算器),这是IBM公司早期的电子(真空管)机器之一。
这台庞大的SSEC计算器占满了一间大屋子,遍布着管子和电线。参观过程中,巴库斯曾对导游提起他正要找工作,导游告诉他去找主管。
我说算了,没法儿去。我看上去又散又乱。但她仍然坚持,我便去了。作了一次测试并通过了。
巴库斯受聘在SSEC计算器上工作。这台机器从现代意义上来说实际上不是计算机。它没有存储软件的存储器,程序必须通过穿孔纸带输入。SSEC计算器有着成千上万个电子机械部件,运行并不可靠。
在这台机器上工作非常有趣。一切都由你自己掌握。你必须时时待在那儿,因为这台机器每3分钟便会停止运行和出错。你必须设法让它重新运行。
这种程序设计是非常原始的。
你只是读参考手册,得到一系列指令,这就是关于程序设计你所知道的全部。每个人必须想出办法怎样去完成什么东西,当然有无数种不同的方法,人们会用无数种方法去做它。
巴库斯在SSEC计算器上工作了3年。他接手的第一个较大的项目是计算月历?D?D任一给定时刻月球的位置。那时候,IBM公司便能负担一个纯粹科学部门的昂贵开支,该部门和哥伦比亚大学有一个联合项目,是为了在科学研究中找到使用穿孔卡和纸带机的方法。这个联合体的支柱便是商业和政府用的穿孔卡片机产品。极其庞大的SSEC计算器给了公众深刻的印象,但它却只是一台不能存储数据的计算器,IBM最终还是抛弃了这种技术。无论公司的动机如何,巴库斯在SSEC计算器的工作中学到了很多东西,也为科学计算作出了他的第一个贡献?D?D快速编码,这起因于在小机器上无法计算大数。
快速编码: 在小“字”中计算大数
计算机中,“字”是指计算机能够进行加减乘运算的数的长度。这些字有固定的长度,通常是8到32位二进制数,依不同的硬件而不同。长度的限制使得表示从埃(毫米的千万分之一)那么小到光年那么大的值必须进行特殊的处理。
科学计算领域的先驱之一就是著名的数学家约翰·冯·诺依曼(John von Neumann,1903-1957)。冯·诺依曼在匈牙利还是孩子时就是一个数学神童,还在中学时他就完成了第一篇数学论文。他还有超常的记忆力。他曾开玩笑地把整个《剑桥古代世界史》背了下来。他的研究成果包括古典数学和量子力学的基本结论,还发明了博弈论。冯·诺依曼1933年移民美国,到了普林斯顿的高等研究所,在二次大战的曼哈顿计划中担任领导。
冯·诺依曼认识到设计原子弹将需要计算非常大和非常小的数。宾夕法尼亚大学摩尔工程学院的一个电子计算器项目引起了他的兴趣。1944年他加入了这个项目,开始作为观察员,后来作为参与者,并提出了制造一台不仅存储数据而且存储指令的机器的想法?D?D这也是现代所有计算设备实际使用的方法。提出想法和发明并不一样。冯·诺依曼把发明归功于艾伦·图灵,他理论中的“机器”也存储指令。制造电子存储器归功于摩尔学院的约翰·埃卡特(John Eckert),他用水银振动管存储数据。
战后,冯·诺依曼设计了自己的计算机(一般称为Johniac)和一些最早的程序,用于解答核物理中不能手工计算的问题。冯·诺依曼在科学计算方面的兴趣促使他建议使用“比例因子”用于在计算机中存储和操作非常大和非常小的数。
这种想法比较简单。假设一个计算机字只能存储三个数字。当表示数517时,把517写入该计算机字,并设定比例因子为0;表示51.7时,把517写入该字,并设定因子为-1;表示5170时,把517写入该字,并设定因子为1;表示5,170,000时,把517写入该字,并设定因子为4;等等。正的比例因子表示跟在数后的0的个数,而负的比例因子表示小数点右边数字的个数。
在设计计算过程中,程序员并不知道每个计算结果的精确值,但应该知道(或者冯·诺依曼相信如此)其比例因子。是的,这个想法足够简单?D?D如果你是一个伟大的数学家的话。巴库斯却有着程序员的眼力。
你必须对问题非常了解,因为什么样的比例因子都有,你必须防止数溢出或由于取整误差太大发生错误。因此,由于机器的特性,程序设计是非常复杂的。
在IBM公司,巴库斯和哈伦·荷里克(Harlan Herrick)一起,编写了一个叫快速编码的程序用于支持浮点数运算。浮点数带有自己的比例因子,因此使程序员省却了设定比例因子的麻烦。巴库斯设计快速编码的经验为以后更大的挑战作好了准备。
每个人都看见了程序设计有多昂贵。租借机器要花去好几百万,而程序设计的费用却只会多不会少。程序设计之所以如此昂贵,是因为必须雇佣很多程序员用“汇编”或第二代语言编程,这比0和1的二进制或机器码只进了一步。汇编语言消耗大量时间;为一台特定的机器编写命令然后调试大量出现的错误是一件非常费力的工作。程序常常蒙混过关,实现不了最终目标。
Fortran:第一个高级计算机语言
1953年12月,巴库斯给他在IBM公司的老板卡斯伯特·赫德(Cuthbert Hurd)写了一个备忘录,建议为IBM 704机设计一种程序设计语言(IBM 704已经可以进行浮点数计算)。这就是后来的公式翻译语言?D?DFortran。其目标非常明了。
它仅仅意味着使程序设计得更快一些。我并没有打算让它在别的机器上使用。当时几乎也没有别的机器。
但巴库斯首先必须克服冯·诺依曼的强烈的反对,当时他是IBM公司的顾问。
他并不认为程序设计是个大问题。我想他主要的反对意见之一是不知道用浮点数会有什么样的麻烦,对于定点数至少有麻烦时知道麻烦在哪儿。但他对于程序设计的费用并不了解,他的确认为Fortran是个浪费。
不管怎样,赫德还是批准了这个计划,冯·诺依曼也不再反对。巴库斯随便找了几个有经验的程序员和刚从学校毕业的年轻数学家。到1945年秋,他的程序设计小组已经清楚地认识到:要为IBM 704机设计一种使程序设计更加方便的语言。
正如他们所认识到的,设计语言是比较简单的。而将其翻译成机器能够直接理解的语言才是真正的挑战。进行这项翻译任务的程序叫编译器。巴库斯和他的小组没有现在可以让一个大学本科生在一个学期里设计和实现一种新的语言编译器的算法。特别是没有设计编译器的核心部分句法分析器的好方法。
句法分析是计算机中相当于图解语句的一项工作,这是我们中的大多数人一离开学校便很高兴地忘记的一件事。在图解语句时,要分析出语句的不同部分之间的关系:限定词、名词、动词、形容词、副词,然后用树形结构表示出来。(见图1-1。)
在语言编译器中,句法分析器画出这棵树,然后把高级语言(便于人们理解的语言)翻译成机器语言。机器语言是由一系列直接输入计算机电路中的指令组成。(不同的计算机型常常使用不同的指令?D?D这就是一个苹果机程序无法在IBM兼容机上运行的原因。)
图1-1分析一个英语句子
机器语言程序的效率取决于程序设计者利用快而短时的存储器的效率。大多数现代计算机至少有16个寄存器,有的有上千个。不过比起较慢的随机存储器(RAM)中成百万字节的信息来说这只是一个小数目。但大多数运算却是在寄存器中进行的。
比如,算术表达式(A+B)/C翻译成如下的序列:
把A复制到寄存器1
把B复制到寄存器2
把C复制到寄存器3
把寄存器1与2相加,其和放入寄存器1
把寄存器1除以寄存器3,其商放入寄存器1
在这个例子中,算术运算要求把数据放入寄存器中。(有些机器不需要把数据放入寄存器中,但这样运算会慢得多。)如果下一步运算要用到变量D和E,语言翻译器就要决定是把D和E放入寄存器4和5中,还是再次使用1、2或3。这个决策取决于A、B、C何时将再次使用以及其他许多因素。这是一个复杂的问题,直到现在仍未解决。巴库斯和他的小组是尝试对这个问题得到一个合理解答的第一批人之一。
但最大的挑战还是Fortran的一个新特点:DO循环语句。这种语句是程序员用来简便地进行重复运算的。比如,指令序列:
DO 13 J=1,100
C[J]=A[J]+B[J]
13 CONTINUE
把A的第一个元素加上B的第一个元素得到C的第一个元素,然后把A的第二个元素加上B的第二个元素得到C的第二个元素,等等。
有效地编译DO语句需要用到一个特殊的寄存器?D?D“变址寄存器”。在Fortran最初设计使用的IBM 704机中只有3个变址寄存器,这是一个宝贵的资源。
哈伦·荷里克发明了DO语句,我们知道在这儿我们会遇到问题?D?D怎样实现它。我们只有3个变址寄存器,却有这么多脚标(在这个例子中是J,复杂的程序可能有20个以上的脚标)。
在程序中算出哪些信息使用哪个变址寄存器是极其困难的。如果你想用一般的方法做这件事,你得到的编码会极其糟糕。我们知道必须分析代码出现的频率和各种东西。
巴库斯小组中的所有成员都和他一样关心效率。Fortran的设计者们明白如果他们的新的高级语言生成的机器语言比一个优秀程序员手工做的效率更低,那么程序员们是不会使用这种高级语言的。由于这个原因,他们几乎一半的工作都是为了生成效率更高的机器码。结果,Fortran以其良好的性能而著称。
IBM 704机大约只有80个用户,包括通用电气、联合航空公司、洛克希德(Lockheed)公司和其他一些飞机制造工业的用户。西屋电气公司(Westinghouse)1957年4月幸运地成了Fortran的第一个商业用户,巴库斯的小组给了他们一套存储着语言编译器的穿孔卡片。
循环的贵族发明家
巴库斯和20世纪50年代的任何其他参与实践的计算机科学家并不知道,循环是在100多年前发明的。1833年,拜伦拜伦(Lord Byron,即George Gordon Byron),18世纪英国著名浪漫主义诗人和讽刺作家。?D?D译者注的女儿奥戈斯塔·安达(Augusta Ada)遇见了查理·巴比奇(Charles Babbage),他正在设计一个叫分析机的机械计算机器。8岁时就是数学天才的安达是当时仅有的几个理解巴比奇眼光的人,他们开始了整个一生的维多利亚式的合作,这足以使她成为世界一流的程序员。在为分析机设计程序时,她发现了引入循环甚至是子程序的必要性。
她整理了一篇描述分析机的文章,但拒绝以自己的名义发表,因为她觉得妇女被认为不能写科学论文。后来在巴比奇和她丈夫洛夫莱斯伯爵(Earl of Lovelace)的敦促下她最终同意以A.A.L的名字缩写发表。安达的生活在悲剧中结束。她成了一个赌徒、酒鬼和可卡因吸食者,36岁时死于癌症,正是拜伦笔下悲惨的结局。
他们以为这是全套Fortran,没用任何指令便运行了它。他们在进行流体力学的计算?D?D计算机翼等类似结构承受的压力用于设计飞机。他们本来应该先用桌面计算器和风洞为研究风力对于飞机等的影响而建造的隧道,风速由人控制。?D?D译者注。
Fortran的第一个应用程序运行正常,但西屋公司的科学家和其他一些人不久便发现了Fortran编译器中大量的错误。巴库斯小组在随后的6个月里改好了它们。
虽然巴库斯领导了他那个杰出的小组4年,尝试了一次极耗精力的复杂的努力,但仍然对参与该项目一直很谦虚。
我替那么多人(罗伯特·纳尔逊(Robert Nelson)、哈伦·荷里克、洛伊丝·海贝特(Lois Haibt)、罗伊·纳特(Roy Nutt)、艾文·齐洛尔(Irving Ziller)、谢尔登·贝斯特(Sheldon Best)、大卫·赛尔(David Sayre)、理查德·戈德堡(Richard Goldberg)、彼得·谢里登(Peter Sheridan))获得如此多的荣誉看起来很不公平,是他们创造了大量的东西。管理这样一个小组并不需要很多精力。每个人都过得很愉快,我的主要职能只是中止午餐后开始的象棋比赛,让大家下午两点继续工作。
从Fortran发表近40年后,它仍然是科学计算所选择的语言。它一直在得到改进便是其重要性的一个证据。比如1992年,一个国际标准委员会给Fortran加入了一个新的特性,允许程序员告诉编译器多台计算机可以共享单个DO循环语句,如果需要的话。我们将在以后讨论这个问题。
巴库斯50年代末才停止Fortran的工作。但他对程序设计的贡献却刚刚开始。
1958年5月,一个国际商业和学术计算机科学家委员会在苏黎世召开大会。他们的目标是改进Fortran,并设计一种单一的标准化的计算机语言。他们设计的国际代数语言后来称为Algol语言。
Algol比Fortran有两个明显的优点。第一,这种新语言引入了局部变量的概念。每个程序给不同的数据元素定义不同的名称。在上面的一个Fortran例子中,我们定义了元素A、B和C。通常,在一个程序中总是有很多数据元素,以至程序员总要冒重复使用名称的风险。也就是说,程序员有可能在同一个程序中把一个已经存在的名称给了一个新的元素,这样会导致一些很不愉快的错误。有着常见名字的人都能很自然地理解这种问题:账单寄错了地址,信用因为错误的原因而被拒绝,大晚上的电话是找别人的。程序设计中,在整个程序中意义不变的名称叫“全局变量”,弄混对象的情况叫“名称冲突”。
消除“名称冲突”的一种方法是让名称的使用环境局部化。比如,在约克城提起“公爵”一般指约克城的公爵,而在新港爵士音乐会上提起“公爵”很可能是指艾林顿公爵艾林顿公爵(Duke Ellington,即Edward Kennedy Ellington),20世纪美国著名作曲家。?D?D译者注。同样,局部变量指其名称只在一定的有限环境中有效的计算机内存单元。在这个环境之外,同样的名称可以指向不同的内存单元。
Fortran只允许全局命名,而Algol却可以局部命名。除了方便以外,局部命名还使约翰·麦卡锡近来引入计算机科学中的递归这种程序设计形式成为可能。
计算机的递归函数是部分按照自身定义的。举一个日常生活中递归定义的例子。一个女子如此定义自己的母方祖先:我母亲是我的母方祖先,而我母亲的任何母方祖先都是我的母方祖先。这个定义初看起来好象是循环的,不过让我们仔细地看一看。
假设安是巴巴拉的母亲,巴巴拉是卡罗尔的母亲,卡罗尔是多娜的母亲。(还可以继续定义尤妮斯、弗洛伦斯等。)按照我们的定义,巴巴拉是卡罗尔的母方祖先,因为她是卡罗尔的母亲。安也是卡罗尔的母方祖先,因为她是巴巴拉的母方祖先(她是巴巴拉的母亲)。我们已经知道安是卡罗尔的母方祖先,我们会看到安也一定是多娜的母方祖先。
递归使得程序员可以把一个问题拆成许多小问题,然后把各个小问题的解答黏合在一起。比如,若要把一大堆纸按顺序排好,可以先把其中的一半排好,然后排剩下的一半,最后再把两部分合起来。
从严格的理论意义上来说,递归和局部命名并没有使这种新的语言功能比Fortran更强,但却提供了一种新的思考方式,产生了后来像深度优先搜索那样的算法,我们将在陶尔扬一章中讨论这种算法。
巴库斯喜欢Algol中蕴含的那些思想,但却对清晰地表示它们感到很困难。
他们只是用英语描述什么东西。这是陈述?D?D而这是例子。你对这些Algol委员会非常苦恼(尽是关于术语的徒然的讨论),意识到需要做点什么。你得学会怎样做到精确。
为了解决这个问题,巴库斯使用了一种叫上下文无关文法的形式体系,刚刚由语言学家诺姆·乔姆斯基(Noam Chomsky)发明(见第26页框图“上下文无关文法和巴库斯-诺尔范式”)。乔姆斯基的工作来源于埃米尔·波斯特重写语法的理论工作。
巴库斯到底是如何想到这种综合方法的,这肯定能让历史学家忙一阵子。
这是一个奇怪而混乱的问题。我发誓研究语法的想法来自埃米尔·波斯特,因为我曾在莱姆·埃斯塔特(Lamb Estate,IBM公司设在哈德逊的思想库)上过马丁·戴维斯的课。……因此,我认为如果想要描述什么东西的话,只要像波斯特那样做就行了。但马丁·戴维斯告诉我他很久以后才教过这门课(根据戴维斯的记录是在1960~1961年)。我便不知道如何解释了。对于乔姆斯基我一无所知。我是一个孤陋寡闻的人。据马丁·戴维斯推测,一个受过哈佛训练的逻辑学家,也是Fortran小组成员之一的理查德·戈德堡可能曾与巴库斯讨论过波斯特和乔姆斯基的工作。
由于一系列的偶然事件,巴库斯的发明最后成为著名的巴库斯-诺尔范式,开始是1959年6月巴库斯在联合国教科文组织在巴黎召开的关于Algol的大会上试图解释他关于精确语法的思想。
当然,这篇论文我写得太晚了,没有收录在大会的报告集中。我手拿着这篇论文去了大会。因此没有很好地分发它。但彼得·诺尔(Peter Naur)读到了它并作了许多修改。
诺尔是一名丹麦数学家,他改进了巴库斯的记号法,并用来描述整个Algol语言。程序设计语言界开始试用Algol的时候,诺尔的参考手册证明是当时描述语言语法的最好的参考书。
从他自己的发明中把程序设计解放出来
巴库斯发明了世界上最早的和最流行的程序设计语言之一,并发展了一种可以描述许多语言的符号系统。许多人,甚至许多杰出的科学家,都可能曾沿着这些成就前进。但巴库斯没有。对于是否喜欢自己所作的东西,他并没有把握。
当你写好一个Fortran程序后,你无法判断程序到底会怎样进行。Fortran程序读取两个数,然后把它们相乘,然后存储起来,然后去做别的事,然后再作判断,等等。试图确定实际上在计算什么并不容易。试图用不同的方法计算(也很困难),因为你基本上不知道程序在干什么。
巴库斯的目标是使得程序员能够知道自己想要做什么,而并不需要知道怎样做。1977年巴库斯在图灵奖受奖演说“程序设计能从冯·诺依曼风格中解放出来吗”中,向计算机科学界介绍了这个概念。
上下文无关文法和巴库斯-诺尔范式
我们考虑以下一些英语短语的描述,以便了解巴库斯-诺尔范式。术语“名词短语”和“动词短语”借自现代语言学。
句子→ 名词短语动词短语
名词短语→冠词形容词名词|冠词名词
动词短语→动词名词短语
形容词→红 | 蓝 | 黄 | 大 | 小 | 聪明的
名词→房屋 | 女孩 | 男孩
动词→喜欢 | 打
冠词→the | a
竖线“|”表示可选择。比如,冠词可以是“the”也可以是“a”。语法告诉我们“女孩喜欢男孩”是一个正确的句子,因为“女孩”构成一个名词短语,而“喜欢男孩”构成
一个动词短语。从语法上来说,“聪明的房屋喜欢男孩”也是正确的,尽管这个句子在意义上是不合常理的。
在程序设计语言中,巴库斯-诺尔范式也具有这种性质。只要遵从其规则,就会得到语法上正确的程序,编译器就能成功地将其翻译成机器语言,并保留所写的高级语言程序的原有含义。当然,原来那个程序仍然可能没有意义。编译器只保证翻译正确,而不管原程序是否正确。
提起冯·诺依曼与他早年反对这位杰出的数学家开发Fortran并没有关系。巴库斯所指的是冯·诺依曼所阐述的计算机的特征:即处理器与内存连接,程序和数据都存储在内存中。按照巴库斯的看法,这种特征意味着这样一个基本循环过程:处理器从内存中输入数据,对其执行一些操作,然后把结果返回内存。巴库斯认为遵循这种范式的程序设计语言缺乏透明度。在约翰·麦卡锡的Lisp语言(主要用于人工智能)和肯尼斯·艾华逊(Kenneth Iverson)的APL语言的基础上,巴库斯提出了一种叫FP的语言。其主要目标是通过数学函数构造程序。
一般(冯·诺依曼式的)语言和像FP那样的函数语言的主要差别在于,一般语言直接修改计算机内存,而函数语言却依靠“函数构造”。巴库斯在他的图灵奖受奖演说中用两个数组的内积的例子介绍了他的FP语言,这是一种物理中常用的运算。标准冯·诺依曼风格的语言大体上以如下的形式写这个运算:
c:=0
for i:=1 step 1 until n do
c:=c+a[i]*b[i]
巴库斯从几个方面批评了这种形式,特别是以下两个方面。第一,c被重复修改,这样理解该程序的唯一方式是理解每一次修改是用于把又一个乘积加到一个运行着的总和上的。因此,人们为了理解它就必须能够在心里执行这些代码。第二,这种形式定义了向量(a和b)及其长度(n)。对于一般的向量,这些都需要作为“参数”进行传递?D?D在大多数语言中这都是一件需要诀窍的事。而在FP语言中,内积运算则如下定义:
Def Innerproduct=(Insert+)(ApplyToAll*)(Transpose)这个式子须从右往左读。Transpose把两个向量的对应元素排成对。在上面的例子中,a[1]和b[1]成对,a[2]和b[2]成对,等等。“(ApplyToAll*)”以每对元素之积取代它们。“(Insert+)”求这些积之和。

(图)Roy NuttRoy Nutt

巴库斯认为,这主要有三个优点。第一,没有隐藏的状态(例如上面程序中的变量c)。第二,它对任意两个长度相等的向量都有效,因为它没有定义变量(因此不需要传递参数)。第三,不需要重复计算。每一步,或者每个“函数”(Transpose, ApplyToAll和Insert)在一个叫做“构造”的过程中只对前一步运算的结果操作了一次。
具讽刺意味的是,函数语言包括FP语言,并没有流行起来,其原因正是Fortran的成功之处:函数语言程序难于编译成有效的形式。随着处理器和内存速度的增加,权威们预测将不用再对程序的效率那么关心,但这些预测至今仍未实现。
并且,FP语言对许多现实中的程序设计任务并不合适,特别对那些主要是读取数据、修改数据并将其返回数据库的任务。像修改平衡帐户那样的任务自然是适合于冯·诺依曼范式的。
设计一种函数语言然后将其与实际工作结合起来是很难的。对此谁都会有疑问。
如果说巴库斯没有解决这个问题的话,他却漂亮地提出了这个问题。而其他计算机科学家将从此循着他的建议前进。巴库斯1991年退休以后,彻底地从计算机科学界退了出来,同时也从科学中退了出来。他只是冥想和读一些克里希纳穆尔蒂(Krishnamurti)和叶娃·彼拉克斯(Eva Pierrakos)写的反省的书籍。
大多数科学家是因为惧怕生活而成为科学家的。在科学中有所成就是非常诱人的,因为不必与人发生冲突,不必忍受人际关系的痛苦,不必在世界上艰苦前进就可以成就这些东西。脱离尘世是多么的诱人?D?D这个有几分清净的世界,你可以全力施展你的才华,而没有任何痛苦。解决问题的痛苦和生活中的痛苦比起来是微不足道的。
内省不是一种科学活动:它不可重复,没有关于怎样内省和你要追求什么的好理论。通过对自己的反省可以欣赏到宇宙的神秘,这是很奇怪的。你并不需要试图去发现物理定律。

参考文献编辑本段回目录

→如果您认为本词条还有待完善,请 编辑词条

词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。
0

标签: Roy Nutt

收藏到: Favorites  

同义词: 暂无同义词

关于本词条的评论 (共0条)发表评论>>

对词条发表评论

评论长度最大为200个字符。