您的位置:首页 > 其它

ADA的故事

2014-04-15 19:55 267 查看

Ada的故事

  多年前,美国军方要给一种计算机语言取个名字,大家提了许多动听的名字都觉的不太中意,后来有人提议,将这种计算机语言命名为:Ada。没有人提出异议。为什么大家都同意用这个名字呢?这还得从100多年前说起。

Ada是一名充满幻想的女孩

  1815年12月10日,英国。一个女孩降生了,她的母亲,一个有着杰出数学天赋的女人,人称“平行四边形公主”;父亲,一个狂热的充满幻想的诗人--拜伦。可是女孩从生下来就从没见过父亲。这位狂热的、浪漫的诗人结婚不久便离开了英国,再也没有回来。母亲给她起了个动听的名字:阿达(Ada)。那位诗人尽管离开了英国,当听说自己有了一个女儿时非常的高兴,可也非常的懊悔,但他始终没有回去看女儿一眼,只能用诗来表达自己对女儿的思念和歉疚,他的一首诗的名字就叫《阿达》。

  狂热的诗人36岁死于希腊,临死前唯一牵挂的就是阿达。

  而此时的阿达,跟随着母亲生活,阿达不仅继承了母亲的数学天赋,也秉承了父亲的性格,小小年纪也充满幻想,幻想成为一个大科学家、大诗人。母亲怕她走父亲的老路,竭力想改变她对诗歌的热爱,但无能为力,阿达曾对母亲说:“没有诗,要数学干什么?”

  当时的英国,科学风气盛行,包括许多妇女都在杂志上发表文章探讨数学等问题。阿达17岁那年,母亲请了著名的数学家摩根做她的老师,摩根就是现代计算机数学基础布尔代数的创始人之一。在他的影响下,阿达的数学天赋得到了充分的展现。同时阿达还被介绍到当时著名的翻译家——为剑桥大学工作的玛丽·索菲利那里学习。玛丽由衷地喜欢这个聪明而又刻苦,且充满幻想的女孩,也非常地支持并鼓励她在数学方面发展。此时的阿达对机械、建筑也充满兴趣,畅游在科技王国,就像少女在花园中徜徉,乐此不疲,流连忘返。她还同当时的一些著名科学家保持密切的联系,如法拉第等。

  结识巴贝奇

  1834年11月,阿达在一次宴会上遇到了一位对其一生产生重要影响的人——查尔斯·巴贝奇。此时的巴贝奇正到处游说他的计算机设想。当时的人们很少有人理会他,以为他是在“痴人说梦”。同样,他也将自己的设想全盘托出,讲给阿达听。此时的阿达只有18岁,但她听完他的设想并看了他的文稿后,彻底地领会了他的设想,并深深地为之陶醉。凭着她深厚的科学功底和丰富的想像力,她认为这是一个伟大的设想,世界将因之而改变。

  面对今天的现实,我们不能不为阿达的洞察力所折服,她的这一预言可是在一个半世纪以前提出的啊!

  参与研制计算机

  共同的追求,使两人成了忘年交,阿达的母亲曾试图阻止阿达与巴贝奇的交往,认为巴贝奇不过是个江湖骗子,不会给阿达好影响。这点阻力对于秉承父亲性格的阿达,算不了什么,她完全投入到了计算机的研制中去了,负责为巴贝奇设想中的计算机编写软件。

  1841年,巴贝奇在意大利都灵向人们详细地介绍他的设想,希望能引起大家的重视,但无人喝彩。他用法语出版的论文也不受人欢迎,但阿达执意要将其翻译成英文。翻译结束后阿达将文稿给巴贝奇看,巴贝奇发现:阿达不仅在论文中加入她特有的想像,而且补充了许多阿达独到的见解。阿达特别强调存储程序和数据的重要性,而这与今天的计算机技术不谋而合,并且拟订了一份设计图,这份设计图被公认为世界上第一个计算机程序。阿达在文中对计算机应用前景的展望,连巴贝奇自己都从来没有想到过。如:阿达认为,计算机应该发展成一个可用符号来表示任何事物的装置,这不正是今天的编程语言吗?她还预见到计算机可以用在纺织机械上,用卡片存储复杂的花样、可以用来绘图、演奏音乐。这些预言表明阿达是现代人工智能技术的拓荒者。

  阿达对论文的修改,使巴贝奇深感惊奇和鼓舞,他对别人称赞说:“阿达是个充满想像力和洞察力的女孩”,“她是个数字女神”。她将诗歌的激情融入了论文之中。

