网易首页 > 网易号 > 正文 申请入驻

被批复杂、不安全,争议下的C++还值得学吗?

0
分享至

在编程语言的世界里,C++ 的名声总是伴随着争议。一方面,它被指责复杂、难学、容易“坑到自己”;另一方面,它又是支撑现代计算生态的核心力量——从浏览器到游戏引擎,再到金融与 AI 系统,都离不开它。随着 Rust 等新兴语言的崛起,关于“C++ 是否过时”“Rust 是否会取而代之”的讨论愈发激烈。但如果深入剖析,我们会发现,C++ 依然在不断演进,并在众多关键领域保持不可替代的地位。

原文链接:https://dayvster.com/blog/in-defense-of-cpp/

作者 | Dayvi Schuster 责编 | 苏宓

出品 | CSDN(ID:CSDNnews)

C++ 经常被人批评,说它太复杂、学习曲线陡峭,更重要的是,它容易让程序员自己“挖坑”。不过,这些批评真的有道理吗?

在这篇文章里,我想针对 C++ 最常见的批评做一些分析,同时给出它的优缺点的平衡看法。

C++ “太复杂”

确实,C++ 是一门复杂的语言,功能多、特性多。你想在 C++ 里实现一件事,可能有十几种不同的方法,每种方法都有自己的优缺点。那程序员怎么知道哪种方法最适合自己的场景呢?是不是非得对语言有非常深入的理解才能做出决定?

其实也不完全是这样……当然,理解语言对你的应用一定有帮助,但这不是硬性要求。过早优化是万恶之源,在 C++ 里,你完全可以写出简单、可读、易维护的代码,而不用动用模板、运算符重载或者其他高级特性。

很多人觉得,写程序一定要用最“正确”、“高效”的方式。Python 有它的 Pythonic 风格,Java、C#、Go 也各有一套。甚至像在浏览器里渲染 HTML 这样的简单操作,也会每隔几年被重新争论一次。但实际上,大多数情况下,并不存在唯一正确的方法。所谓的“最佳方案”,往往只是个人或团队的偏好而已。认为只要写出了“最佳代码”,就永远不需要维护,这完全是错的。

与其过度纠结“最佳方法”,不如更关注代码是否易读、易理解。只要做到了这一点,基本就没问题。

C++ 已经“过时”

C++ 的确很老了,它诞生于 1985 年——那比第一版 Windows 的发布还要早上 4 年,比第一版 Linux 早 6 年,甚至比最后一批 8 位计算机的出现还早。按年头算,它确实老了。不过,这就意味着它过时了吗?

绝对不是!C++ 从 1985 年发布至今一直在发展改进,新增特性不断。最新的 C++20 标准是在 2020 年发布的,引入了很多新特性;C++23 进一步增强了标准库和 constexpr 功能,还扩展了 concepts、ranges 和 coroutines,让 C++ 更现代、更强大、更灵活。

有人会说,C++ 过时是因为别的语言给开发者带来了更好的体验。

这个嘛,也很主观。C++ 依然是最广泛使用的编程语言之一,拥有庞大的库和工具生态系统。从游戏开发到高性能计算,再到嵌入式系统,C++ 都在大量应用。世界上很多最流行、使用最广的软件都是用 C++ 写的。

总的来说,要说 C++ 过时,那你得非常勉强地去定义“过时”。

终于说到近期讨论度最高的问题了。很多人会把 C++ 和 Rust 做对比,因为 Rust 是一门“内存安全”的语言,很多人认为它应该替代 C++。

先说重点:

把 C++ 代码库改写成 Rust 后,确实更容易避免内存问题。

很多公司也表示,他们通过把 C++ 改写成 Rust,减少了安全漏洞、内存泄漏和 bug 的数量。

但这真的是因为 Rust 本身吗?部分原因是没错,但我觉得更大的原因是——任何一次对已有代码库的重写,都比原来的版本更容易出问题更少

重写代码时,你有机会重新思考和设计架构、修复 bug、提高代码质量。你可以利用之前版本的教训,把原来不好修的毛病都解决掉。就像你当年建了一个小木屋,当时不懂木工,房子有点晃、屋顶漏水;几年后你再建一个,这次吸取了教训,建得更结实、耐风雨,换了更好的材料。新木屋更好,是因为你吸取了经验,而不仅仅是换了材料。

所以,我认为很多公司之所以说改写 C++ 为 Rust 后更安全,其实不是因为 Rust 有魔法,而是因为他们重构了代码,吸取了以前的经验教训。

当然,这并不否认 C++ 的确存在安全问题。

C++ 如果不小心写,确实容易出问题。但其实所有语言都可能不安全:Rust 也能写出不安全代码,Python、JavaScript 也能。内存安全只是安全的一方面,光用 Rust 并不能自动让你的应用安全,只是减少了内存泄漏的可能性。

如何让 C++ 更安全?

可以的,C++ 是可以更安全的,甚至可以做到内存安全。比如使用智能指针(smart pointers)、静态分析工具、内存检查工具(memory sanitizer)等。理论上你甚至可以给 C++ 加上垃圾回收器(尽管不建议)。

最简单的方法就是学会用智能指针。智能指针可以自动管理内存,帮你避免内存泄漏和悬空指针,这正是 C++ 的主要批评点所在。

C++ 难读?

那就不要写得那么复杂。C++ 是多范式编程语言,你可以写过程式代码、面向对象代码、函数式代码,或者混合。你完全可以写出简单、可读的 C++,也可以写出复杂难懂的 C++,这取决于个人或团队偏好。

我的经验法则是:尽量让 C++ 看起来像 C,除非必要,不要滥用高级特性。用智能指针,避免裸指针,尽量用标准库。

你完全可以像写 C 一样写 C++,只在真正需要时再引入复杂特性。

有人会问:“这难道不违背了 C++ 的初衷吗?那为什么不用 C 呢?”

C++ 是 C 的超集,你可以写纯 C 代码在 C++ 中运行。C++ 给你更多功能,你可以按需使用,不必一开始就用所有特性。就像建木屋时,你可以先用木头盖屋顶,需要时再加金属屋顶一样。

C++ 生态复杂

C++ 拥有一个庞大的生态系统,几十年来有很多库和工具,这会让新手不知道该选什么。不过,这种问题并非 C++ 独有,每种语言都有类似问题。

其实你只需要遵循一个非常简单的规则:优先使用标准库,它维护得好、功能多。网络、GUI 等特定任务,可以选择知名、维护好的库。

尽量避开使用 Boost。Boost 是一个庞大的库集合,在 C++ 社区中被广泛使用。然而,Boost 中的很多库已经过时,无人维护。同时,这些库也颇为复杂、难用。如果不是大项目,尽量用更现代、更轻量的库,避免增加性能开销和体积膨胀。

C++ 不适合初学者?

编程本身就不简单,任何技能都一样:木工、修车、编程,都是难的。没有一门语言完全适合初学者,每种语言都有取舍。

如果你想学系统编程或游戏开发,光学 Python 或 JavaScript 帮不了太多,最终还是要学 C 或 C++。

如果目标是做网页开发或数据分析,可以先学 Python 或 JavaScript。

如果想找编程工作,学 Java 或 C# 也不错,这些语言经常被误解,但工作机会很多。

总之,初学编程一定会有难度。实际上,我认为从 C 或 C++ 入手,比学那些“隐藏了底层概念”的语言更好。因为你在学习核心概念时,理解还新鲜、灵活,不会等到以后投入很多后才去补这些基础知识。

C++ vs Rust:朋友还是对手?

近几年,Rust 受到了很多人的喜爱,他们也有充分理由。比如,这么语言非常重视内存安全,借助 borrow checker(借用检查器)强制程序员遵守规则,而 C++ 往往把这些安全责任留给程序员自己。不过,Rust 的生态还在建设中,学习曲线同样陡峭,只是挑战方式不同。

C++ 虽然不能完全防止你“自作自受”,但它拥有几十年实战检验的工具链、编译器和库,支撑了从 Chrome 到 Unreal Engine 等大型系统。实际上,很多团队会把 Rust 和 C++ 一起用,而不是把它们当作竞争对手。Rust 在新项目中表现突出,尤其是对安全要求高的场景;C++ 则继续在遗留系统和性能关键领域占据主导。

2025 年 C++ 还在用吗?

答案是:绝对在用!尽管有人说它过时,C++ 依然是世界上使用最广的编程语言之一。主要浏览器如 Chrome 和 Firefox 仍用它开发,游戏引擎 Unreal 也基于它。汽车系统、金融交易平台,甚至一些 AI 框架,都大量依赖 C++ 来保证性能和可控性。新标准(C++20、C++23)不断让语言现代化,确保它能与年轻语言竞争。如果你仔细看我们日常依赖的大型系统底层,几乎总能发现 C++ 在默默运行。

结论

C++ 是一门强大且多才多艺的编程语言,经受住了时间的考验。虽然它有复杂性和挑战,但在今天的技术环境中仍然非常有用且广泛应用。只要方法和心态正确,C++ 不仅可以让开发过程愉快,还能创造出高性能、高效率的应用程序。

所以,下次有人批评 C++ 时,不妨先想想这门老牌语言的优势和能力,再轻易下结论。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
密密麻麻!33岁女子体内取出197枚,医生:从医以来第一次见

密密麻麻!33岁女子体内取出197枚,医生:从医以来第一次见

上海约饭局
2026-09-19 10:42:08
中日篮球史上最耻辱一战!杨毅气得飙脏话,付政浩:郭士强辞职吧

中日篮球史上最耻辱一战!杨毅气得飙脏话,付政浩:郭士强辞职吧

十点街球体育
2026-09-18 23:34:32
很多公司开始发低薪,却无人敢离职,网友说:都在等N+1!

很多公司开始发低薪,却无人敢离职,网友说:都在等N+1!

