c概论(c语言过度版)

上传人:缘*** 文档编号:333288720 上传时间:2022-09-01 格式:PDF 页数:40 大小:4.60MB
返回 下载 相关 举报
c概论(c语言过度版)_第1页
第1页 / 共40页
c概论(c语言过度版)_第2页
第2页 / 共40页
c概论(c语言过度版)_第3页
第3页 / 共40页
c概论(c语言过度版)_第4页
第4页 / 共40页
c概论(c语言过度版)_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《c概论(c语言过度版)》由会员分享,可在线阅读,更多相关《c概论(c语言过度版)(40页珍藏版)》请在金锄头文库上搜索。

1、历史简介C 语言之所以要起名为C,是取的BCPL的第二个字母(第一个字母用来命名之前被发明的B 语 言)。当C 语言发展到顶峰的时刻,出现了一个版本叫C withClass,那就是C+最早的版本,在 C 语言中增加class关键字和类,那个时候有很多版本的C 都希望在C 语言中增加类的概念;后来C 标准委员会决定为这个版本的C 起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C 语言中的+运算符来体现它是C 语言的进步,故而叫C+,成立了 C+标准委员会。美国AT&T贝尔实验室的本贾尼斯特劳斯特卢普(Bjarnn StroustruD)博士在20世纪80年代初期发明并实现

2、了 C+(最初这种语言被称作C withClasses)0 一开始C+是作为C 语言的增强版出现的,从给C 语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operatoroverloading)、多重继承(multiple inheritance)、模 板(template)、异 常(exception)、RTTI、命名空 间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了 C+程序设计语言的国际标准I S O/I E C 1 9 8 8-1 9 9 8 o C+是具有国际标准的编程语宣,通常称作A N S I/I S

3、O C+。1 9 9 8年是C+标准委员会成立的第一年,以后每5年视实际需要更新一次标准,下一次标准更新原定是在2 0 0 9年,目前我们一般称该标准C+4-O x,但是由于对于新特性的争端激烈,除了在T ec h n i c a l R ep or t 1 (t r i)中的新增修改被基本确定外,完整的标准还遥遥无期。况且遗憾的是,由于C+语言过于复杂,以及经历了长年的演变,直到现在(2 0 1 0年)都没有有一个编译器完全符合这个标准。据H er b S u t t er报告,C+0 x最终国际投票已于周 三(2 0 1 1年8月1 0号)结束,所有国家都投出了赞成票,C+0 X已经毫无疑

4、义地成为正式国际标准。虽然接下来还需要数月时间出版发布,但标准本身已经完全正式成立了。组成部分 根据Ef f e c t i v e C+第三版第一条款的描述,现在C+由以下四个 子语言组成:1、C子语言。C+支持C语言的几乎全部功能,主要是C 8 9的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C+标准文献)。2、面向对象的C+语言。C+语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C+语言也开发出了支持面向对象功能的版本.3、泛型编程语言。C+强 大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大

5、提高运行期效率。4、STL(C+标准模板库,Standard TemplateLibrary)o随着STL的不断发展,它已经逐渐成为C+程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。此外,包含在TR1等中的C+0X将实现的新功能在开发和测试中。语言发展C+语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C+语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年 到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程

6、序设计在C+中占据了越来越多的比重性。当然,同时由于Java C#等语言的出现和硬件价格的大规模下降,C+受到了一定的冲击;第三阶段从2000年至 今,由 于 以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C+出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C+已经成为当今主流程序设计语言中最复杂的一员。入门书籍C+是一种语言,仅仅是它的语法、特性、标准类库就已经是一门非常高深的课程,所以在开始学习的时候,必须先要打好基础。在市面上有很多Visual C+的书,虽然其中可能会花1-2章来介绍C+的基本特性,但是那绝对不会让你入门。因此,初学者学习C+应

7、该选择针对C+语言本身的书籍,而不能是针对Visual C+、MFC 或者 Windows API 的。学习C+应该由易至难,循序渐进。以前经常有人说学习C+之前应该学习C语言。事实上那不是必须的,C+和C语言虽然有关系,但仍然是两种不同的语言。当然,在学习C+之前学习过其他编程语言是很有好处的。那会使学习C+的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来,不要急躁。要成为C+的高手-,不是那么容易的,必须要花很大的努力。从入门教材的选择上,主要看学习者的自身情况。如果已经有过学习高级语言的经历,那么推荐使用谭浩强 的 C+程序设计。注意是04年版的

