面向对象程序设计的历史与发展

合集下载

程序设计语言发展史

程序设计语言发展史

程序设计语言发展史程序设计语言是计算机科学的核心领域之一,已经发生了很多变化和发展。

它是计算机程序员用来编写和运行计算机程序的工具,它在计算机科学的发展历程中扮演了非常重要的角色。

本文将为您介绍程序设计语言发展的历史、特点以及未来发展趋势等方面的内容。

程序设计语言的早期历史计算机程序设计语言的历史可以追溯到20世纪50年代初的Fortran(Formula Translation)语言。

Fortran是一种针对科学和工程计算而设计的高级语言,它使得程序员能够更简单地编写复杂的计算程序。

随着计算机技术的进步,计算机的应用领域不断扩大,越来越多的人开始学习和使用Fortran语言。

在Fortran之后不久,C语言开始出现在计算机程序设计语言的舞台上。

C语言是由Dennis Ritchie和Ken Thompson在贝尔实验室中设计的一种通用高级语言,具有高效的编译器、可移植性和易于学习的特点,很快就被广泛应用于操作系统、编译器和其他系统软件等方面。

C语言的出现标志着程序设计语言向更加灵活和可移植的方向发展。

1980年代是程序设计语言的重要时期1980年代是计算机技术迅速发展的时期,也是程序设计语言历史上的一个重要时期。

在这个时期,出现了许多新的编程语言,如Pascal、Ada、C++、Objective-C等语言。

Pascal是由Niklaus Wirth在20世纪70年代后期设计的一种结构化编程语言。

它被广泛地应用于当时的教育和科学计算领域,因为它可读性强、容易学习,所以被广泛地作为计算机课程的编程语言。

Ada技术也是80年代发展起来的。

它是由美国国防部为了促进软件标准化而制定的一种高级语言。

Ada语言被设计成一个通用的高级语言,在航空、武器系统等领域得到了广泛的应用。

Ada语言的特点是可靠、安全和可维护性高,这也是这种语言能够获得广泛应用的原因之一。

C++是对C语言的一种扩展。

它是在20世纪80年代初由Bjarne Stroustrup发明的。

了解编程语言的历史与发展趋势

了解编程语言的历史与发展趋势

了解编程语言的历史与发展趋势编程语言是与计算机交互的工具,它们用于编写计算机程序来实现各种不同的任务。

编程语言起源于20世纪50年代,自那时以来,经历了多次演化与变革,为开发者提供了更强大、更灵活的工具。

本文将介绍编程语言的历史发展,以及当前的发展趋势。

一、编程语言的起源与发展1.机器语言最早期的计算机程序使用的是机器语言,它是计算机硬件能够识别和执行的一套二进制指令。

机器语言需要直接操作底层硬件,并且非常难以阅读和编写。

这种语言完全依赖于计算机硬件的结构,不具备可移植性。

2.汇编语言随着计算机硬件的发展,人们引入了汇编语言。

汇编语言是机器语言的抽象表现形式,使用助记符代替了二进制指令,使程序的可读性得到提高。

每一条汇编指令仍然直接对应于一条机器指令,需要由汇编器转换为机器语言。

3.高级编程语言20世纪50年代晚期,人们开始开发更高级的编程语言,通过引入更抽象的概念和语法,使得程序更加易读、易写并且具有更高的可移植性。

1958年,约翰·麦卡锡(John McCarthy)开发出了Lisp语言,它被认为是第一种高级编程语言之一。

Lisp采用了一种基于表达式的语法,并且首次引入了垃圾回收等概念,这些概念后来成为其他编程语言的基础。

随后,FORTRAN、COBOL、ALGOL等编程语言相继问世。

FORTRAN主要用于科学计算,COBOL专注于商业应用开发,而ALGOL则提供了一种通用的过程式编程语言的范式。

1960年代,Charles H. Moore开发了Forth语言,它是一种基于栈的编程语言,具有简洁的语法和高度的可定制性。

虽然Forth没有像其他编程语言那样广为流行,但它对后来的编程语言设计产生了深远的影响。

1970年代,C语言问世,它由丹尼斯·里奇(Dennis Ritchie)在贝尔实验室开发。

C语言具有简洁的语法和强大的表达能力,成为了后来操作系统、网络编程等领域的主流语言。

程序设计语言的发展及其特点

程序设计语言的发展及其特点

程序设计语言的发展及其特点随着计算机科学的迅速发展,程序设计语言也在不断演进,不断推陈出新。

本文将从历史角度探索程序设计语言的发展,并介绍现代程序设计语言的一些特点。

1. 古代的程序设计语言在计算机科学发展的早期阶段,机器语言是最早被使用的一种程序设计语言。

机器语言是由二进制代码组成的,需要直接操作计算机的硬件指令。

这种语言非常低级,编写和理解起来非常繁琐。

然而,它奠定了程序设计语言的基础。

2. 高级程序设计语言的出现随着计算机科技的不断进步,高级程序设计语言逐渐取代了低级的机器语言。

Fortran是第一种广泛应用的高级程序设计语言,它被广泛应用于数值计算领域。

随后,COBOL和ALGOL等语言也相继问世。

3. 面向对象编程的兴起20世纪80年代,面向对象编程(OOP)开始流行起来。

Smalltalk 和C++等语言引领了OOP的潮流,程序员可以定义类和对象,并使用继承、多态等特性来组织代码。

OOP增强了代码的可重用性和可维护性。

4. 脚本语言的崛起脚本语言具有简洁灵活的语法,更加方便程序员进行快速开发和调试。

Perl、Python和Ruby等脚本语言逐渐流行起来,被广泛应用于Web开发、自动化测试和数据处理等领域。

5. 声明式编程的应用随着软件开发的需求不断变化,函数式编程和逻辑编程等声明式编程方式也逐渐受到重视。

函数式编程语言如Haskell和Clojure,以及逻辑编程语言如Prolog和Datalog,提供了更加抽象和高层次的思维方式。

6. 并发和并行编程的发展随着多核处理器和分布式系统的普及,编写并发和并行程序成为了一个重要的挑战。

编程语言如Erlang和Go通过提供并发原语和轻量级线程来简化并发编程。

CUDA和OpenMP等库为并行编程提供了便利。

7. 静态和动态类型语言的比较静态类型语言在编译时检查类型,而动态类型语言在运行时检查类型。

C、Java和C++等语言是静态类型语言,具有良好的性能和较强的类型安全性。

程序设计的发展历程

程序设计的发展历程

程序设计的发展历程程序设计是计算机科学中非常重要的一个领域,它的发展历程充满了不断的创新和进步。

从最早的机器语言到现代高级编程语言的出现,程序设计经历了许多重要的里程碑。

本文将以程序设计的发展历程为主题,探讨其中的关键发展阶段。

1. 机器语言与汇编语言时代在计算机诞生之初,程序设计只能通过编写机器语言或者汇编语言来完成。

机器语言是计算机能够直接识别和执行的二进制代码,而汇编语言则是机器语言的一种助记符表示方法。

这个时期的程序设计非常繁琐和复杂,需要直接操作计算机底层的硬件。

2. 高级编程语言的出现为了简化程序设计的过程,人们开始研究和开发高级编程语言。

高级编程语言是一种更接近人类自然语言的编程语言,代码更易读写,并且具有更高的抽象能力。

FORTRAN(公式翻译)是最早的一种高级编程语言,它于1957年诞生,被广泛应用于科学计算和工程领域。

随后,ALGOL、COBOL等高级编程语言相继问世。

3. 结构化程序设计的提出20世纪60年代,结构化程序设计方法被提出,该方法通过使用顺序、选择和循环等结构来组织和控制程序的执行流程,使程序更易读、易懂、易维护。

结构化程序设计方法的提出极大地提高了程序的可靠性和可维护性,成为现代程序设计的基石。

4. 面向对象编程的兴起20世纪70年代末,面向对象编程(Object-Oriented Programming,简称OOP)开始兴起。

面向对象编程是一种以对象为基本单位,通过封装、继承和多态等特性来组织和设计程序的方法。

面向对象编程使得程序的设计更加模块化和灵活,大大提高了软件开发的效率。

C++和Java是最具代表性的面向对象编程语言。

5. 互联网的普及与Web编程的发展20世纪90年代,互联网的普及使得Web编程成为程序设计的重要领域。

Web编程是指利用Web技术开发和设计网页和网站的过程。

HTML、CSS和JavaScript等技术的出现,使得Web应用变得丰富多样,用户体验大大提升。

面向对象的程序设计语言的发展与实现

面向对象的程序设计语言的发展与实现

面向对象的程序设计语言的发展与实现随着计算机技术的不断发展,编程语言也在不断地改进和发展。

面向对象的程序设计语言就是其中之一。

在本文中,我们将探讨面向对象的程序设计语言的发展历程以及实现方式。

一、面向对象的程序设计语言的发展历程1. 早期的面向对象编程早期的面向对象编程语言是模拟面向对象编程的语言,例如Simula和Smalltalk。

Simula是第一个支持类和子类概念的语言,它被开发出来的主要目的是用于在模拟船只运行和停靠方面进行研究。

Smalltalk是第一个完全面向对象的编程语言,它被设计为支持图形用户界面。

2. C++语言C++是一种跨平台的编程语言,它继承了C语言的基本语法,并引入了类、封装、继承和多态等面向对象编程的特性。

C++是一种比较流行的面向对象编程语言,在游戏制作、桌面软件和嵌入式系统等方面都有广泛的应用。

3. Java语言Java是由Sun公司开发的一种高级编程语言,它基于C++语言,并且支持面向对象的编程。

Java在很多方面都比C++更好用,例如它支持垃圾回收、自动内存管理、跨平台等特性。

Java很流行,很多大型企业都使用它来开发软件。

4. Python语言Python是一种高级编程语言,它容易学习,语法简单,支持面向对象编程。

Python在数据科学、人工智能、机器学习等方面都非常流行。

Python的成功得益于其简洁、可读性和可维护性,同时也支持很多第三方库和框架。

二、面向对象编程的实现方式1. 类和对象类是面向对象编程语言中的基本概念,它是一种自定义数据类型。

程序员可以在类中定义属性和方法,从而实现数据的封装和功能的实现。

对象是类的实例,它包含了类中所有的属性和方法。

对象可以被创建和实例化,从而实现对类的使用。

2. 继承继承是一种面向对象编程的重要特性。

它允许程序员创建一个新类,该类从已经存在的类中继承了属性和方法。

在继承过程中,程序员可以重写已经存在的方法,或者定义新的属性和方法。

程序设计语言的发展历程是

程序设计语言的发展历程是

程序设计语言的发展历程是程序设计语言的发展始于20世纪50年代,随着计算机技术的不断发展和应用需求的扩大,程序设计语言也不断演化和创新。

以下是程序设计语言的主要发展历程:1. 机器语言:在计算机刚刚问世的早期阶段,程序员需要直接使用二进制代码来编写程序。

这种编程方式需要深入了解计算机底层结构,非常繁琐且易出错。

2. 汇编语言:为了简化编程过程,汇编语言应运而生。

汇编语言通过使用助记符来代替二进制代码,使得程序员能够更加方便地编写程序。

然而,汇编语言仍然需要对底层硬件有一定的了解。

3. 高级程序设计语言:20世纪50年代末,高级程序设计语言开始出现,这种语言使程序员能够更加抽象地表达程序逻辑。

最早的高级程序设计语言包括Fortran、Cobol和Lisp等。

这些语言提供了更高的可读性和可移植性,使程序开发更加高效。

4. 结构化编程语言:在20世纪60年代中期,结构化编程成为主流。

这种编程范型关注程序结构的合理性和模块化,旨在提高程序的可维护性和可理解性。

结构化编程语言如Pascal和C 语言在此时应运而生。

5. 面向对象编程语言:20世纪80年代,面向对象编程语言开始盛行。

面向对象编程语言将数据和操作封装为对象,通过继承和多态等机制实现代码复用和模块化开发。

C++和Java是典型的面向对象编程语言,它们在软件开发中广泛应用。

6. 脚本语言和动态语言:脚本语言和动态语言的发展是为了进一步提高程序的灵活性和开发效率。

脚本语言如Perl和Python以及动态语言如JavaScript和Ruby,注重快速开发和易于理解的特点,适用于Web开发和系统管理等领域。

7. 领域特定语言:近年来,随着软件系统日益复杂,领域特定语言(DSL)开始兴起。

DSL是一种专门针对特定领域的编程语言,旨在提高开发效率和代码可读性。

例如,SQL用于数据库查询,MATLAB用于科学计算,HTML和CSS用于Web开发等。

总之,程序设计语言的发展历程是一部不断创新和演化的历史,不断提高了程序员的生产力和程序的质量。

程序设计语言发展历史

程序设计语言发展历史

程序设计语言发展历史程序设计语言是计算机科学的重要组成部分,随着计算机技术的不断发展,程序设计语言也经历了多个阶段的发展和演变。

下面将分别介绍机器语言、汇编语言、高级语言、面向对象编程(OOP)、函数式编程、动态类型语言、静态类型语言、解释型语言和编译型语言的发展历史。

1.机器语言机器语言是计算机最早的编程语言,它直接利用计算机硬件的指令集进行编程。

机器语言的优点是执行速度快,但是代码可读性差,难以维护和修改。

由于每个程序都需要手动编写,因此编写效率低下,开发周期长。

2.汇编语言汇编语言是机器语言的抽象,它使用助记符来表示机器指令。

汇编语言的优点是比机器语言更容易编写和理解,但是它仍然需要程序员手动编写代码,并且需要花费大量时间进行调试和优化。

3.高级语言高级语言是一种更接近人类语言的编程语言,它包括了变量、数据类型、控制结构等基本概念。

高级语言的优点是编写效率高,代码可读性强,易于维护和修改。

随着技术的发展,高级语言逐渐分为面向过程编程和面向对象编程两种风格。

4.面向对象编程(OOP)面向对象编程是一种以对象为基础的编程风格,它将数据和操作封装在一个对象中,并通过类和继承来实现代码的重用和扩展。

OOP的优点是提高了代码的可重用性和可维护性,同时也增加了代码的复杂度和学习难度。

5.函数式编程函数式编程是一种基于函数的编程风格,它将计算过程看作一系列函数的调用。

函数式编程的优点是代码简洁、易于理解和实现,同时具有较好的并发性能和可移植性。

但是函数式编程也存在一些问题,如代码可读性差、难以理解等。

6.动态类型语言动态类型语言可以在运行时动态地改变变量的类型,这种语言通常具有较高的灵活性和可读性。

动态类型语言的优点是可以减少类型转换的错误和代码的复杂性,同时也提高了代码的可读性和可维护性。

