【C++藏宝阁】C++介绍:从发展历程到现代应用

【C++藏宝阁】C++介绍:从发展历程到现代应用
在这里插入图片描述


🌈个人主页:聆风吟
🔥系列专栏:C++藏宝阁
🔖少年有梦不应止于心动,更要付诸行动。


文章目录

📚专栏订阅推荐

专栏名称专栏简介
C++藏宝阁本专栏聚焦学习阶段核心知识点,深耕基础与实战,干货笔记持续更新,和大家共学共进,夯实编程功底。
数据结构手札本专栏主要是我的数据结构入门学习手札,记录个人从基础到进阶的学习总结。
数据结构手札・刷题篇本专栏是《数据结构手札》配套习题讲解,通过练习相关题目加深对算法理解。

一、初识 C++

在这里插入图片描述

C++ 是一门静态类型编译型的通用编程语言。它起源于 C 语言,由丹麦科学家 Bjarne Stroustrup 在贝尔实验室开发,早期被称为 “C with Classes”。作为 C 语言的拓展与升级,C++ 具备以下核心特征:

  • 高度兼容C:可直接复用绝大多数C语言的代码与库文件,保证了良好的生态延续性。
  • 支持多范式编程:不仅支持面向对象编程(通过类、继承、多态),还支持泛型编程(通过模板)和过程化编程,能灵活适配不同的开发场景与设计思想。
  • 强大的性能与控制力:凭借直接操作内存、高效的编译优化以及对底层硬件的操作能力,C++ 成为了对性能有极致要求领域的首选语言。
  • 丰富的现代特性:通过引入异常处理、命名空间、以及功能强大的 STL(标准模板库) 等,极大地提升了开发效率与代码质量。

正是这些特性,使得 C++ 能够在系统底层开发与高性能应用领域始终占据着不可替代的核心地位。

在这里插入图片描述

二、C++ 的发展历程与版本迭代

2.1 发展历程

第一阶段(1979 - 1983):从 C 到 “C with Classes”
C++ 的发展始于20世纪70年代末,其诞生源于对C语言功能扩展的需求 —— 当时C语言虽高效灵活,但在应对复杂大型项目时,缺乏模块化和代码复用的有效机制。1979年,丹麦计算机科学家本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)在贝尔实验室工作期间,开始着手在C语言基础上引入类(Class)概念,旨在结合C语言的高性能与Simula语言的面向对象特性,这一早期探索版本被命名为 “C with Classes”(带类的C),成为C++的雏形。

早期的C++代码示例:

// 早期的 "C with Classes" 代码classvector{int* p;int sz;public:vector(int s){ p =newint[sz = s];}// 构造函数~vector(){delete[] p;}// 析构函数int&operator[](int i){return p[i];}// 运算符重载};

第二阶段(1983-1998):命名确立与标准化奠基
1983 年,“C with Classes” 正式更名为 C++++取自 C 语言的自增运算符,寓意是 C 语言的增强版,同时新增虚函数、运算符重载、引用、常量等关键特性,解决了早期面向对象设计的诸多痛点。1985年,Bjarne Stroustrup 出版了《The C++ Programming Language》一书,系确立了 C++ 的核心语法规范,这是 C++ 首个权威参考手册,标志着 C++ 从实验室走向开发者社区。

20世纪90年代,C++进入快速发展期,大量企业和开发者参与到语言生态建设中,各类编译器(如GCC、Clang、MSVC)相继支持C++,相关的类库、开发工具也不断丰富。为解决不同实现版本之间的兼容性问题,标准化工作被提上日程,1998年,国际标准化组织(ISO)正式发布首个C++标准(C++98),标志着C++从一门实验性语言走向成熟规范的通用编程语言。此后,C++的发展始终围绕兼容历史代码提升开发效率适配新硬件场景三大核心目标,持续迭代优化。

C++98示例 - 标准化带来的变化

// C++98标准 正确使用示例(原写法C++11才支持)#include<vector>#include<algorithm>#include<iostream>intmain(){ std::vector<int> vec; vec.push_back(3); vec.push_back(1); vec.push_back(4); vec.push_back(1); vec.push_back(5); std::sort(vec.begin(), vec.end());// 算法库for(size_t i =0; i < vec.size();++i){ std::cout << vec[i]<<" ";}return0;}

2.2 版本迭代

C++ 的版本更新以国际标准化组织(ISO)发布的官方标准为核心节点,各版本均在保留向后兼容的基础上,针对性补充新特性、优化语法细节,核心版本如下:

时间阶段内容
1998年C++98C++官方第一个版本,绝大多数编译器都支持,得到了国际标准化组织(ISO)和协会认可,以模板方式重写C++标准库,引入了STL(标准模板库)
2003年C++03主要针对C++98标准中的语法漏洞和歧义进行修复,仅少量细节调整,目的是提升标准的严谨性和编译器实现的一致性,确保不同平台下的代码兼容性。
2011年C++11堪称 C++ 发展的里程碑式版本,被称为 “现代 C++ 的起点”。它彻底革新了 C++ 的开发体验,新增自动类型推导auto、Lambda 表达式、右值引用(移动语义)、智能指针shared_ptr/unique_ptr、基于范围的 for 循环等核心特性,既解决了 C++ 长期被诟病的内存管理繁琐问题,又大幅提升开发效率,让 C++ 摆脱 “老旧难用” 的标签。
2014年C++14基于 C++11 做细节完善,比如支持泛型 Lambda、函数返回值自动推导、新增std::make_unique,让 C++11 的特性用起来更顺手,没有颠覆性变化。
2017年C++17进一步补充实用特性,优化大型项目开发体验。核心更新:结构化绑定(可同时获取多个变量的值)、if constexpr条件编译增强、折叠表达式简化模板编程、文件系统库(std::filesystem)标准化,同时新增并行算法库,提升多线程编程效率。
2020年C++20继 C++11 后的又一重大更新,核心解决 C++ 的 “历史包袱”。引入模块(Modules)替代传统头文件,彻底解决头文件重复包含、编译慢的问题;新增概念(Concepts)约束模板参数,让模板错误提示更清晰;支持协程(Coroutines),适配高并发异步编程;还有范围库(Ranges),让容器操作更简洁,这四大特性让 C++ 向现代化语言又迈一大步。
2023年C++23以完善C++20特性、填补功能空白为主。主要更新:标准化网络库、增强协程功能、完善范围库与文件系统库,同时优化了数值计算相关的API,进一步提升语言的工业级应用能力。
在这里插入图片描述


本系列文章将核心聚焦于当前工业界应用最为广泛的C++98C++11两大标准。通过对这两大基石性标准进行扎实系统的学习,待基础筑牢、理解通透之后,再进一步涉猎 C++14、C++17、C++20 等后续更新特性,必将迎来水到渠成的提升,达到事半功倍的学习效果。


三、C++ 编程语言排行榜

TIOBE排⾏榜是根据互联⽹上有经验的程序员、课程和第三⽅⼚商的数量,并使⽤搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube和Baidu(百度)统计出排名数据,只是反映某个编程语⾔的热⻔程度,并不能说明一门编程语⾔好不好,或者一门所编写的代码数量多少。

2025年12⽉TIOBE发布的编程语言排行榜

在这里插入图片描述


在这里插入图片描述

四、C++ 在工作领域中的应用

C++的应⽤领域服务器端、游戏(引擎)、机器学习引擎、⾳视频处理、嵌⼊式软件、电信设备、⾦融应⽤、基础库、操作系统、编译器、基础架构、基础⼯具、硬件交互等很多⽅⾯都有。

  1. 大型系统软件开发:如编译器、数据库、操作系统、浏览器等等
  2. ⾳视频处理:常⻅的⾳视频开源库和⽅案有FFmpeg、WebRTC、Mediasoup、ijkplayer,⾳视频开发最主要的技术栈就是C++。
  3. PC客⼾端开发:⼀般是开发Windows上的桌⾯软件,⽐如WPS之类的,技术栈的话⼀般是C++和QT,QT 是一个跨平台的 C++图形用户界面(Graphical User Interface,GUI)开发框架。
  4. 服务端开发:各种⼤型应⽤⽹络连接的⾼并发后台服务。这块Java也⽐较多,C++主要⽤于⼀些对性能要求⽐较⾼的地⽅。如:游戏服务、流媒体服务、量化⾼频交易服务等
  5. 游戏引擎开发:很多游戏引擎就都是使⽤C++开发的,游戏开发要掌握C++基础和数据结构,学习图形学知识,掌握游戏引擎和框架,了解引擎实现,引擎源代码可以学习UE4、Cocos2d-x等开源引擎实现
  6. 嵌⼊式开发:嵌⼊式把具有计算能⼒的主控板嵌⼊到机器装置或者电⼦装置的内部,通过软件能够控制这些装置。⽐如:智能⼿环、摄像头、扫地机器⼈、智能⾳响、⻔禁系统、⻋载系统等等,粗略⼀点,嵌⼊式开发主要分为嵌⼊式应⽤和嵌⼊式驱动开发。
  7. 机器学习引擎:机器学习底层的很多算法都是⽤C++实现的,上层⽤python封装起来。如果你只想准备数据训练模型,那么学会Python基本上就够了,如果你想做机器学习系统的开发,那么需要学会C++。
  8. 测试开发/测试:每个公司研发团队,有研发就有测试,测试主要分为测试开发和功能测试,测试开发⼀般是使⽤⼀些测试⼯具(selenium、Jmeter等),设计测试⽤例,然后写⼀些脚本进⾏⾃动化测试,性能测试等,有些还需要⾃⾏开发⼀些测试⽤具。功能测试主要是根据产品的功能,设计测试⽤例,然后⼿动的⽅式进⾏测试。
在这里插入图片描述

📝全文总结

本文系统梳理了C++的发展脉络与应用价值:

  • 🚀 发展简史:从1979年“C with Classes”起步,到1998年首个国际标准C++98诞生,再到里程碑式的C++11引入现代特性,C++完成了从实验语言到工业标准的演进。
  • 📈 行业地位:常年稳居编程语言排行榜前五,证明了其在工业界不可替代的地位和持久需求。
  • 💼 广泛应用:在游戏开发、操作系统、嵌入式系统、音视频处理、金融服务等对性能要求极高的领域都是核心选择。
  • 🎯 学习路径:建议以C++98和C++11为起点,打好面向对象、模板、STL等基础后,再循序渐进学习后续版本新特性。

C++虽有一定学习曲线,但其带来的系统级编程能力和性能优化理解,将成为开发者宝贵的技术资产。

今天的干货分享到这里就结束啦!如果觉得文章还可以的话,希望能给个三连支持一下,聆风吟的主页还有很多有趣的文章,欢迎小伙伴们前去点评,您的支持就是作者前进的最大动力!

在这里插入图片描述

Read more

实测|龙虾机器人(OpenClaw)Windows系统部署全攻略(含避坑指南)

作为一名热衷于折腾新技术的ZEEKLOG博主,最近被一款名为「龙虾机器人」的开源AI工具圈粉了!它还有个更正式的名字——OpenClaw(曾用名Clawdbot、MoltBot),不同于普通的对话式AI,这款工具能真正落地执行任务,比如操作系统命令、管理文件、对接聊天软件、自动化办公,而且支持本地部署,数据隐私性拉满。 不过调研发现,很多小伙伴反馈龙虾机器人在Windows系统上部署容易踩坑,官方文档对Windows的适配细节描述不够细致。今天就结合自己的实测经历,从环境准备、分步部署、初始化配置,到常见问题排查,写一篇保姆级攻略,不管是新手还是有一定技术基础的同学,都能跟着一步步完成部署,少走弯路~ 先简单科普下:龙虾机器人本质是一款开源AI代理框架,核心优势是“能行动、可本地、高灵活”——它不内置大模型,需要对接第三方AI接口(如GPT、Claude、阿里云百炼等),但能将AI的指令转化为实际的系统操作,相当于给AI配了一个“能动手的身体”,这也是它和普通对话大模型的核心区别。另外要注意,它还有一种“生物混合龙虾机器人”的概念,是利用龙虾壳改造的柔性机器人,本文重点分享的是可本

By Ne0inhk
Pi0机器人VLA大模型在昇腾A2平台上的测评

Pi0机器人VLA大模型在昇腾A2平台上的测评

Pi0机器人VLA大模型在昇腾A2平台上的测评文档 * 写在最前面 🌈你好呀!我是 是Yu欸🚀 感谢你的陪伴与支持~ 欢迎添加文末好友🌌 在所有感兴趣的领域扩展知识,不定期掉落福利资讯(*^▽^*) 写在最前面 版权声明:本文为原创,遵循 CC 4.0 BY-SA 协议。转载请注明出处。 随着人工智能技术的持续神户以及人形机器人产业的快速发展,算力在提升机器人运动控制精度、实时响应能力与智能化水平方面的作用日益凸显。为实现降本增效,国产化算力代替需求不断攀升,本文基于国产化适配的 Pi0机器 VLA大模型,在昇腾 Atlas 800I A2服务器上完成部署与测试,结果表明:该模型在推理性能、推理精度及功能完整性等方面,不仅实现了与英伟达同级别硬件相当的算力表现,更在部分场景下表现出更优的运行效率。 这一成果充分表明:经过深度适配的国产大模型与国产算力平台,已具备支撑高端人形机器人智能化发展的核心技术能力。国产算力在人形机器人领域的应用场景广阔,正加速迈向自主可控、高效可靠的全新阶段。 一、测评概述 1.1 测试目的 本测评旨在验证Pi0机器人视觉

By Ne0inhk

紫光FPGA与ADS131A04异步中断模式SPI驱动实战解析

1. 异步中断模式SPI驱动概述 ADS131A04是德州仪器推出的一款高性能24位Δ-Σ模数转换器,特别适合需要高精度同步采样的应用场景。这款芯片支持三种接口模式:同步从模式、异步中断模式和同步主模式。在实际项目中,我选择了异步中断模式,主要是因为它能够更好地处理多通道数据采集的时序要求,同时减少FPGA的资源占用。 异步中断模式的核心在于利用DRDY(数据就绪)信号作为中断触发源。当ADC完成一次转换后,会通过DRDY引脚发出信号,FPGA检测到这个信号后启动SPI通信,读取转换结果。这种模式的优势在于不需要FPGA持续产生时钟信号,降低了功耗和电磁干扰,特别适合电池供电或对噪声敏感的应用。 我在实际项目中遇到的主要挑战是如何正确实现状态机设计,确保在DRDY信号触发后能够及时响应,同时处理好SPI通信的时序要求。ADS131A04的SPI接口支持最高20MHz的时钟频率,但实际使用时需要根据系统时钟和布线延迟进行调整。接下来我会详细分享状态机设计和复位时序的具体实现方法。 2. 状态机设计与复位时序 状态机是驱动ADS131A04的核心部分,它需要处理芯片的初始化、命

By Ne0inhk