文章目录
前言
路漫漫其修远兮,吾将上下而求索;
C++ 发展史
1、发展史
c++的起源可以追溯到1979年,当时 Bjarne Stroustrup(本贾尼·斯特劳斯特鲁普) 在贝尔实验室从事计算机科学与软件工程的研究工作。面对项目中复杂的软件开发任务,特别是模拟和操作系统的开发的工作时,他感受到了现有语言(C语言)在表达能力、可维护性和可扩展性方面的不足;
1983年。Bjarne Stroustrup 在C语言的基础上添加了面向对象编程的特性,设计出了C++语言的雏形,此时的C++已经有了类、封装、继承等核心概念,为后来的面向对象编程奠定了基础;这一年该语言被正式命名为C++;
在随后几年中,C++在学术界和工业界的应用逐渐增多。一些大学和研究所开始将C++作为数学和研究的首选语言,而有一些公司开始在成品开发中尝试使用C++。也是在这一时期,C++的标准库和模板等特性得到了进一步的发展和完善;
C++的标准化工作从1989年开始,并成立了一个ANSI 和ISO(International Standards Organization)国际标准化组织的联合标准委员会。1994年标准委员会提出了第一个标准化草案,在该草案中,委员会在保持本贾尼博士最初定义的所有特征的同时,还增加了部分新的特征;在完成C++标准化的第一个草案后不久,STL(Standard Template Library)是惠普实验室开发的一系列软件的通称。它是由 Alexander Stepanov、Meng Lee 和 David R Musser 在惠普实验室工作时所提出来的。STL 对C++ 的扩展超出了C++ 的最初定义范围。虽然在标准中增加STL 是一个很重要的决定,但也因此延缓了C++标准化的进程;
1997年11月14日,联合标准化委员会通过了该标准化的最终草案。1998年,C++的ANSI/ISO标准被投入使用;
注:很多计算机发展的基础均是从贝尔实验室出来的:eg.通信、晶体管、UNIX操作系统、C语言(Linux 和Windows 是从NUIX 操作系统发展而来的)

Q1:美国国家安全局建议从 C/C++切换到内存安全语言:

C/C++ 是直接操作系统应用软件层上跑的,而Java 是跑在虚拟机上的,操作系统、数据库等基础的大型软件上都是用的C/C++ 写的;C++ 是许多基础软件(如数据库、浏览器引擎、操作系统)的构建语言,迁移成本极高。例如,Linux 内核、Chrome 浏览器等均依赖 C++,重写需要耗费数十年时间和巨额资金;
Q2:随着AI的发展,未来是否会利用AI工具来重写C++代码?
AI 工具(如 Copilot)可提升 C++ 开发效率,自动生成代码或优化算法,但难以完全替代人工。例如,复杂的内存管理和性能优化仍需开发者深度参与;C++ 系统的底层逻辑和硬件依赖使得 AI 重写风险极高,尤其在需要严格实时性的场景(如航空航天控制系统);重写,即使在有AI 工具的情况下,仍然是一个巨大的消耗,企业更倾向于维护现有 C++ 系统而非重写,尤其涉及关键基础设施时;若未来 AI 自举编程技术成熟,可能催生更高效的二进制级语言,但这类语言仍需与 C++ 生态兼容。短期内,AI 更可能作为辅助工具而非颠覆者;至少目前学习阶段,大可不必担心C++在这几十年间会被淘汰。
2、C++版本

注:版本更新并不代表语言的改变,新版本兼容旧版本;(版本更新:优化旧版本中的Bug ,去掉不合理的部分;还会更新新得语法库)
C++经历了近20年的沉淀才发布了第一个版本的标准(1998年);从C++98 到 C++11花了11年是因为:
- 九几年的时候还在PC(Personal Computer)互联网时代,在那个时代人们想要上网就只能用电脑,而在电脑上就可以使用各种软件(此时的软件许多都是用 C/C++ 写的)
- 所以在1998年C++的标准版本发布以后,C++在当时就是一个巅峰的存在,也是因为当时C++太火了,许多的后台程序(存储、管理数据……)以及前端的东西均可以用C++来写;
- 也是在1998版本发布之后,C++委员会便制定了一个五年计划:每五年更新一个大版本;
- 在2003年的时候,更新了一个版本(这个版本并非是大版本,而是小版本)该版本主要是针对98版本进行的修复,并没有增加新语法、新库。
- 在2008年得时候,也出现了一个更新版本,但是当时得C++出现了烂尾工程;因为在2007年的时候,此版本发布不出来,但是委员会想着要给大家一个交代,于是也就发布了点内容,称为C++0x;
在上述过程中,C++就没有那么火了;因为移动互联网的时代来了;大概在07、08年左右;乔布斯当时发布了苹果,用的是IOS系统(IOS系统当时很贵,并且并未普及),所以谷歌就做了一个系统——安卓(安卓是免费的,其底层就是剪裁的Linux);当安卓出来的时候,各大厂商就开始转型去做智能手机,也就是在这段时间附近,移动互联网的时代来临了;
移动互联网时代的到临意味着我们的应用需求开始产生了变革(网速变得更快、应用端不再局限于PC电脑的软件,而是Web端和App端);
而在移动互联网时代,C++在市场中的份额便降低了,C++便更适合去做一些传统的大型软件、服务端、高性能等……
以及C++更新的速度太慢了,就导致很多人不满。于是C++委员会又开会规定:三年更新一次(稳定更新),这也就是2011年之后C++稳定更新的原因;
3、语言
TIOBE 是最知名的编程语言流行度排行榜之一,每月更新一次,基于全球工程师、课程和第三方供应商的数量,以及搜索引擎数据统计得出。

Python:易用,但是没有编译的这个过程,故而用Python 写出来的程序性能比较差;(C/C++首先会将代码编译成二进制指令,然后机器便可以直接执行)
Rust语言:Rust语言可以看作是与C/C++直接竞争的语言,因为Rust也是以高性能著称的语言;但是现在只有部分中、小公司在用,也有部分大厂在部分项目中使用;Rust语言在内存安全方面存在很多问题,有许多坑,并且学习的门槛也比较高;Rust 因内存安全和并发模型备受关注,但其生态尚未成熟,且与现有 C++ 代码的互操作性有限。例如,Rust 无法直接替代需要泛型特化或复杂模板的 C++ 代码
Java: 主要是做后台服务居多;例如:打车软件,顾客可以看到自己的周围有多少辆车,在顾客发起打车之后,周围的司机就可以接单;这些数据并不是在手机上,而是在打车软件的服务器上;该服务器上存了所有司机、以及乘客的信息,当有乘客发起打车的时候,便会利用自己的匹配算法让司机接单;(注:在服务器上写的程序便叫做后台服务)
4、C++在工作领域中的应用
游戏开发
- 游戏引擎开发:C++ 的高性能和对底层硬件的直接访问能力,使其成为开发游戏引擎的首选语言,如 Unreal Engine、Unity 的部分底层也是用 C++ 实现的,能为游戏提供高效的渲染、物理模拟和资源管理等功能。
- 游戏逻辑实现:游戏中的各种复杂逻辑,如角色行为、游戏规则、AI 算法等,都可以用 C++ 来实现。像《使命召唤》《英雄联盟》等大型游戏,其核心逻辑都是基于 C++ 编写,以保证游戏的流畅性和稳定性。
软件开发
- 操作系统开发:C++ 可以直接操作硬件,具有高效性和底层控制能力,因此在操作系统开发中占据重要地位。Windows、Linux 等操作系统的内核部分大量使用 C++ 编写,实现了内存管理、进程调度、设备驱动等关键功能。
- 数据库管理系统:数据库需要处理大量数据的存储、查询和事务处理等操作,对性能要求极高。C++ 被用于开发数据库管理系统的核心模块,如 MySQL、Oracle 等,能够高效地管理数据存储结构和优化查询算法。
嵌入式系统
- 硬件驱动开发:在嵌入式设备中,需要编写硬件驱动程序来控制各种硬件设备,如传感器、控制器等。C++ 可以直接访问硬件寄存器,实现对硬件的精确控制,为嵌入式设备提供稳定的驱动支持。如在智能家居设备中,用 C++ 开发的驱动程序可实现对温度传感器、门窗传感器等的控制。
- 实时控制系统:对于一些对实时性要求极高的嵌入式系统,如航空航天、工业自动化中的控制系统,C++ 能够满足其对响应速度和可靠性的严格要求。如飞机的飞行控制系统、工业生产线上的自动化控制设备等,都是用 C++ 编写控制程序,确保系统在复杂环境下的稳定运行。
金融领域
- 交易系统开发:金融交易系统需要处理大量的实时交易数据,对交易的准确性和速度要求极高。C++ 的高性能和低延迟特性使其成为开发交易系统的理想选择,能够快速处理订单匹配、交易撮合等操作,如证券交易系统、外汇交易系统等。
- 风险评估与量化分析:在金融风险评估和量化分析中,需要进行大量的数值计算和数据处理。C++ 提供了丰富的数学库和高效的计算能力,可用于开发风险评估模型、量化交易策略等,帮助金融机构进行精准的风险控制和投资决策。
图形图像领域
- 计算机图形学:C++ 在计算机图形学领域有广泛应用,用于实现三维建模、图形渲染、动画制作等功能。像 3ds Max、Maya 等专业图形软件,其核心功能部分都是用 C++ 编写,能够高效地处理复杂的图形数据和实现逼真的视觉效果。
- 图像处理与计算机视觉:在图像处理和计算机视觉领域,C++ 可用于图像滤波、特征提取、目标检测等算法的实现。OpenCV 是一个常用的计算机视觉库,主要用 C++ 编写,为图像和视频处理提供了丰富的函数和工具,广泛应用于安防监控、自动驾驶等领域。
总结
C++ 的不可替代性源于其历史积累、性能优势和底层控制能力。尽管新兴语言和 AI 工具带来挑战,但 C++ 仍将是关键领域的“基石语言”,未来更可能与其他语言共存而非被完全替代。
5402

被折叠的 条评论
为什么被折叠?