但是动态类型语言也存在一些问题,如类型不安全、难以调试等。

7.静态类型语言静态类型语言需要在编译时进行类型检查,以确保变量类型的正确性。

第一章 面向对象的引入和发展

第一章 面向对象的引入和发展

第一章面向对象的引入和发展本书专门讨论面向对象的方法及有关的主要问题因此在本章一开始首先要讨论为什么要引入面向对象的方法及其讨论范围之后再讨论面向对象的书四个主要方面面向对象基础及面向对象程序设计语言利用UML进行面向对象的分析与设计面向对象的设计模式面向对象的设计原则以及面向对象的数据库1.1 面向对象方法的发展历程面向对象的方法的研究正在引起全世界越来越强烈地关注和高度重视被誉为研究最新技术的好方法针对日趋复杂的软件需求的挑战软件业界开始崇尚利用面向对象的方法和思想进行软件开发与人类发明史上的许多创举不同面向对象不是瞬间出现的面向对象不是某个人的突发奇想而是许多人经历多年研究积累的产物面向对象的方法起源于面向对象的程序设计语言在20世纪60年代中期Simula-67的设计者Dahl和Nygaard 提出对象object的概念在程序设计语言中开始使用数据封装(data encapsulation)的概念在20世纪70年代Liskov使用抽象数据类型(ADT)的理论和实现有了重大的进展奠定了面向对象的基础Liskov最著名的研究成果是CLU语言支持隐藏内部数据表示方法从20世纪70年代起Xerox公司的 Palo Alto 研究中心经过对Smalltak7274几经连续不断地研究改革后在1980年推出了Smalltalk-80它在系统设计中强调对象概念的统一引入对象对象类方法实例等概念及术语采用了动态联编及单继承机制体现了面向对象方法的许多重要概念对面向对象方法学的形成和发展起了重大作用于此同时Bell实验室的B.Stroustrup着手在C语言的基础之上加以扩展使之成为一个面向对象的语言定名为C++由于C语言在80年代已成为通用的开发语言它不仅可以用于微机而且可以用于范围很宽的计算机结构及环境因此在C语言的基础上扩展而成的C++虽然不是纯粹的面向对象语言却继承了C的语言构造易学易用不需特殊的计算机平台这些比Smalltalk-80明显的优点受到计算机界的普遍欢迎许多C++商业版本和工具相继出现原来阻碍面向对象程序设计语言推广使用的性能价格比问题也顺利地得以解决所以C++的问世促进了面向对象技术的发展java语言与internet有着直接的关系它采用了类C++的风格是一个比较严格的面向对象的语言并且可以跨平台运行用java写的applets可以嵌入HTML中被解释执行当前许多系统已经利用java来编写并能在多种平台上运行另外还有一些其它的面向对象的程序设计语言也在80年代相继出现如objective-C Eiffel CommonLOOPS等许多基于框架Frame-based的知识表达系统提供了面向对象的特征Tertronix和Data General公司提供了面向对象辅助设计和工程系统象O2ITASCA及ObjectStore等面向对象的数据库系统已日趋成熟并已进入商品化许多Client/Server数据库开发工具都采用了面向对象的方法与技术如BORLAND INTERNATIOAL公司的DELPHI POWERSOFT公司的POWER BUILDER和INFORMIX的NEW ERA等在20世纪90年代后期Grady Booch Ivar jacobson及Jim Rumbaugh三人尽管他们在面向对象领域各有各自的主张但是他们通力合作将面向对象用合理的符号表示产生了统一建模语言(Unified Modeling Language, UML)这个图形化的建模语言既有可视的表达形式又有严谨的语义支撑1.2 引入面向对象方法的动机之所以面向对象的方法被广泛采用部分原因是源于人们长久以来的一个希望希望面向对象的方法象以前其它的软件开发技术一样能够满足软件开发对于生产效率可靠性易维护性易管理等方面更高更快更强的迫切要求除此之外还有许多原因都促使了它的流行面向对象的方法强调从问题域的概念到软件程序和界面的直接映射心理学的研究也表明把客观世界看成许多对象更接近人类的自然思维方式因此面向对象方法非常易于理解解决问题更加具有针对性因此利用面向对象开发的软件具有很好的可维护性可扩展性和可重用性因此软件的实现就不是那么复杂了在面向对象的方法中将数据和功能并在一起考虑这样的表述非常自然因此在分析和实现的隔阂变得非常小从另一方面考虑面向对象的方法取代的过程化的方法而广泛应用是因为面向对象的方法却是有明显的优点下面我们探讨一下过程化的方法与面向对象方法的差别在过程化的方法中系统是围绕着过程来组织的系统的运行通过过程间的数据传送来实现的在该方法中过程和数据清除地分开因此重点分别集中在数据结构算法和顺序步骤上因此过程非常难以重用过程化方法还缺乏强有力的可视化建模技术该方法在分析和实现不同阶段的概念的差别很大因此需要进行概念上的转换因此造成了分析设计和实现间的范畴移位设计模型离实现还有很长的一步而面向对象的方法中系统中系统是围绕着对象组织的系统的运行是通过对象间的消息传递而运行的相关的数据和行为捆绑在对象中将问题域建模为对象使得在实现时非常自然地反应现实问题可视化的模型表达能力非常强使得人们易于理解支持强有力的概念例如抽象封装继承多态等可视化的问题模型可以演变为问题解决模型设计模型距离实现只有很小的一步1.3 面向对象方法的益处面向对象的方法是实用的但不是万能的它还不够完美面向对象的方法虽然充满挑战但的确是一种有效的软件开发方法我们不能以一种极端地方式对待面向对象的方法而应该认真研究面向对象方法并将面向对象的方法纳入开发软件及其研究的长期计划中去下面讨论面向对象对软件开发的主要软件活动的内在影响1.3.1 需求分析结构化技术的过程分析和数据分析之间的边界从未解决数据流图的过程世界与实体关系图的数据世界难以共存过程和数据分析在某些场合可以满足要求而在某些场合就会发生冲突这种冲突在实时系统模型中尤为突出如控制过程与数据模型的对应关系经常变得不清晰面向对象方法在生命周期的早期就将过程和数据融合在一起尽管不能明确地称为过程和数据分析但是在谈论面向对象时称动态和静态分析更为妥当使用面向对象概念将这两方面的分析很好地协调起来所以有人将面向对象中过程和数据的融合比喻成爱因斯坦的相对论中空间和时间的融合当然这种比喻不太恰当1.3.2 系统设计在系统设计时面向对象的方法既有优势又有不足面向对象的优势是使设计者将软件中棘手的问题利用封装特性隐藏起来这些问题包括难以理解的数据结构复杂的组合逻辑详细的过程和数据间的关系高深的算法及关键的设备驱动程序等面向对象方法的缺点是应用封装和继承性是结构本身变得复杂缺点与优点相比缺点反而并不是太突出了由于需求分析采用了面向对象的方法因此系统设计采用面向对象的方法非常自然这样结合面向对象的开发工具就可以实现整个软件生命周期的可追踪性尽管面向对象的系统设计是非常艰辛的但一旦完成他对处理大量复杂单元所带来的益处要多于采用其它设计技术1.3.3 软件构造采用面向对象方法建立系统最长考虑的质量要素是可重用性可靠性健壮性可可扩展性和可维护性等1可重用性面向对象方法在类的级别上而不是在各子程序级别上提高代码重用来改进软件的可重用性可以通过开发和建立合适的类库进行重用这种方法实际上是一种新的符合特定需求的非常高层的语言实际上对象类是一个足够复杂的有机体可以作为独立的软件单元从公司中的一个应用移植到另一个应用2可靠性可靠代码的运行具有可重复性和一致性仅当能用某种方法证明代码的正确性时代码才可以达到这些质量要求面向对象的代码采用类的不变式可以断言借助自身进行验证类的不变式是指给定类中的每一个对象必须满足条件例如类Person的不变式可能为dateOfBirth<=todaysDate类的不变式使得彻底地验证代码成为可能在静态分析或检查中可以验证设计或其结果代码是否满足设想的不变式条件虽然不可能证明代码绝对正确但面向对象确实使检查代码的行为变得更加容易3健壮性软件的健壮性是指软件发生故障时的完全恢复能力典型故障为语句错误内存错误外部设备错误及算法溢出健壮的软件可以捕获异常并执行故障恢复程序许多现代的面向对象语言和环境都支持错误检测和处理功能因此有利于开发健壮的软件获得健壮的面向对象代码的有效方法是将推断和恒定条件的概念和异常处理的概念相接合4可扩展性软件的可扩展性简单地描述为说明域与实现域之间是同构的用通俗的话来说就是解决问题的模型应该满足问题的模型为此应该用户的一些小的改变不会导致主要系统灾难性的后果当修改面向对象代码时很少会引发其它部分产生的莫名奇妙的问题由于面向对象基于更高层次上建立软件单元它更接近与生活的抽象因此比传统的技术更容易建立同构可扩展性经常和继承性一起使用用户常在已经声明的主题中增加变量对系统进行扩展使用面向对象技术可以在已由的超类下增加继承子类的方法实现扩展5维护性前面四个特性是可维护性的基础面向对象的方法可以提高前四个方面的质量因此能够在以下一个方面降低系统的维护开销可重用性降低了企业整个代码维护的费用可靠性减少了用户的不满意和对修改问题的抱怨健壮性确保了软件可维护而不致于在桌面上瘫痪可扩展性迎合了用户修改系统的渐近式倾向因此用户可以不断地对软件寻求更多的较小的修改1.3.4 分布式对象1989年面向对象管理组织OMG承担了一个十分艰巨的任务将几十个主要硬件和软件厂商统一在面向对象的可互操作标准上其最为显著的成果是公共对象请求代理体系结构(CORBA)这种软件体系结构支持分布在多个平台上的面向对象系统CORBA可以使对象互相交谈不仅可以在类似的机器上而且可以运行在不同操作系统或连接不同网络的机器上进行通信在CORBA环境中甚至可以用不同的语言编写类然后用不同的编译程序编译的方式建立对象此外最重要的是CORBA提供了各种标准服务这样省去了编写许多分布式系统必须的冗长代码Microsoft公司也推出了类似的标准叫作COM和DCOM但是目前只能运行在WINDWS平台1.3.5 面向对象的数据库建立任何面向对象应用面向对象的数据库系统都非常有用特别是对存储非格式化的数据例如声音图像是更为重要因为这些数据不适合用标准的表格形式存储面向对象的数据库系统可以存储任意的对象类而且还提供面向对象的封装继承多态及其它重要的面向对象特征大多数面向对象数据库系统提供查询语言1.3.6软件使用图形应用一直是面向对象的主要选择通常人们通过面向对象实现图形用户界面GUI这样做有两个原因其一是概念其二是实现在概念上面向对象的隐喻较好地符合典型的窗口/鼠标/图形界面多态性也可以出现在用户界面上在实现上允许用户可以建立窗口/鼠标/图标界面的许多商用软件库都是面向对象语言编写的由于窗口本身具有许多面向对象的属性因此大多数窗口界面的开发工具都有通过窗口运行面向对象的痕迹如果说面向对象本身增加了软件的易用性不太准确但可以准确地说好的图形用户界面增加了软件的易用性而面向对象的方法是建立支持GUI软件库的最佳途径1.3.7 软件项目管理一般人们都认为面向对象的方法只是针对软件没技术人员的其实面向对象的技术对于软件管理者也是非常重要的例如降低维护开销的技术可以释放管理者的资源将其投入到待处理的应用中从软件管理者的角度来看面向对象的方法不是纯技术的面向对象的方法既能给组织机构也能给其管理者的工作带来变化当一个组织机构采用了面向对象的方法其组织将发生变化类的重用需要类库和类库管理人员每个程序员都要加入两个组中的一个一个是设计和编写新类组另一个是应用类创建新应用程序组面向对象不太强调编程需求分析相对地将变得更加重要作为转向面向对象方法的组织机构的管理者应该意识到组织的变化让职员适应新的角色在这些角色中需要管理参与工作的人员鼓励重用而不主张重复编码需要给技术人员充足的时间考虑类的设计使得构造的类可以满足重用的要求总之应该使用不同的术语不同的工具和不同的生命周期以及新的目标来管理项目如果管理者将面向对象作为一种方法而不是作为一种目标会取得良好的效果而面向对小二的可维护性可扩展性健壮性等特点会减少交付时间等诸多益处作为软件管理者应始终确立目标并将面向对象作为一种技术来达到预定的目标如果在头脑中没有目标那么面向对象所有事物开销似乎都是昂贵的代价如果管理者不仅知道做什么而且知道为什么这样做则一定能实现所追求的面向对象目标。

