[转载] 程序设计语言的进化

来源:互联网 发布:php在线预览pdf文件 编辑:程序博客网 时间:2024/06/10 05:35

程序设计语言的进化

中国科学院软件研究所 宋靖宇



1967年5月20日,在挪威奥斯陆郊外的小镇莉沙布举行的IFIP TC-2 工作会议上,挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布了Simula 67语言。Simula 67被认为是最早的面向对象程序设计语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承。之后,在1968年2月形成了Simula 67的正式文本。

也是在1968年,荷兰教授E.W.Dijkstra提出了“GOTO语句是有害的”观点,指出程序的质量与程序中所包含的GOTO语句的数量成反比,认为应该在一切高级语言中取消GOTO语句。这一观点在计算机学术界激起了强烈的反响,引发了一场长达数年的广泛的论战,其直接结果是结构化程序设计方法的产生。

相信当时没有任何人预见到当年发生的这两件事对后来计算机技术,特别是软件技术所产生的深远影响。尽管这两种方法的思想差异巨大,但是多年以后,无论是Ole-Johan Dahl和Kristen Nygaard,还是E.W.Dijkstra,都因其在这一年所取得的成就,获得了计算机界的诺贝尔奖——图灵奖。

随着计算机技术的迅猛发展,硬件成本不断降低,而软件成本却不断增加,因此,如何缩短软件生产周期和提高维护效率,研制出高质量的软件产品成为一个重要课题。

程序设计思想的进步

在20世纪60年代,软件曾出现过严重危机,由软件错误而引起的信息丢失、系统报废事件屡有发生。为此,1968年,荷兰学者E.W.Dijkstra提出了程序设计中常用的GOTO语句的三大危害:破坏了程序的静动一致性;程序不易测试;限制了代码优化。此举引起了软件界长达数年的论战,并由此产生了结构化程序设计方法,同时诞生了基于这一设计方法的程序设计语言Pascal。

由瑞士计算机科学家Niklaus Wirth开发的Pascal,一经推出,它的简洁明了以及丰富的数据结构和控制结构,为程序员提供了极大的方便性与灵活性,同时它特别适合微计算机系统,因此大受欢迎。结构化程序设计思想采用了模块分解与功能抽象和自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子程序,便于开发和维护。因此,结构化方法迅速走红,并在整个20世纪70年代的软件开发中占绝对统治地位。

但是,到了70年代末期,随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化,于是面向对象技术开始浮出水面。

面向对象程序设计方法起源于Simula 67语言。在程序设计语言的发展史上,20世纪60年代后期是承上启下的重要时期。这一时期有三种重要的语言问世,即Simula 67、由一批顶尖计算机科学家共同设计的Algol 68、以及为IBM 360系列机配套开发的PL/I。这三种语言虽均有所创新,但Simula 67的面向对象概念的影响是最巨大而深远的。它本身虽因为比较难学、难用而未能广泛流行,但在它的影响下所产生的面向对象技术却迅速传播开来,并在全世界掀起了一股OO热潮,至今盛行不衰。面向对象程序设计在软件开发领域引起了大的变革,极大地提高了软件开发的效率,为解决软件危机带来了一线光明。

但是,事实表明,面向对象程序设计方法虽然比结构化方法能更自然地表现现实世界,但它不是灵丹妙药,并不能解决所有问题,它本身存在固有的内在的局限性。最近兴起的面向方面编程(AOP)正是为了改进上述程序设计方法学的不足。AOP被视为是“后”面向对象时代的一种新的重要的程序设计技术。而从更广义的范畴看,在过去的40年里,软件体系结构试图处理日益增长的软件复杂性,但复杂性却仍继续增加,传统的体系结构好像已经达到了其处理此类问题的极限。新兴的Web 服务通过允许应用程序以对象模型中立的方式实现互连,从而提供了一个更强大、更灵活的编程模型,并将对软件开发方法产生巨大的影响。

软件开发语言龙虎斗

从1952年第一个高级语言Short Code诞生到现在,程序设计语言先后出现了不同类型、不同版本不下数百种语言。它们有的昙花一现,有的被吸收合并到其他语言中,也有一些语言不断地被完善、更新、发展。在这个过程中,开发环境提供商之间也不断地进行着激烈的竞争。

