0.3 — C/C++ 简介

在 C++ 之前,有 C 语言

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

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

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++(发音为“西加加”)由 Bjarne Stroustrup 于 1979 年开始在贝尔实验室开发,作为 C 语言的扩展。C++ 为 C 语言添加了许多新功能,也许最好将其视为 C 的超集,尽管这并非严格正确(因为 C99 引入了一些 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++ 是第二或第三受欢迎的编译语言(仅次于 Java,有时次于 C#,略领先于 C),是第五或第六受欢迎的整体语言(不包括 HTML、SQL 和 shell 脚本语言)。

由于教学资源丰富、社区庞大以及教授该语言的大学课程数量众多,C++ 是最受欢迎的编码学习语言之一。

每三年更新一次语言、海量的有用第三方库,以及在广受欢迎的视频游戏行业中的主导地位,C++ 将继续蓬勃发展。

问:在学习这些教程之前,我需要了解 C 吗?

不需要!从 C++ 开始完全没问题,我们将在学习过程中教你所有你需要知道的东西(包括要避免的陷阱)。

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

guest
您的电子邮箱地址将不会被显示
发现错误?请在上方留言!
与勘误相关的评论在处理后将被删除,以帮助减少混乱。感谢您帮助使网站对每个人都更好!
来自 https://gravatar.com/ 的头像与您提供的电子邮箱地址相关联。
有回复时通知我:  
577 评论
最新
最早 最多投票
内联反馈
查看所有评论