历史上第一个支持面向对象的计算机语言是什么

历史上第一个支持面向对象的计算机语言是什么

历史上第一个支持面向对象的计算机语言是什么?是Simula语言Simula 67被认为是最早的面向对象程序设计语言面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法论。

它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

[什么是面向对象的编程技术?面向对象程序设计1.历史回顾1967年挪威计算中心的Kisten Nygaard和Ole Johan Dahl开发了Simula67语言,它提供了比子程序更高一级的抽象和封装,引入了数据抽象和类的概念,它被认为是第一个面向对象语言。

20世纪70年代初,Palo Alto研究中心的Alan Kay所在的研究小组开发出Smalltalk语言,之后又开发出Smalltalk-80,Smalltalk-80被认为是最纯正的面向对象语言,它对后来出现的面向对象语言,如Object-C,C++,Self,Eiffl都产生了深远的影响。

随着面向对象语言的出现,面向对象程序设计也就应运而生且得到迅速发展。

之后,面向对象不断向其他阶段渗透,1980年Grady Booch提出了面向对象设计的概念,之后面向对象分析开始。

1985年,第一个商用面向对象数据库问世。

1990年以来,面向对象分析、测试、度量和管理等研究都得到长足发展。

实际上,“对象”和“对象的属性”这样的概念可以追溯到20世纪50年代初,它们首先出现于关于人工智能的早期著作中。

但是出现了面向对象语言之后,面向对象思想才得到了迅速的发展。

过去的几十年中,程序设计语言对抽象机制的支持程度不断提高:从机器语言到汇编语言,到高级语言,直到面向对象语言。

汇编语言出现后,程序员就避免了直接使用0-1,而是利用符号来表示机器指令,从而更方便地编写程序;当程序规模继续增长的时候,出现了Fortran、C、Pascal等高级语言,这些高级语言使得编写复杂的程序变得容易,程序员们可以更好地对付日益增加的复杂性。

java发展史

java发展史



发展历史
1995年5月23日,Java语言诞生 1996年1月,第一个JDK-JDK1.0诞生 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术 1996年9月,约8.3万个网页应用了JAVA技术来制作 1997年2月18日,JDK1.1发布 1997年4月2日,JavaOne会议召开,参与者逾一万人,创当时全球同类会议规模之 纪录 1997年9月,JavaDeveloperConnection社区成员超过十万 1998年2月,JAK1.1被下载超过2,000,000次 1998年12月8日,JAVA2企业平台J2EE发布 1999年6月,SUN公司发布Java的三个版本:标准版(JavaSE,以前是J2SE)、企 业版(JavaEE以前是J2EE)和微型版(JavaME,以前是J2ME) 2000年5月8日,JDK1.3发布 2000年5月29日,JDK1.4发布 2001年6月5日,NOKIA宣布,到2003年将出售1亿部支持Java的手机 2001年9月24日,J2EE1.3发布 2002年2月26日,J2SE1.4发布,自此Java的计算能力有了大幅提升 2004年9月30日18:00PM,J2SE1.5发布,成为Java语言发展史上的又一里程碑。 为了表示该版本的重要性,J2SE1.5更名为Java SE 5.0 2005年6月,JavaOne大会召开,SUN公司公开Java SE 6。此时,Java的各种版本 已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE, J2ME更名为Java ME 2006年12月,SUN公司发布JRE6.0 2009年04月20日,甲骨文74亿美元收购SUN。取得java的版权。 2010年11月,由于甲骨文对于Java社区的不友善,因此Apache扬言将退出JCP[3]。 2011年7月28日,甲骨文发布java7.0的正式版。

程序设计语言的演变与未来趋势

程序设计语言的演变与未来趋势

程序设计语言的演变与未来趋势在当今数字化的时代,程序设计语言扮演着至关重要的角色。

从最初的简单机器语言到如今丰富多样的高级编程语言,它们的发展历程犹如一部波澜壮阔的科技史诗,不断推动着计算机技术的进步,改变着我们的生活和工作方式。

早期的程序设计语言可以追溯到 20 世纪 40 年代,那时候的机器语言是唯一的选择。

机器语言由一连串的二进制数字组成,直接对应计算机硬件的操作指令。

对于人类来说,编写和理解机器语言简直是一场噩梦,因为它毫无逻辑性和可读性可言。

但在那个计算机技术刚刚起步的阶段,这是让计算机能够执行任务的唯一途径。

随着时间的推移,为了提高编程的效率和可读性,汇编语言应运而生。

汇编语言使用了一些助记符来代替机器语言中的二进制指令,这使得编程工作稍微变得容易了一些。

不过,汇编语言仍然与计算机硬件的架构紧密相关,缺乏通用性和可移植性。

20 世纪 50 年代,高级程序设计语言开始崭露头角。

其中,FORTRAN(Formula Translation)语言是最早出现的高级语言之一,主要用于科学计算领域。

它引入了类似于数学公式的表达式和语句结构,大大提高了编程的效率和便捷性。

此后,诸如 COBOL(Common Business Oriented Language)语言主要用于商业数据处理,BASIC (Beginners' Allpurpose Symbolic Instruction Code)语言则适合初学者学习编程。

20 世纪 70 年代,C 语言的出现具有里程碑式的意义。

C 语言简洁高效,既具有高级语言的特点,又能对底层硬件进行直接操作,因此被广泛应用于系统软件和应用软件的开发。

C 语言的成功也为后续许多编程语言的发展奠定了基础。

到了 20 世纪 80 年代,面向对象编程(OOP)的概念逐渐兴起,C++语言便是在 C 语言的基础上增加了面向对象的特性而诞生的。

面向对象编程使得程序的结构更加清晰,代码的复用性和可维护性大大提高。

面向对象程序设计历史及发展

面向对象程序设计历史及发展

面向对象程序设计的历史及发展姓名:郭一恒班级:0901学号:2009302540014自从计算机发展以来,程序设计的方法为了适应越来越复杂的程序设计的需要而发生了急剧的变化。

计算机刚问世时.程序设计是通过计算机的控制板用二进制机器指令打孔完成的。

随着程序设计的发展,产生了汇编语言,程序员用助记符号代替机器指令,能够处理更大更复杂的程序。

随着计算机处理事物的越来越多,产生了高级程序设计语言,它们给程序员提供更多的处理复杂事务的工具。

但它们不是支持结构清晰、易于读懂的程序设计语言。

60年代诞生了结构化的程序语言,这就是者如c语言和Pascal语言支持的方法。

结构化程序设计语言的应用使得有可能较容易地编写复杂程度适中的程序。

一旦达到一定的复杂程度度,使用结构比的程序语言也会无法控制,其复杂程度已远远超过了程序员的管理所及。

如今,许多程序没汁语言已经或达到了结构化程序设汁方法的极限。

应运而生的面向对象的程序设汁方法就是为了解决这类问题的。

面向对象的程序设汁方法汲取了结构化程序设计方法的先进的思想,并把它同支持用户用新方法进行程序设计的概念结合起来。

所有的面向对象的程序设计语言一般都包含三个最基本的概念:对象、继承性和多态性。

一、面向对象程序设计的历史面向对象程序设计方法作为90年代程序设计的新思想、新方法,已经和正在给计算机界带来一场深刻的革命。

实际上,对面向对象程序设计方法的研究由来已久。

早在本世纪40年代,在对数字模拟的分析研究中就引入了“对象”的概念,随后在对模拟系统的分析中,大量的模拟仿真语言,如Simscript、GPSS、CSL和SimulaⅡ,为此应运而生。

在Simula Ⅱ中的“活动(Activity)、过程(Process)”概念正是如今OOPL中“类”和“对象”概念的雏型。

60年代中期,随着SimulaI中不断引入子类、模块、封装等新概念,导致了Simula67,Modula—2等具有OOP特点的一些模拟仿真语言的出现,它们被称为OOPL的祖先或前身。

简述程序设计语言的发展阶段

简述程序设计语言的发展阶段

简述程序设计语言的发展阶段程序设计语言的发展经历了以下几个阶段:1. 机器语言:计算机诞生初期,程序员使用二进制代码直接操作计算机硬件。

这种语言由 0 和 1 组成,非常难以理解和编写。

2. 汇编语言:为了提高编程效率,人们发明了汇编语言,它使用助记符来表示机器指令。

汇编语言比机器语言更容易阅读和编写,但仍然与特定的计算机体系结构相关。

3. 高级语言:20 世纪 50 年代,高级语言开始出现。

这些语言更加接近人类的自然语言,并且不依赖于特定的计算机体系结构。

高级语言包括 Fortran、COBOL、BASIC 等。

4. 结构化编程语言:20 世纪 70 年代,结构化编程语言开始流行。

这些语言强调程序的结构和可读性,例如 PASCAL、C 等。

结构化编程语言引入了控制结构(如循环和条件语句),使得编程更加清晰和易于维护。

5. 面向对象编程语言:20 世纪 80 年代,面向对象编程(OOP)语言开始出现。

这些语言将数据和相关的操作封装在一起,形成对象。

面向对象编程语言包括 C++、Java、Python 等。

6. 脚本语言:20 世纪 90 年代,脚本语言开始流行。

这些语言通常用于 Web 开发、系统管理和自动化任务。

脚本语言包括 JavaScript、PHP、Perl 等。

7. 现代编程语言:进入 21 世纪,出现了许多现代编程语言,它们融合了面向对象编程、函数式编程和其他编程范式的特点。

现代编程语言注重简洁性、可读性和开发效率,并且支持并发编程、移动开发和云计算等新的应用领域。

一些现代编程语言的例子包括 Go、Python、JavaScript 等。

程序设计语言的发展是一个不断演进的过程,新的编程语言和技术不断涌现,以满足不断变化的需求和挑战。

程序设计语言发展历史

程序设计语言发展历史

THANK YOU
汇报人:
Python语言
诞生时间:1991年
创始人:Guido van Rossum
特点:简洁、易读、易写、 易维护
应用领域:Web开发、数据 分析、人工智能、科学计算

脚本语言
JavaScript语言
诞生时间:1995年
创始人:Brendan Eich
特点:轻量级、解释型、面 向对象
应用领域:网页开发、游戏 开发、服务器开发等
PHP语言
创始人:Rasmus Lerdorf
诞生时间:1994年
特点:简单易学,灵活高效
应用领域:Web开发,服务器 端脚本,数据库操作等
Ruby语言
创始人:松本行弘 诞生时间:1995年 特点:简洁、易读、灵活 应用领域:Web开发、游戏开发、系统管理
函数式程序设计语言
Haskell语言
程序设计语言发展历史
汇报人:
程序设计语言的起源 面向过程程序设计语言 面向对象程序设计语言 脚本语言 函数式程序设计语言 人工智能编程语言
程序设计语言的起源
机器语言
起源:计算机诞生之初,用于 控制计算机硬件
特点:由0和1组成的二进制代 码,直接控制硬件
应用:早期计算机编程,如 E N I A C 、 U N I VA C 等
局限性:难以理解和编写,需 要专业人员操作
汇编语言
起源:1949年,由美国科学家Grace Hopper发明 特点:直接操作硬件,执行效率高 应用领域:早期计算机系统,嵌入式系统 发展:逐渐被高级语言取代,但仍在某些领域有应用
面向过程程序设计语言
C语言
创始人:丹尼斯·里奇和肯·汤普森 诞生时间:1972年 特点:简洁、高效、灵活 应用领域:操作系统、嵌入式系统、游戏开发等

计算机程序设计与的发展历程

计算机程序设计与的发展历程

计算机程序设计与的发展历程
计算机程序设计是指利用计算机编程语言和工具设计和编写计
算机程序的过程。

这项技术的发展历程可以追溯到二十世纪五六十年代,当时第一台电子计算机ENIAC问世。

最初的计算机程序设计是手动编写机器代码,这种方式非常繁琐和容易出错。

随着计算机技术的发展,高级编程语言如Fortran、COBOL、BASIC等也随之产生。

这些语言使用更加易懂的语法和结构,使得程序的开发和维护更加容易。

在20世纪70年代,面向对象编程(OOP)开始流行。

这种编程方
式可以更好地管理程序的复杂性,并且可以提高程序的重用性。

随着计算机硬件的不断升级和发展,计算机程序设计也在不断发展。

出现了许多新的编程语言和技术,如C++、Java、Python、Swift 等。

这些编程语言为开发人员提供更加高效和方便的开发环境和工具。

随着互联网和移动设备的普及,Web和移动应用程序的开发成为了计算机程序设计的重要领域。

许多新的技术和框架也应运而生,如HTML、CSS、JavaScript、React、Vue等。

这些技术和框架使得Web
和移动应用程序的开发更加快速和高效。

总之,计算机程序设计在不断发展和进步。

未来,随着人工智能、物联网等新兴技术的不断发展,计算机程序设计仍将面临新的挑战和机遇。

- 1 -。

计算机语言的发展历程

计算机语言的发展历程

计算机语言的发展历程计算机语言是计算机与人进行交流和指令传递的工具,它的发展历程承载着人类对计算机的不断探索和创新。

本文将以年代顺序为基础,介绍计算机语言的发展历程及其重要里程碑。

一、机器语言时代(1940s-1950s)在计算机刚刚问世的时候,人们开始使用机器语言来编写程序。

机器语言是一种低级的计算机语言,用二进制表示指令和数据。

人们需要以特定的模式和顺序来编写机器语言程序,这对于普通用户来说非常困难。

因此,机器语言的使用受到了很大的限制。

二、汇编语言时代(1950s-1960s)为了简化对于机器语言的编写,人们开始设计汇编语言。

汇编语言是一种使用助记符和符号来代替机器语言指令的低级语言。

通过使用汇编语言,程序员可以更容易地编写和理解程序。

然而,汇编语言仍然需要直接与计算机硬件进行交互,并且对于不同的计算机架构需要编写不同的汇编语言程序。

三、高级程序设计语言的兴起(1950s-1960s)为了进一步简化编程过程,高级程序设计语言开始出现。

高级程序设计语言(High-Level Programming Language)是与自然语言更接近的计算机语言,使得程序员能够使用更简单和易读的代码来编写程序。

FORTRAN(公式翻译)是第一种流行的高级程序设计语言,它于1957年问世。

紧随其后的是ALGOL(算法语言),它在1960年发布。

这两种语言的出现极大地推动了计算机语言的发展和普及。

四、面向对象程序设计语言的兴起(1960s-1970s)面向对象程序设计语言(Object-Oriented Programming Language)是一种编程范式,其核心思想是将现实世界中的事物抽象为对象,并通过对象之间的交互来完成任务。

面向对象程序设计语言的兴起在20世纪60年代和70年代取得了重要的突破。

例如,Simula语言(1967年)、Smalltalk语言(1972年)以及C++语言(1983年)等,都被认为是面向对象程序设计语言的重要里程碑。

程序设计语言的发展及特点

程序设计语言的发展及特点

程序设计语言的发展及特点程序设计语言是计算机科学领域的一项基本技术。

随着计算机技术的发展,程序设计语言也不断演化、完善。

本文将介绍程序设计语言的发展及特点。

一、程序设计语言的发展历程1、机器语言时代20世纪50年代,计算机出现了,没有高级语言,只有机器语言。

机器语言是一种二进制语言,用 0 和 1 表示指令和数据。

这种语言难以阅读和编写,程序员必须根据计算机的指令格式编写程序,容易出错。

2、汇编语言时代20世纪50年代末至60年代初,汇编语言出现了。

汇编语言将机器语言的指令用助记符代替,容易理解和编写,但要求程序员具备机器语言的基本知识。

3、高级语言时代20世纪60年代末至70年代初,高级语言(如FORTRAN、COBOL和BASIC)出现了,这些语言具有更高的抽象级别和更强的可移植性。

高级语言通常有代码库,程序员可以调用库中的函数来完成特定的操作。

高级语言形式多样,易于阅读和维护,使得程序设计变得更加简单和高效。

4、面向对象语言时代20世纪80年代,面向对象语言出现了。

面向对象语言将程序看作是对象的集合,以及对象之间的交互和关系。

面向对象语言具有封装性、继承性和多态性,可以提高程序的可重用性和可维护性。

常见的面向对象语言有C++、Java和Python等。

5、脚本语言时代20世纪90年代,脚本语言出现了。

脚本语言通常用于Web开发和自动化任务,如JavaScript和PHP。

脚本语言通常比编译语言更灵活,编写和调试更快速。

二、程序设计语言的特点1. 强制类型检查:程序设计语言可以对变量的数据类型进行检查,确保程序的正确性和可靠性。

2. 结构化:程序设计语言支持分支、循环和函数等结构,使得程序逻辑更加清晰易懂。

3. 面向对象:面向对象语言可以通过类和对象来描述复杂的系统,使得程序设计更加抽象化和模块化,提高了程序的可重用性和可维护性。

4. 可移植性:程序设计语言可以在不同操作系统和硬件平台上运行,使得程序更加灵活和普适。

程序设计语言的发展历程

程序设计语言的发展历程

程序设计语言的发展历程一、前言计算机程序设计语言是计算机科学中的重要研究领域,其发展历程也是计算机科学的重要组成部分。

本文旨在探究程序设计语言的发展历程,介绍主要程序设计语言的特点和应用。

二、第一代计算机语言第一代计算机语言是机器语言,它直接使用二进制代码来表示指令和数据。

这种语言难以编写和维护,但在20世纪40年代到50年代初期是唯一可用的编程方式。

三、第二代计算机语言第二代计算机语言是汇编语言,它使用助记符号来表示指令和数据。

这种语言比机器语言更容易编写和维护,并且可以生成更高效的代码。

四、第三代计算机语言第三代计算机语言是高级程序设计语言,它们被设计为更接近自然语言,并提供了更高层次的抽象。

这些编程语言包括Fortran、COBOL、BASIC等。

Fortran主要用于科学和工程领域,COBOL主要用于商业应用,而BASIC则被广泛应用于个人电脑上。

五、面向对象编程面向对象编程(OOP)是一种编程范型,它将数据和操作数据的方法组合成对象。

OOP的主要优点是代码重用和灵活性。

C++是第一个支持面向对象编程的高级程序设计语言,而Java则是OOP的另一个流行实现。

六、脚本语言脚本语言是一种解释型编程语言,它们通常用于自动化任务、Web开发和游戏开发等领域。

Perl、Python和Ruby都是流行的脚本语言。

七、函数式编程函数式编程(FP)是一种编程范型,它强调使用纯函数来处理数据。

这种方式可以提高代码可读性、可维护性和安全性。

Haskell是最流行的函数式编程语言之一。

八、并发编程并发编程是指同时执行多个任务。

这种方式可以提高程序性能和响应能力。

Java和Python都支持并发编程,并提供了相应的库和工具。

九、总结从机器语言到高级程序设计语言再到面向对象编程、脚本语言、函数式编程和并发编程,程序设计语言已经经历了几十年的演变。

每一代计算机语言都有其独特的特点和应用场景,而未来也将会有更多新型计算机语言出现,并推动计算机科学的不断发展。

计算机软件发展历史(简史)

计算机软件发展历史(简史)

计算机软件发展历史(简史)来源:互联网计算机软件技术发展很快。

50年前,计算机只能被高素质的专家使用,今天,计算机的使用非常普遍,甚至没有上学的小孩都可以灵活操作;40年前,文件不能方便地在两台计算机之间进行交换,甚至在同一台计算机的两个不同的应用程序之间进行交换也很困难,今天,网络在两个平台和应用程序之间提供了无损的文件传输;30年前,多个应用程序不能方便地共享相同的数据,今天,数据库技术使得多个用户、多个应用程序可以互相覆盖地共享数据。

了解计算机软件的进化过程,对理解计算机软件在计算机系统中的作用至关重要。

第一代软件(1946-1953)第一代软件是用机器语言编写的,机器语言是内置在计算机电路中的指令,由0和1组成。

例如计算2+6在某种计算机上的机器语言指令如下: 10110000 0000011000000100 0000001010100010 01010000第一条指令表示将“6”送到寄存器AL中,第二条指令表示将“2”与寄存器AL 中的内容相加,结果仍在寄存器AL中,第三条指令表示将AL中的内容送到地址为5的单元中。

不同的计算机使用不同的机器语言,程序员必须记住每条及其语言指令的二进制数字组合,因此,只有少数专业人员能够为计算机编写程序,这就大大限制了计算机的推广和使用。

用机器语言进行程序设计不仅枯燥费时,而且容易出错。

想一想如何在一页全是0和1的纸上找一个打错的字符!在这个时代的末期出现了汇编语言,它使用助记符(一种辅助记忆方法,采用字母的缩写来表示指令)表示每条机器语言指令,例如ADD表示加,SUB表示减,MOV表示移动数据。

相对于机器语言,用汇编语言编写程序就容易多了。

例如计算2+6的汇编语言指令如下:MOV AL,6ADD AL,2MOV #5,AL由于程序最终在计算机上执行时采用的都是机器语言,所以需要用一种称为汇编器的翻译程序,把用汇编语言编写的程序翻译成机器代码。

编写汇编器的程序员简化了他人的程序设计,是最初的系统程序员。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计的历史与发展面向对象程序设计(英语:Object-oriented programming,缩写:OOP),指一种程序设计范型,同时也是一种程序开发的方法。

它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。

当我们提到面向对象的时候,它不仅指一种程序设计方法。

它更多意义上是一种程序开发方式。

面向对象出现以前,结构化程序设计是程序设计的主流,结构化程序设计又称为面向过程的程序设计。

在面向过程程序设计中,问题被看作一系列需要完成的任务,函数(在此泛指例程、函数、过程)用于完成这些任务,解决问题的焦点集中于函数。

其中函数是面向过程的,即它关注如何根据规定的条件完成指定的任务。

在多函数程序中,许多重要的数据被放置在全局数据区,这样它们可以被所有的函数访问。

每个函数都可以具有它们自己的局部数据。

这种结构很容易造成全局数据在无意中被其他函数改动,因而程序的正确性不易保证。

面向对象程序设计的出发点之一就是弥补面向过程程序设计中的一些缺点:对象是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变。

比较面向对象程序设计和面向过程程序设计,还可以得到面向对象程序设计的其他优点:1)数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;2)通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;3)结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;4)通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度;6)以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统;7)通过对象的聚合、联合可以在保证封装与抽象的原则下实现对象在内在结构以及外在功能上的扩充,从而实现对象由低到高的升级。