经过阿达翻译后的文稿其内容增加到原来的三倍,论文实际上成了两人合作的产物,但谦逊的阿达在署名的时候,只将自己的名字简单地署为:A.A.L。

  在后来的一系列论文中,阿达在计算机软件领域做出了许多开创性的贡献:如变量、递归、程序算法的提出等。

  短暂的一生

  阿达后来与威廉伯爵结婚,婚后生有三个孩子,但为了研制计算机,她将孩子们都放到母亲那里扶养,这对于一个女性,在当时是不被人理解的,好在丈夫非常支持她的研究工作,这使她深感欣慰。此时的巴贝奇已是一贫如洗,阿达也付出了许多。长期的研究耗费了大量的心血,身体状况也一天不如一天,疾病时时纠缠着她,但为了那个美丽的幻想成真,她夜以继日地工作。她的座右铭是:工作是我的报酬。

  1852年,阿达因癌症去世,同她的父亲一样,年仅36岁,没有等到计算机的诞生。如果她再多活一年,就会看到在瑞典,由乔治和爱德华根据巴贝奇的方案制造出的一台差分机,这不能不说是人类的一个遗憾:第一位软件工程师,却没有看到自己的设想结出的果实。

  尽管限于当时的制造条件,巴贝奇最终也没有造成理想中的计算机,但他们超前100多年的拓荒,对后来计算机技术的诞生和发展同样产生了深远的影响。当我们津津乐道ENIAC——第一台数字电子计算机的时候,也不应该忘记人类这一智慧的火花,在这之前的100多年,已经由巴贝奇和阿达点燃了。

  阿达、巴贝奇两人对计算机事业的贡献就好像火对于人类。

  他们是钻燧取火的人,是盗得火种的普罗米修斯。

  让我们记住巴贝奇,也记住这位杰出的女性———阿达(Ada)。

  用她的名字给一种计算机语言命名,只能寄托我们对她的纪念和钦佩,却远远不能表达出她为计算机技术作出的重要贡献。

-- 什么是 Ada ? --

  Ada是一种表现能力很强的通用程序设计语言,它是美国国防部为克服软件开发危机,耗费巨资,历时近20年研制成功的。它被誉为 第四代计算机语言的成功代表。与其他流行的程序设计语言不同,它不仅体现了许多现代软件的开发原理,而且将这些原理付诸实现。因此,Ada语言的使用可大大改善软件系统的 清晰性, 可靠性, 有效性, 可维护性。Ada是现有的语言中无与伦比的一种 大型通用程序设计语言,它是现代计算机语言的成功代表,集中反映了 程序语言研究的成果。 Ada的出现,标志着软件工程成功地进入了国家和国际的规模。在一定意义上说,Ada还刺破了“冯.偌依曼思维模式”
(Von Newman Mind-set) 的桎梏,连同Ada的 支持环境(APSE)一起,形成了新一派的所谓 Ada文化。它是迄今为止 最复杂,最完备的软件工具。 Ada语言是 美国国防部指定的 唯一的一种可用于 军用系统开发的语言,我国军方也将Ada做为军内开发标准(GJB 1383《程序设计语言Ada》)。

--------------------------------------------------------------------------------

-- 为什么称作 Ada --

美国国防部之所以把这种语言取名为Ada,是为了纪念奥左斯特. 艾达.洛夫莱斯伯爵夫人 (Augusta Ada Lovlace 1815-1852),她是英格兰诗人拜伦(Byron)勋爵的女儿,曾对现代计算机技术之父查尔斯.巴贝奇(Charles Babage)的笔记,手稿进行了整理和修正。从某种意义上说,她是世界上第一位计算机程序员。

--------------------------------------------------------------------------------

-- 为什么使用 Ada? --

在明白这个问题之前,需要了解 Ada 的一系列特性。Ada 最初设计就是一门大型语言,因此在很多编程的重要问题上都有所考虑,以下文字摘自《 Ada Reference Manual》:

Ada 最初设计时关注于 3 个最重要的问题:程序的稳定性和可维护性,程序设计和人的行为接近,并且高效。这份语言的修订版是为了提供更大的灵活性和扩展性,存储管理的额外控制和同步,以及标准化的程序包以支持重要的应用程序领域,同时保留原来的重点:稳定性,可维护性,和高效。对于程序设计语言促进可靠性和简化维护难度的需求已被确立。因此程序可读性的重要性高于轻松地写代码。例如,语言规则要求程序变量应当明确声明并指定它们的类型。由于变量的数据类型是不变的,编译器可以确保对于变量的操作适用于该类型的对象。另外,有错误倾向的符号已经避免,并且语言语法避免了编码形式的使用,使更倾向于英语的结构。最后,Ada
语言提供了程序单元单独编译的功能,使程序开发和维护简便,同样也提供了在一个单元内多个单元之间的检测。考虑人类程序员的问题也在设计时被强调。总而言之,在继续避免过多复杂句型的缺陷的同时,尝试以一致系统的方式保持相对较少的底层概念。

上面的文字还是过分抽象,但 Ada 的以下特性几乎是公认的:

