C和C++的简单介绍,标准制定历程

来源:互联网 发布:mac重新安装系统好慢 编辑:程序博客网 时间:2024/06/11 06:16

C的简单介绍

C语言作为一种工具的诞生,天生就被赋予了解决某种问题的能力和特性。

C语言最初是被D.M.Ritchie用来更好地开发UNIX操作系统(随着硬件的飞速发展,体积更大,功能更强的计算机引出了更大更复杂的程序,操作系统就是其中之一)而发明的,UNIX作为一款功能强大的多用户、多任务操作系统,支持多种处理器架构的分时操作系统,这就要求开发它的语言至少要具备如下特性:

可移植性:

起初在设计的时候,就是为了让UNIX能在不同的计算机或者平台上工作的。因此这意味着C语言是一种高级语言。

高级语言致力于解决问题,而不是针对特定的硬件,一种被称为编译器的特殊程序将高级语言翻译成特定的计算机内部语言。这样,就可以通过对每个平台使用不同的编译器来解决移植问题了。

可控制性(易于管理和维护,早期的程序语言FORTRANBASIC都会遇到组织方面的问题)

C语言从语法规则,运算符,表达式的角度总结就是一句话:简单灵活,表达能力强,并且可以像汇编语言一样操纵位,字节和地址这些计算机最基本的工作单元,因此拥有对硬件操作的能力

同时C语言具备的函数特性和控制结构使程序具备了结构化,模块化的编程技术以及自顶向下,分而治之的过程性编程思想

C++的简单介绍

C++是由美国贝尔实验室的Bjarne Stroustrup博士及其同事于20世纪80年代初在C语言的基础上开发成功的。 C++保留了C语言原有的所有优点增加了面向对象的机制。

C++融合了3种编程方式:C语言代表的面向过程性语言,C++C语言基础上添加的以类为代表的面向对象语言,C++模板支持的泛型编程。还有先后添加的一些其他特性:

类和对象

继承

多态,虚函数,RTTI(运行阶段类型识别)

函数重载

引用变量

泛型(独立于类型的)编程,这种技术由模板和标准模板库(STL)提供的

处理错误条件和异常机制

管理函数,类和变量名的名称空间

其实简单来说C++诞生的原因就是为了更好地应付复杂程度不断提高的现代编程任务而设计的。(C很好,C又不行了,C++上吧)

为了应付这种挑战,OOP(面向对象编程)提供了一种新方法。与强调算法的过程性编程不同,OOP强调了是数据。OOP不像过程性编程那样,试图使问题满足语言的要求,把语言放在首要位置,而是让语言去满足问题的要求,把问题放在首要位置。其设计理念是:设计与问题的本质特性相对应的数据格式。

C++中,履行OOP特性的重要方式是类概念。类是一种规范,它描述了某种新型自定义的数据格式,对象是根据这种规范构造出来的特定数据结构。通常,类规定了可以使用哪些数据来表示对象以及可以对其执行哪些操作。

OOP编程并不仅仅是将数据和方法合并为定义。例如,OOP的信息隐藏可以保护数据,继承,多态可以方便地重用和修改现有的,经过仔细检查的代码(各种库)。

C++泛型编程是C++支持的另一种编程模式。它与OOP的目标相同,即使重用代码和抽象通用概念的技术更简单。不过OOP强调的是编程的数据方面,而泛型编程强调的是独立于特定数据类型。

可移植性和标准

可移植性存在两个障碍:其中之一是硬件,另外一个是语言上的差异(方言)

硬件特定的程序是不可移植的,通常的做法是将依赖于硬件的部分放在函数模块中可以最大程度的降低可移植性的问题:这样只需要重新编写模块代码即可。

计算机也可能出现方言,197080年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。虽然多数实现都希望其C++版本与其他版本兼容,但是如果没有准确描述语言工作方式的公开标准,这将很难做到。以下是C/C++标准化道路的概况: