C语言的前世今生C背景知识二

C++读作“C加加”,是“CPlusPlus”的简称。顾名思义,C++是在C语言的基础上增加了新特性,提供了新功能,玩出了新花样儿。就像华为Mate30和Mate30Pro,iPhone12和iPhone12pro之间的关系。

一、C语言的发明

丹尼斯.里奇是“C语言之父”。C语言是KennethLaneThompson(中文名:肯尼斯·蓝·汤普森,简称:肯·汤普森)和DennisMacAlistairRitchie(中文名:丹尼斯·麦卡利斯泰尔·里奇,简称:丹尼斯·里奇)创造出来的。C语言是丹尼斯·里奇在B语言的基础上创造出来的。

C语言的出现经历了以下历程:

(1)在年,美国贝尔实验室的KenThompson(,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。BCPL(BasicCombinedProgrammingLanguage),年由剑桥大学的MatinRichards在同样由剑桥大学开发的CPL语言上改进而来。BCPL最早被用做牛津大学的OS6操作系统上面的开发工具。

(2)年,美国贝尔实验室的丹尼斯·里奇在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

(3)年初,C语言的主体完成。肯·汤普森和丹尼斯·里奇迫不及待地开始用它完全重写了UNIX。直到今天,各种版本的UNIX内核和周边工具仍然使用C语言作为最主要的开发语言,其中还有不少继承汤普森和里奇之手的代码。

肯·汤普森和丹尼斯·里奇是年图灵奖的获得者,以表彰其在通用操作系统理论领域的贡献,特别是Unix操作系统的开发与实现。

有人说几乎所有的网络产品都是基于丹尼斯先生的成就诞生的。苹果,微软,以及其他,都是站在里奇的肩膀上。也有人这样评论丹尼斯先生:

“一个人发明了刨子,你能说世界上所有的木器都是他的功劳么?DennisRitchie就是发明了计算机编程用的某个刨子的人,是的,他足够伟大,足够让我们每个人崇拜,是的,世界上无数软件都是用他发明的刨子做出来的,但是,也别把他夸大,他只是一个早期的软件编程先驱,假如他没有发明C,可能Linux、Windows会用Pascal写,关于unix,DennisRitchie是unix发明人之一,但是现代unix比如linux还有多少跟当年的unix有关?基础概念是,但是很多很核心的功能早就都不是了,如果把unix比做一辆车,DennisRitchie当年做的是一辆老爷车,跟现在带导航全自动档的车也不是一个概念了,咱没资格否认他的贡献,我只是想说,也不要过分夸大他的贡献,把一切都归功与他就是夸大了。仅此而已。”

不论别人如何评价丹尼斯·里奇,我是很崇拜他,他对C语言和其他编程语言、Unix等操作系统的发展做出了巨大贡献。

二、C++语言的发明

C++语言是从C语言发展而来的。C语言有很多优点,也有很多不足。如对类型匹配的检查不够严格、基本没有支持代码重用的机制、不支持面向对象等。这使得在用C语言开发大规模的软件时,维护和扩充都比较困难。

(1)年,贝尔实验室的BjarneStroustmp(本贾尼·斯特劳斯特卢普)开始对C语言进行改进,为其加入面向对象的特性。最初,这种新语言被称为“带类的C(CwithClasses)”。

(2)年,“带类的C”加入虚函数、函数和运算符重载、引用等概念后,正式定名为“C++(Cplusplus)”。

(3)年,C++最权威的著作、由BjarneStroustmp撰写的《C++程序设计语言》(TheC++ProgrammingLanguage)第一版发布。

(4)年,C++2.0版发布,加入了多重继承、抽象类、静态成员、常量成员函数等概念。年,又加入了模板、异常处理、名字空间等机制。

(5)年,ANSIC++标准发布。

(6)年,ANSI(美国国家标准协会)和ISO(国际标准化组织)联合发布了至今使用最为广泛的C++标准,称为C++98。C++98最为重大的改进就是加入了“标准模板库”(StandardTemplateLibrary,STL),使得“泛型程序设计”成为C++除“面向对象”外的另一主要特点。

(7)年,C++标准委员会发布了一份技术报告(TR1),详细描述了他们计划添加到最新的C++标准中的各种特性。新标准被非正式地称为C++0x,因为它预计将在二十一世纪的第一个十年结束前的某个时候发布。然而,具有讽刺意味的是,新标准要到年年中才会发布。在此之前发布了一些技术报告,一些编译器开始为新特性添加实验支持。

(8)年年中,新的C++标准(被称为C++11)完成。Boost库项目对新标准产生了相当大的影响,一些新模块直接来自相应的Boost库。一些新特性包括正则表达式支持(正则表达式的细节可以在这里找到),一个全面的随机化图书馆,一个新的C++库,原子的支持,一个标准的线程库(直到C和C++都缺乏),一个新的循环语法提供功能类似于某些其他语言的foreach循环,auto关键字,新的容器类,更好地支持union联合体和数组初始化列表,和可变模板。总体而言,此版本增加了多线程支持,通用编程支持等,标准库也有很多变化,集成了C++技术报告1库(TR1)中的大部分内容。

本贾尼·斯特劳斯特卢普被称为C++语言之父。

三、C和C++语言的应用排名

先来看一下年7月份TIOBE排行榜上的前20名编程语言:

TIOBE排行榜,是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎统计出来的排名数据,反映了某个编程语言的热门程度,但是并不能说明一门编程语言好不好。可以看到第一名是C语言,说明当前使用C语言的程序员还是最多的,C语言已经多年霸占TIOBE排行榜的榜首了,可以说是经久不衰。C语言是C++语言的子集,没有基础的学生学习C++也是从C语言的基本概念学起。

四、学习编程语言的方法

学习编程是一个循序渐进的过程,不要期望一口吃个胖子。学习C++语言,一来是学习它的语法,培养编程兴趣,二来是学习内存、编译和链接,弄清编程语言的内在机制。每个初学者都经历过这样的过程,已经学习了语法,明白了编程语言都能做什么,也按照教程敲了不少代码,但是遇到实际问题还是没有思路,不知道从何下手。说白了就是只会学,不会用,这个过程是正常的。其原因就是实践操作少,没有培养起编程思维。学习知识容易,运用知识难!当你能编写出上百行的代码,就对编程有概念了。

学习编程没有捷径,听不会,看不会,只能练会!

心晴感恩

感谢您的赞赏!




转载请注明:http://www.aierlanlan.com/rzfs/287.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了