8、,06年版的那本书是阉割版,上来就面向对象。虽然说C 和 C+是相似的,但是前面已经说了,C 和 C+应该作为两种语言来学习,所以06年的那本内容就稍微欠缺一点了。谭浩强04版的这本书内容比较规整的,条理也很清晰。如果有过其他高级语言的基础,那么估计半年就能对C+的概况有个了解了。谭浩强老师的书已经成为了全国各大高等院校的教科书,是比较受到认可的。如果是从零基础开始学C+,那么推荐使用潘嘉杰的 易学C+o这本书是2008年出的新书,听说是个学生在读书的时候写的。这本书网上有下载免费的电子版。这本书主要就是针对初学者的,讲得也比较生动有趣,比较提得起学习的兴趣。所以没有基础的初学者选这本书也是不

9、错的,就是想要很快成为高手,可能看这本书还不够。至于看完入门的书之后,就应该看一些高层次的书T o 比如vvThe C+Programming Language和vvC+Primer,同时也可以向 STL、MFC API等各个方向发展。如果对别的语言感兴趣,还能去看看C#和Java,它们和C+从语法和很多概念上都是类似的。设计原则-C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C+设计成直接的和广泛的支援多种程序设计风搭(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。C+设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。C+设计成尽可能与C兼容,籍此

10、提供一个从C到C+的平滑过渡。-C+避免平台限定或没有普遍用途的特性。-C+不使用会带来额外开销的特性。C+设计成无需复杂的程序设计环境。出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C+之 父 的 C+语言的设计和演化 里做了详尽的陈述。Hello World 程序在使用兼容C89标 准(也称为ANSI C)的编译器时,下面这个程序显示Hello,world!然后结束运行:(事实上这并不是符合98标准 ISO C+的C+程序,而且在多数编译器上这个程序也不能运行,若要在比较旧的编译器上编译该程序,应将

11、stdio.h改为iostream.h)#include int main()printf(Helloz world!n);return 0;(以上是c 语言代码,C+语言是c 语言高一级的版本)在使用兼容C+98标 准(ISO/正C 14882-1998)的编译器时,下面的程序也是可以的:#include int main()cout Hello,world!endl;return 0;在使用兼容C+STL的编译器时,应当是:#include using namespace std;int main()cout Hello,world!endl;return 0;根据ISO C+的规 定,m

12、ain函数的形式只能是int main(void)以及int main(int argc,char*argv)尽管如此,但在Visual C+2003以前的Microsoft Visual Studio编译器上,void main()也被支持,但这并不正确,也不标准。这样的写法会使程序代码丧失跨平台的特性。每年都有专业人士规定C+的语法,这也是C+优于其他编程语言的原因之一,由它衍生的Java已成为通用编程语言中广受欢迎的一种。代码性能一般认为,使用Java或 C#的开发成本比 C+低。但是,如果你能够充分分析C+和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都

13、比较小。如果不超过3 万行有效 代 码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C+的优势将会越来越明显。造成这种差别的就是C+的软件工程性。在Java和 C#大谈软件工程的时候,C+实际上已经悄悄地将软件工程性提升到一个前所未有的高度。这一点被多数人忽视,并且被大公司竭力掩盖。语言在软件工程上的好坏,依赖于语言的抽象能力。从面向过程到面向对象,语言的抽象能力有了一个质的飞跃。但在实践中,人们发现面向对象无法解决所有软件工程中的问题。于是,精英们逐步引入、并拓展泛型编程,解决更高层次的软件工程问题。(实际上,面向对象和泛型编程的起源都可以追溯到1967年

14、,但由于泛型编程更抽象,所以应用远远落后于面向对象)。应用实例哪些程序是用C+写的:主流的3种操作系统Windows内核都是用C语言和汇编写的,上层高级特性是用C+写的。魔兽世界等几乎所有的网络游戏,百度搜索引擎,我们所用的大多数软件都是用C+写 的(硬件也有很多用到C+的)。以下是一些C+的应用:Amazon:Software for large-scalee-commerceApple:OS X is written in a mix of language,but a few important parts are C+(当然最核心的部分都是汇编与c语言).AT&T:The larges

15、t US telecommunicationsprovider.o provisioning systemso systems for rapid network recovery afterfailureAutodesk:A large number of major numberof application in the CAD domainEricsson:o server platform.o TDMA-CDMA HLRo GSM-TDMA-CDMA mobility gatewayGoogle:web search engine,etc。H P:Here is a tiny frac

16、tion of HPs C+apps:o C,C+,Fortran90 compilers,and linker forthe new HP IA64 platform(these add to morethan 1 million lines of C+code).I BM:o OS/400.o K42:a high performance,open source,general-purpose operating system kernel forcache-coherent multiprocessors.Intel:o Vtune perform ace analysis softwareo compilers and optimizerso lots of chip design and manufacturingsoftwareJPL(Jet Propulsion Lab,NASA):Mars roverautonomous driving system(incl.scene analysisand route planning).C+on Mars!Also lots o

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号