1964年诞生的Basic语言是较早出现且至今仍有较大影响的语言之一。1975年,微软以Basic解释器创业,尽管1987年Borland 公司成功地推出了Turbo Basic 1.0,但由于其内部原因而放弃了Basic市场,从而使微软在Basic领域是一览众山小。1991年,Visual Basic 1.0问世,它允许程序员在一个所见即所得的图形界面中迅速完成开发任务。1998年发布的Visual Basic 6.0是传统Visual Basic中功能最全、应用最广的一个版本。伴随着.NET平台的横空出世,Visual Basic.NET又以一个全新的面目出现在我们面前。

尽管Basic语言诞生较早,但其真正商业化是从1983年开始的。而在这一年,Borland公司又推出了著名的Pascal编译器Turbo Pascal 1.0,在一定程度上抢了Basic的风头。Turbo Pascal 1.0正式开创了Borland影响PC开发工具十几年的历史。尽管微软也曾经推出了Microsoft Pascal,但无疾而终。随着Turbo Pascal 第9版的推出,Pascal语言也得到了不断的发展。1995年,Borland发布了Delphi,使Pascal成为一种可视化编程语言。Delphi 1.0号称“VB Killer”,又一次在危难的时刻拯救了Borland。

微软和Borland之间的竞争并不只是在Basic和Pascal方面,在C语言世界里也同样如此。早期的C/C++开发环境是Borland于1989年5月发布的Turbo C。同一时期,微软也推出了Microsoft C/C++,不过它直到6.0版,市场反映都一直平平。之后,Borland C/C++ 3.0问世,开启了Borland雄霸C/C++编译器常达五六年之久的序幕。尤其是其3.1版的畅销,使Borland一举击溃了Microsoft C/C++,市场占有率超过了50%。但后来由于Borland决策上的一些失误,随后的4.0和4.5版市场反映极差,相反微软于1995年成功地推出了Visual C++ 1.0,并获得市场好评,它不但在编译器方面能与Borland C/C++ 3.1相抗衡,在整合发展环境方面更加领先。应该说,这是两家公司C/C++战役的转折点,也是C/C++发展的里程碑。在此之后,Visual C++一路高歌猛进到6.0版,并最终发展为.NET时代的C#。不过,Borland也并没有一蹶不振,2003年5月,Borland针对.NET发布了C#Builder,之后又发布了C++ BuilderX。

说到编程语言,不能不说Java。Java是Internet时代的产物,同其他前辈语言相比,其最大的特色在于“一次编码,多处运行”。Sun公司是Java语言的缔造者,但对Java开发环境做出最大贡献的是Borland的JBuilder系列产品。1997年,Borland发布JBuilder 1.0,进军Java跨平台开发。这之后,微软曾试图染指Java开发环境市场,并影响Java的技术发展,并在Visual Studio系列中,将Visual J++从1.0直接跨越到6.0。但是,JBuilder至今仍控制着Java的开发环境市场。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq发送的文件失效了怎么办 苹果手机微信数据损坏怎么办 微信文件被清理怎么办 老婆与别人聊暧昧话题怎么办 微信不小心删了聊天记录怎么办 当聊天没话题了怎么办 老婆和别人频繁聊天老公怎么办 qq上把人屏蔽了怎么办 注册微信验证码发不出去怎么办 两个人在一起没有话题怎么办 两个人聊天没话题怎么办 qq邮箱限制信用卡账单怎么办 和朋友聊天没话题怎么办 跟朋友聊天没话题怎么办 和朋友聊天找不到话题怎么办 qq加好友忽略了怎么办 微信加好友收不到验证消息怎么办 陌陌距离乱了怎么办 qq不能点赞了怎么办 快递发货地址写错了怎么办 订的海鲜不发货怎么办 拉人进群频繁了怎么办 qq群邀请过于频繁怎么办 qq一直被拉进群怎么办 qq号被冻结解封不了怎么办 2018qq自动进群怎么办 手机视频传到电脑倒着怎么办 qq群图片过期了怎么办 q号加不了群怎么办 q号加不了好友怎么办 q号被冻结了怎么办 qq群200人满了怎么办 畅聊之火消失了怎么办 手机版WPS打开文档空白怎么办 空白表格怎么打印不出来怎么办 微信朋友太少怎么办 js和CSS加载失败怎么办 熹妃q传密码忘了怎么办 苹果手机淘宝占用空间大怎么办 苹果相册储存空间不足怎么办 企业网银里的收款名单丢失怎么办