计算机科学中对象和实例概念的最早萌芽可以追溯到麻省理工学院的PDP-1系统。

这一系统大概是最早的基于容量架构(capability based architecture)的实际系统。

另外1963年Ivan Sutherland的Sketchpad应用中也蕴含了同样的思想。

对象作为编程实体最早是于1960年代由Simula 67语言引入思维。

Simula这一语言是奥利-约翰·达尔和克利斯登·奈加特在挪威奥斯陆计算机中心为模拟环境而设计的。

(据说,他们是为了模拟船只而设计的这种语言,并且对不同船只间属性的相互影响感兴趣。

他们将不同的船只归纳为不同的类,而每一个对象,基于它的类,可以定义它自己的属性和行为。

)这种办法是分析式程序的最早概念体现。

在分析式程序中,我们将真实世界的对象映射到抽象的对象,这叫做“模拟”。

Simula不仅引入了“类”的概念,还应用了实例这一思想——这可能是这些概念的最早应用。

20世纪70年代施乐PARC研究所发明的Smalltalk语言将面向对象程序设计的概念定义为,在基础运算中,对对象和消息的广泛应用。

Smalltalk的创建者深受Simula 67的主要思想影响,但Smalltalk中的对象是完全动态的——它们可以被创建、修改并销毁,这与Simula中的静态对象有所区别。

此外,Smalltalk还引入了继承性的思想,它因此一举超越了不可创建实例的程序设计模型和不具备继承性的Simula。

此外,Simula 67的思想亦被应用在许多不同的语言,如Lisp、Pascal。

面向对象程序设计在80年代成为了一种主导思想,这主要应归功于C++——C语言的扩充版。

在图形用户界面(GUI)日渐崛起的情况下,面向对象程序设计很好地适应了潮流。

GUI和面向对象程序设计的紧密关联在Mac OS X中可见一斑。

Mac OS X是由Objective-C 语言写成的,这一语言是一个仿Smalltalk的C语言扩充版。

面向对象程序设计的思想也使事件处理式的程序设计更加广泛被应用(虽然这一概念并非仅存在于面向对象程序设计)。

一种说法是,GUI的引入极大地推动了面向对象程序设计的发展。

苏黎世联邦理工学院的Niklaus Wirth 和他的同事们对抽象数据和模块化程序设计进行了研究。

Modula-2将这些都包括了进去,而Oberon则包括了一种特殊的面向对象方法——不同于Smalltalk与C++。

面向对象的特性也被加入了当时较为流行的语言:Ada、BASIC、Lisp、Fortran、Pascal 以及种种。

由于这些语言最初并没有面向对象的设计,故而这种糅合常常会导致兼容性和维护性的问题。

