章节目录

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++时知道什么不能做非常重要。



0.1 什么是编程语言

上一节

0.3 程序开发流程

下一节