黯泉
2026-09-19 10:31:06
徐湖平上千件文物流失仅获刑三年:不是法外开恩,而是法条规定的边界

徐湖平上千件文物流失仅获刑三年:不是法外开恩,而是法条规定的边界

十为先生
2026-09-18 18:25:57
宁德时代的反应还是太强烈了

宁德时代的反应还是太强烈了

财报时间
2026-09-19 08:32:21
齐达内点兵!法国公布23人名单:5大新人+11将被弃 26岁法甲金靴圆梦

齐达内点兵!法国公布23人名单:5大新人+11将被弃 26岁法甲金靴圆梦

我爱英超
2026-09-19 06:26:31
匪夷所思啊!上海龙华寺捐200元,账单标注“消费”而非捐赠,账单收单机构竟是深圳建行,一张账单引发全网热议

匪夷所思啊!上海龙华寺捐200元,账单标注“消费”而非捐赠,账单收单机构竟是深圳建行,一张账单引发全网热议

火山詩话
2026-09-19 11:46:25
亚运会19日开幕:日本队有男女运动员被分同一房间,已准备换驻地 21日台风影响将至

亚运会19日开幕:日本队有男女运动员被分同一房间,已准备换驻地 21日台风影响将至

红星新闻
2026-09-19 12:40:21
提出问题的人,又一次倒大霉了?

提出问题的人,又一次倒大霉了?

走读新生
2026-09-19 00:58:15
“定位是假的,储物空间是没有的,刹车打滑”:近3000位车主吐槽他们的上班接娃买菜“搭子”,品牌方最新回应

“定位是假的,储物空间是没有的,刹车打滑”:近3000位车主吐槽他们的上班接娃买菜“搭子”,品牌方最新回应

都市快报橙柿互动
2026-09-19 01:03:32
局势已经全面反转!菲律宾前大法官公开表示:总统与副总统不得参与任何商业活动

局势已经全面反转!菲律宾前大法官公开表示:总统与副总统不得参与任何商业活动

坠入二次元的海洋
2026-09-19 10:36:53
浙江夜场整治事件舆论发酵!网传一女生从浙江回乡,先后相亲12个对象,听闻籍贯直接拒绝

浙江夜场整治事件舆论发酵!网传一女生从浙江回乡,先后相亲12个对象,听闻籍贯直接拒绝

火山詩话
2026-09-18 05:31:57
评论|中国男篮,已经没有“不能输”的比赛了

评论|中国男篮,已经没有“不能输”的比赛了

澎湃新闻
2026-09-19 14:14:09
儿子去世,孙子身世成谜,真相为何查不下去

儿子去世,孙子身世成谜,真相为何查不下去

南风窗
2026-09-18 16:49:09
梅毒,又杀回来

梅毒,又杀回来

南风窗
2026-09-18 15:39:49
“宁愿等19年,也要绕开中国!”9月16日,韩国一口气把中亚五国总统请到首尔

“宁愿等19年,也要绕开中国!”9月16日,韩国一口气把中亚五国总统请到首尔

扶苏聊历史
2026-09-18 15:18:08
1984年两暴徒袭击金华武警驻地,致38名战士死伤,结局太惨

1984年两暴徒袭击金华武警驻地,致38名战士死伤,结局太惨

莫地方
2026-09-17 23:43:04
985大学退学率出炉!复旦大学总人数最多,国防科大退学率最高

985大学退学率出炉!复旦大学总人数最多,国防科大退学率最高

史海流年号
2026-09-18 22:47:35
沙特挨了揍,才知道土耳其巴基斯坦不靠谱,真盟友还得是以色列

沙特挨了揍,才知道土耳其巴基斯坦不靠谱,真盟友还得是以色列

山间听雨
2026-09-19 11:44:09
iPhone 18首发日走访:黄牛都不看Pro,谁还在买

iPhone 18首发日走访:黄牛都不看Pro,谁还在买

虎嗅APP
2026-09-19 02:44:10
2026-09-19 15:08:49
CSDN incentive-icons
CSDN
成就一亿技术人
26973文章数 242333关注度
往期回顾 全部

科技要闻

要走650亿,智谱的理想越来越贵

头条要闻

媒体:菲有人在"918"招惹中国 等待他们的不会是好果子

头条要闻

媒体:菲有人在"918"招惹中国 等待他们的不会是好果子

体育要闻

好吧,中国男篮辛苦了

娱乐要闻

蔡卓妍小腹凸起疑怀孕?本人没回应

财经要闻

江西首富破产:一张927万商票压垮千亿帝国

汽车要闻

纯电/插混双动力+五座/六座双布局 海狮08应该怎么选?

态度原创

家居
游戏
亲子
教育
公开课

家居要闻

2026建博会(广州) 公装联探展交流活动

《怪物猎人 荒野》DLC主题怪还在藏!古龙会融入剧情

亲子要闻

4岁女儿学骑自行车,学了一个小时还没回,气得自己哭出来了

教育要闻

作文写作是自由的!

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版