与之相反的是,“纯正的”面向对象语言却缺乏一些程序员们赖以生存的特性。

在这一大环境下,开发新的语言成为了当务之急。

作为先行者,Eiffel成功地解决了这些问题,并成为了当时较受欢迎的语言。

在过去的几年中,Java语言成为了广为应用的语言,除了它与C和C++语法上的近似性。

Java的可移植性是它的成功中不可磨灭的一步,因为这一特性,已吸引了庞大的程序员群的投入。

近日,一些既支持面向对象程序设计,又支持面向过程程序设计的语言悄然浮出水面。

它们中的佼佼者有Python、Ruby等等.正如面向过程程序设计使得结构化程序设计的技术得以提升,现代的面向对象程序设计方法使得对设计模式的用途、契约式设计和建模语言(如UML)技术也得到了一定提升。

那么面向对象程序设计的发展前景如何呢?在C++中,假如没有合适的库在背后支撑,完成任何重要的工作都可能是很复杂的。

而一旦有了合适的库,任何东西都可以被我们操控于股掌之间。

因此,构造和使用程序库的重要性与日俱增。

这也暗示我们,泛型程序设计(generic programming)将会越来越多地被运用。

只有通过GP,我们才能确保库的通用性和高效率。

我还预期在分布式计算和“组件(components)”应用领域会出现喜人的增长。

就大部分程序员而言,通过使用方便适用的程序库,这些开发工作会变得简单明了。

现在有一个趋势,编译器厂商试图把其特有的“对象模型”和图形界面(GUI)细节推销给用户。

比如微软的COM和Inprise的类属性“properties”。

对于用户来说,这既不必要,也不情愿。

我所希望看到的程序库,应该是用标准C++打造,界面灵活,值得信赖的程序库。

通常,这些界面应该是平台无关的。

C++的表达能力极强,即使不使用大量的宏,也应该足以达成这一要求。

就算有些地方无法百分之百的遵守这一原则,也应该将对于平台和厂家的依赖性限制起来。

这个目标的完成情况,可以反映软件工具产业对于应用程序开发行业的关注程度。

我怀疑目前对于那些独立的、跨平台厂商来说,并不存在相应的市场。

如果能够建立这样的市场,也许能够促进厂商们为客户做出“真正有用的”产品。

Lindholm: 对于编写代码的开发者来说,主要的驱动力量仍将是两个:网络和分布式——也就是设计和开发非单机软件的需求。

大部分的应用程序将不会是孤零零地运行在单一设备上,而是运用了类似EJB和JSP之类技术的,平台无关的分布式程序。

程序员们将不得不面对分布式计算的重重险阻。

这将对许多程序员所依赖的设计模式、技术和直觉构成严峻的挑战。

这是选择编程语言之前必须认识到的,尽管不同语言的设计特性可能促进或者阻碍这一转化。

在网络应用的增长中,一个很重要的部分是小型移动设备和特殊Internet设备的爆炸性增长。

这些设备各有各的操作系统,或者只在某种特定的设备领域内有共同的操作系统。

我们现在还可以一一列举出这些设备——家庭接入设备、蜂窝电话、电子报纸、PDA、自动网络设备等等。

但是这些设备领域的数量和深入程度将会很快变得难以估量。

我们都知道这个市场大得惊人,PC的兴起与之相比不过小菜一碟。

因此在这些设备的应用程序市场上,竞争将会相当残酷。

获胜的重要手段之一,就是尽快进入市场。

开发人员需要优秀的工具,迅速高效地撰写和调试他们的软件。

平台无关性也是制胜秘诀之一,它使得程序员能够开发出支持多种设备平台的软件。

Stroustrup预期的另一个变化是,我们对于代码(Java)和数据(XML)协同型应用程序的开发能力将会不断提高。

这种协同是开发强大应用程序的核心目标之一。

我们从XML的迅速流行和ebXML规范的进展中,已经看到了这个趋势。

ebXML是一个针对电子商务和国际贸易的,基于XML的开放式基础构架,由联合国贸易促进和电子商务中心(UN/CEFACT)与结构性信息标准推进组织(OASIS)共同开发。

那么我们能否期望出现一个真正的面向组件(component-oriented)的语言?它的创造者会是谁呢? Stroustrup 怀疑,这个领域中之所以缺乏成果,正是因为人们——主要是那些非程序员们——对“组件”这个意义含糊的字眼寄予了太多的期望。

这些人士梦想,有朝一日,组件会以某种方式把程序员赶出历史舞台。

以后那些称职的“设计员”只需利用预先调整好的组件,把鼠标拖一拖放一放,就把系统组合出来。

对于软件工具厂商来说,这种想法还有另一层意义,他们认为,到时候只有他们才保留有必要的技术,有能力编写这样的组件。

这种想法有一个最基本的谬误:这种组件很难获得广泛欢迎。

一个单独的组件或框架(framework),如果能够满足一个应用程序或者一个产业领域对所提出的大部分要求的话,对于其制造者来说就是划算的产品,而且技术上也不是很困难。

可是该产业内的几个竞争者很快就会发现,如果所有人都采用这些组件,那么彼此之间的产品就会变得天下大同,没什么区别,他们将沦为简单的办事员,主要利润都将钻进那些组件/框架供应商的腰包里!小“组件”很有用,不过产生不了预期的杠杆效应。

中型的、更通用的组件非常有用,但是构造时需要非同寻常的弹性。

在C++中,我们综合运用不同共享形式的类体系(class hierarchies),以及使用templates精心打造的接口,在这方面取得了一定的进展。

我期待在这个领域取得一些有趣和有用的成果,不过我认为这种成果很可能是一种新的C++程序设计风格,而不是一种新的语言。

Lindholm认为编写面向组件的应用程序,好像更多的是个投资、设计和程序员管理方面的问题,而不是一个编程语言问题。

当然某些语言在这方面具有先天优势,不过如果说有什么魔术般的新语言能够大大简化组件的编写难度,那纯粹是一种误导。

如果微软已经将全部赌注押在C++上,其他语言何去何从这个问题,C++在下一个十年里仍然将是一种主流语言。

面对新的挑战,它会奋起应对。

一个创造了那么多出色系统的语言,绝不会“坐视落花流水春去也”。

相关文档
最新文档