易读性---专业人员往往要读很多程序,因此要避免像 APL 那种以过于简单的符号编程的语言,虽然它们的编程速度快,但基本上是不可读的。因此目前有种说法是:读一个程序比写类似的程序还要费时,这也是有一定道理的;特别是 C/C++ 的风格比较松散,很多语法都在滥用,使程序可读性相当低,由于 Ada 的语法接近人的语言,即使是初学者,也不会感到很难读懂。

强类型---保证了每个对象有明确定义的值域,并防止了不同概念的逻辑混淆。许多错误可以被编译器发现,而对于其它语言来说,则可能导致一个不正确的程序。

异常处理---实际中,一个程序不可能保证它的正确性;因此,通过异常机制及分块结构,将错误发生的影响控制在某一特定领域。

抽象数据类型---将数据描述的细节同基于该类型数据的操作相分离,以提高可移植性和可靠性。

多任务---使程序变成一系类的并发活动,而不是单一的顺序活动;这在很多领域,特别是对于服务器程序来说有重要意义,这比调用操作系统提供的功能更有易可移植性和可靠性。

类属单元---很多情况下,程序的某逻辑部份与运行时值的类型无关。因此,需要提供一种机制,从一个样板中产生多个相应的程序段,以提高代码的可重用性。

大型编译---封装机制,单独编译及程序包的分层机制等对于编写大规模的程序来说是必不可少的。

--------------------------------------------------------------------------------

-- 为什么 Ada 不流行? --

1) 一些知名人物狠批了 Ada 一顿。Tony Hoare 在他的图灵奖的演讲中将 Ada 狠贬了一顿,从字面上说就是:如果我们使用 Ada,人类的前途将很危险。但他的批评似乎有点过时了。他所说的多种将使地球上的生物完蛋的事物之一就是使用异常!虽然异常会被滥用,但这是所有语言特性共有的毛病,并且,现在,每个人似乎都认为异常是一个很不错的主意。Ada 在 1983 年以前没有标准化,而 Hoare 的讲话是在 1980 年。Ada 语言从 1980 的草案到 1983 年的最终版本,变化还是相当大。Parnas,
Dijkstra 也批评 Ada 语言,特别是它的规模,Hoare 的言论可能影响了 ACM 的投票人,以致在投票中反对 Ada 语言。

2) 大部份程序员还无法接受 Ada 的一些设计。如在程序运行时发现错误,再用调试器去寻找和修正错误是编程的正常方法。他们不知道很多错误可以由编译器检测,并且,他们知道,没必要这样做,因为修正错误相当具有挑战性,可以说有点有趣。因此,对于新特性的不解,也就将 Ada 贬了一顿。

3) 早期编译器过分昂贵,并且编译器(直至今天)很难实现。作为语言设计者,Jean Ichbiah 对于语言的具体实现关注不够。(作为对比,Tucker 是编译器程序员的语言设计者。)对此的明显的一个回应就是没有便宜的编译器(在 US$50 - US$100 之间)你能在家里的 PC 上运行,所以没人可体验 Ada 语言。Ada 本就错过了 PC 革命的大船,并且没有可能和 Pascal,C 一样有群众基础(因为这些语言相对来说实现较简单,因此更加容易的存在) (更少的播放时间)。市场只选择实用性,编译器的成本比语言本身的质量更加重要。这可能不是很明智的选择,因为人力劳动来除错所消耗的成本远大于编译器,但因为在业界这没有度量标准,决策制定者不知道这些。

4) 整个业界都致力于销售弥补 C 语言缺陷的软件,如寻找内存泄漏,类型错误等。像 Les Hatton 他们要维护自己的既得利益,这样就要维护事情的原样,因为他们的生计依赖于那些使用错误较多的语言的人。当你告诉他们,如果使用 Ada,他们可以扔掉其它工具时,这些人不会站在你这边,因为对他们而言吃饭比新技术更重要。

5) Ada 83 没有类型扩展和动态联编(type extension and dynamic binding),因此错过了对象技术革命的船,而在80年代流行使用面向对象的语言。当时,Smalltalk 是很流行的面向对象语言,并且速度相当慢,因为它是一门解释性语言。令人伤心的是,很多人至今没注意到这点,并得出结论:面向对象程序设计使你的程序效率低下;这就压制了包含面向对象特性到确定性的实时语言中去的想法。(例如:在 SIGAda *今年*(1998) 有人打电话询问,解释说他是搞时实时系统的,他想明白他是否要担心面向对象程序设计!有些谣言实在顽固。)

6)政府的管制。国防部对于 Ada 的开发介入比较多,其中有些做法令人比较不满。同时挂着美国国防部名头的语言,可能给人两种感觉:1.出于对政府的不满,将气也出到 Ada 头上,认为 Ada 只是政府作的东西,不怎么样;2.国防部的语言,跟我们这些民用程序程序没什么关系。可以说,由于对于 Ada 的误解,致使目前 Ada 还很不流行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: