C与C++
本节阅读量:C语言
C语言于1972年由Dennis Ritchie在贝尔实验室发明,设计初衷是为了编写操作系统。
设计目标是:
- 容易编译
- 高效访问内存
- 产出高质量的机器语言
- 跨平台,不依赖特定的操作系统或硬件平台
由于C语言灵活且高效,1973年,Ritchie和Ken Thompson使用C语言重写了Unix操作系统。 在此之前,大部分操作系统都使用汇编语言编写。C语言的跨平台特性使得Unix很容易被编译到不同种类的计算机上,从而得到广泛使用。 从此,C语言与Unix及后续的类Unix操作系统紧密绑定,使C语言广为流行。
1978年,Brian Kernighan与Dennis Ritchie合著了《The C Programming Language》,书中介绍的C语言成为后来广泛使用的标准C的基础。这本书以两位作者名的缩写命名,也被称为"K&R"。目前大量C语言程序设计的教材和专著均以此书为蓝本。人们熟知的"Hello, World"程序就是由《The C Programming Language》首次引入的,如今这一程序已成为所有程序设计语言入门的第一课。 在当时,如果程序需要良好的可移植性,就要遵循"K&R"中推荐的编程写法,大部分编译器也采用"K&R"作为规范。 随着计算机日益普及,出现了许多不同的C语言版本。由于没有统一规范,这些版本之间出现了不一致的地方。1983年,美国国家标准协会(ANSI)委任委员会 X3J11 对C语言进行标准化。经过艰苦努力,新标准于1989年12月14日正式被批准为ANSI X3.159-1989,并于1990年春天颁布。因为该标准是1989年发布的,所以一般简称为C89标准,人们也称其为"ANSI C"。 目前C语言的编译器都支持C89标准,编写的程序只有符合该标准才能获得最好的可移植性。 1999年,ANSI委员会发布了新的C语言规范版本C99。C99囊括了一些编译器已实现的语言扩展,以及C++语言中的部分特性。
C++
C++,读作「C plus plus」。20世纪70年代中期,Bjarne Stroustrup在剑桥大学计算机中心工作,他希望开发一种既编程简单、正确可靠,又运行高效、可移植的计算机程序设计语言。以C语言为背景、以Simula思想为基础的语言,正好符合他的初衷和设想。
1979年,Bjarne Stroustrup来到贝尔实验室,开始从事将C改良为支持面向对象编程的「C with classes」的工作。 1983年,该语言被正式命名为C++。 相较于C语言,C++引入了大量新特性,通常认为C++是C的超集(少部分C99特性不被C++支持)。
1998年,ISO(International Standards Organization)国际标准化组织完成了C++标准化工作。 在2003年,对C++98版本的漏洞部分修改,这就是C++ 03标准。
此后,C++语言的标准有C++11、C++14、C++17及C++20。 C++11为C++加入了大量新特性,使C++看起来几乎像一门全新的编程语言。 C++11也是目前的语言基线版本。 C++语言标准委员会每3年发布一版新的C++标准,不过编译器一般不会支持最新标准的全部特性。 发布新标准的年份会作为标准的名称,例如没有C++16,因为2016年没有发布新的C++标准。
C/C++编程哲学
C/C++选择「相信程序员」。 这意味着你有极大的自由去做任何想做的操作, 但也意味着它不会阻止你做傻事。
「使用C语言很容易开枪打自己的脚,而使用C++则会直接轰飞整条腿」
有许多新手C++程序员容易踩的坑, 因此,在编写C++时知道什么不能做非常重要。
Q: C++擅长用来做哪些领域的编程?
C++非常擅长编写高性能程序。常见的使用C++进行开发的领域:
- 游戏引擎
- 数据库
- 服务器后端开发
- 网络软件
- 音视频,文字图像处理软件
- 高性能的金融应用
- 嵌入式系统中的应用
- 科学计算
- 人工智能
Q: 学习C++前是否需要学习C语言?
不需要。本教程会讲解所需了解的一切。
当学会C++后,学习C语言将会十分容易。目前,C语言主要用来编写操作系统、嵌入式系统软件,或作为不同编程语言之间交互的接口。 多数情况下,更推荐使用C++。