0-3 C/C++ 介绍
在C++之前,有C
C语言由丹尼斯·里奇Dennis Ritchie于1972年在贝尔电话实验室开发,主要作为系统编程语言(用于编写操作系统的语言)。里奇的主要目标是创造一种简约的语言:易于编译、能高效访问内存、生成高效代码且自成体系(不依赖其他程序)。作为高级语言,C的设计赋予程序员高度控制权,同时支持开发者编写可在不同平台运行的程序。
C语言最终展现出极高的效率与灵活性,促使里奇与肯·汤普森Ken Thompson于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委员会发布了非正式命名为C99的新版C语言。C99采纳了许多已作为扩展功能进入编译器,或已在C++中实现的特性。
C++
C++(发音为“see plus plus”)由比雅尼·斯特劳斯特鲁普于1979年在贝尔实验室开发,作为C语言的扩展。C++为C语言增添了诸多新特性,可视为C语言的超集(尽管严格来说并非如此——C99引入了若干C++未包含的功能)。相较于C语言,C++最显著的创新在于支持面向对象编程。关于“对象”的定义及其与传统编程方法的差异,我们将在后续章节中详述。
1998年,C++由ISO委员会正式标准化。这意味着ISO标准委员会批准了一份提供C++语言正式规范的文档(称为标准文档standards document)。标准化旨在确保C++代码在不同编译器和平台上行为一致。
2003年发布了该语言的小幅更新(非正式命名为C++03)。
此后语言经历了五次重大更新(非正式命名为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++。

浙公网安备 33010602011771号