C/C++简介:历史、演变与应用领域

C语言的起源与发展

在C++之前,有C语言。C语言是由丹尼斯·里奇(Dennis Ritchie)在1972年于贝尔电话实验室开发的,主要作为一种系统编程语言(一种用于编写操作系统的语言)。里奇的主要目标是产生一种极简主义的语言,易于编译,允许高效访问内存,产生高效的代码,并且是自包含的(不依赖于其他程序)。对于一种高级语言来说,C语言被设计为给予程序员很大的控制权,同时允许开发者编写可以在不同平台上运行的程序。

C语言最终因其高效和灵活性而在1973年被里奇和肯·汤普森(Ken Thompson)用来重写大部分Unix操作系统。许多以前的操作系统都是用汇编语言编写的。与汇编语言不同,汇编语言产生的程序只能在特定的CPU上运行,C语言具有出色的可移植性,允许Unix在许多不同类型的计算机上轻松重新编译,加快了其被采纳的速度。C语言和Unix的命运紧密相连,C语言的流行部分与Unix作为操作系统的成功有关。

C语言的标准化历程

1978年,布莱恩·克尼汉(Brian Kernighan)和丹尼斯·里奇出版了一本名为《C程序设计语言》的书。这本书通常被称为K&R(以作者的姓氏命名),为语言提供了一个非正式的规范,并成为了一个事实上的标准。当需要最大可移植性时,程序员会遵循K&R的建议,因为当时的大多数编译器都是按照K&R标准实现的。

1983年,美国国家标准协会(ANSI)成立了一个委员会,以建立C语言的正式标准。在1989年(委员会做事总是需要很长时间),他们完成了工作,并发布了C89标准,更常见的名称是ANSI C。1990年,国际标准化组织(ISO)采纳了ANSI C(做了一些小的修改)。这个版本的C语言被称为C90。编译器最终成为了ANSI C/C90兼容的,希望实现最大可移植性的程序都是按照这个标准编码的。

1999年,ISO委员会发布了一个新的C语言版本,非正式地命名为C99。C99采纳了许多已经作为扩展进入编译器的特性,或者已经在C++中实现的特性。

C++的诞生与演进

C++(发音为"see plus plus")是由Bjarne Stroustrup在1979年于贝尔实验室作为C语言的扩展开发的。C++为C语言增加了许多新特性,可能最好被认为是C语言的超集,尽管这并不严格正确(因为C99引入了一些C++中不存在的特性)。C++相对于C的最显著创新是它支持面向对象编程。至于"对象"是什么以及它与传统编程方法有何不同,我们将在后续章节中介绍。

C++的标准化与版本更新

C++在1998年被ISO委员会标准化。这意味着ISO标准委员会批准了一个文件(称为标准文件),为C++语言提供了一个正式的描述。标准化的目标是帮助确保C++代码在不同的编译器和平台上的行为保持一致。

2003年发布了该语言的一个次要更新(非正式地命名为C++03)。

自那以后,C++语言已经进行了五次重大更新(非正式地命名为C++11, C++14, C++17, C++20, 和 C++23),每次都增加了额外的功能。特别是C++11增加了大量的新能力,被广泛认为是语言的新基线版本。预计未来每三年左右对语言进行一次升级。

由于批准的标准的官方名称很复杂(C++20的正式名称是ISO/IEC 14882:2020),因此标准通常以非正式名称来引用,这些名称包括出版年份(或预期出版年份)的最后两位数字。例如,C++20指的是2020年发布的语言版本。

C和C++的设计哲学

C和C++的基本设计哲学可以总结为"信任程序员"——这既美妙又危险。C++被设计为允许程序员有很高的自由度去做他们想做的事情。然而,这也意味着语言通常不会阻止你做一些没有意义的事情,因为它会假设你这么做是出于它不理解的某些原因。如果新程序员没有意识到,他们很可能会陷入许多陷阱。这就是为什么知道在C/C++中不应该做什么几乎和知道应该做什么一样重要的主要原因之一。

C++的应用领域与优势

C++擅长什么?

C++擅长于需要高性能和对内存及其他资源精确控制的情况。以下是C++会擅长的一些应用程序类型:

  • 视频游戏
  • 实时系统(例如,用于交通、制造业等)
  • 高性能金融应用(例如,高频交易)
  • 图形应用和模拟
  • 生产力/办公应用
  • 嵌入式软件
  • 音频和视频处理
  • 人工智能和神经网络

C++还有大量的高质量第三方库可用,这可以显著缩短开发时间。

C++的现状与未来

问:C++不是正在消亡吗?

不。调查一直表明C++是第二或第三受欢迎的编译语言(仅次于Java,有时是C#,并且在C之前),并且是第五或第六受欢迎的语言总体上(不包括HTML、SQL和shell脚本语言)。

C++是学习编程的最流行语言之一,这归功于大量的教学资源、庞大的社区以及许多教授它的大学课程。

随着每三年一次的语言更新,大量的有用第三方库,以及在日益流行的视频游戏行业的主导地位,C++继续蓬勃发展。

学习C++的前置要求

问:在这些教程之前我需要知道C吗?

不!从C++开始完全可以,我们将在途中教你所有需要知道的东西(包括要避免的陷阱)。

一旦你了解了C++,如果你需要,学习标准C应该相当容易。这些天,C主要用于特定的用例:在嵌入式设备上运行的代码,当你需要与其他只能与C接口的语言交互时,等等…… 对于大多数其他情况,推荐使用C++。

关注公众号,回复"cpp-tutorial"

可领取价值199元的C++学习资料

公众号二维码

扫描上方二维码或搜索"cpp-tutorial"