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

被批复杂、不安全,争议下的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++ 是“不安全”的

终于说到近期讨论度最高的问题了。很多人会把 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.

相关推荐
热点推荐
库明加正式申请交易!美媒列三大最现实方案 可三方交易换回克莱

库明加正式申请交易!美媒列三大最现实方案 可三方交易换回克莱

罗说NBA
2026-01-16 07:08:01
黎笋之子黎坚诚坦言:父亲选择同中国开战,是其毕生最大的失策

黎笋之子黎坚诚坦言:父亲选择同中国开战,是其毕生最大的失策

磊子讲史
2025-12-24 11:04:05
董洁牵手陈坤,陈坤紧紧拉住董洁的手,俩人看起来很般配

董洁牵手陈坤,陈坤紧紧拉住董洁的手,俩人看起来很般配

小霍霍
2026-01-16 15:51:01
郎平也没想到,曾经的队长曹慧英,如今已成富婆坐拥一座北京大厦

郎平也没想到,曾经的队长曹慧英,如今已成富婆坐拥一座北京大厦

墨印斋
2026-01-06 14:29:49
1比3惨败张本智和!21岁黄友政肩负重任,中国男单人才断层显现

1比3惨败张本智和!21岁黄友政肩负重任,中国男单人才断层显现

卿子书
2026-01-16 10:00:18
1955年,毛主席一笔划掉二野刘邓之下的3号人物:此人不予授衔!

1955年,毛主席一笔划掉二野刘邓之下的3号人物:此人不予授衔!

卿昀
2025-11-24 21:26:43
昆明一小区新老物业交替发生冲突,多人受伤!业主:心理上造成很大恐慌;相关部门已介入处置

昆明一小区新老物业交替发生冲突,多人受伤!业主:心理上造成很大恐慌;相关部门已介入处置

大风新闻
2026-01-16 17:00:18
令人惋惜:一个月内,中国男足2大天才陨落,年纪轻轻前途堪忧

令人惋惜:一个月内,中国男足2大天才陨落,年纪轻轻前途堪忧

国足风云
2026-01-16 15:26:24
俄军终于找到乌克兰命门!集中火力猛攻三座城!乌军出现20万逃兵

俄军终于找到乌克兰命门!集中火力猛攻三座城!乌军出现20万逃兵

铁锤简科
2026-01-16 16:25:52
媒体:多国空军排队购买枭龙战机

媒体:多国空军排队购买枭龙战机

财联社
2026-01-14 17:33:05
明天北京全市有雪

明天北京全市有雪

新京报
2026-01-16 13:33:09
16号午评:央行出台利好政策!所有人都注意,大盘下周开始这样看

16号午评:央行出台利好政策!所有人都注意,大盘下周开始这样看

春江财富
2026-01-16 12:00:16
LV做梦也想不到,请了一堆流量大咖,却被一个00后运动员抢尽风头

LV做梦也想不到,请了一堆流量大咖,却被一个00后运动员抢尽风头

以茶带书
2026-01-15 15:06:31
女孩追母身亡后续:真相另有隐情,父亲着急要保险金,奶奶更离谱

女孩追母身亡后续:真相另有隐情,父亲着急要保险金,奶奶更离谱

有范又有料
2026-01-15 18:00:52
湖人三大败因出炉,东契奇看清现实!斯玛特话里有刺,老詹真尽力

湖人三大败因出炉,东契奇看清现实!斯玛特话里有刺,老詹真尽力

鱼崖大话篮球
2026-01-16 15:15:35
来了,我的2025年度十佳电影

来了,我的2025年度十佳电影

独立鱼
2026-01-01 21:49:24
受够了AI脱衣?新《古墓丽影》劳拉演员宣布推特删号

受够了AI脱衣?新《古墓丽影》劳拉演员宣布推特删号

游民星空
2026-01-14 12:13:11
正式申请被交易!多队有意却无人下手!真要砸手里了?

正式申请被交易!多队有意却无人下手!真要砸手里了?

阿浪的篮球故事
2026-01-16 17:35:15
佛山一高中74名学生感染诺如病毒

佛山一高中74名学生感染诺如病毒

南方都市报
2026-01-16 12:09:05
台湾黑帮大佬陈启礼:我宁可被共产党管着,也不让台湾被外人拿走

台湾黑帮大佬陈启礼:我宁可被共产党管着,也不让台湾被外人拿走

浩渺青史
2026-01-16 16:39:21
2026-01-16 21:35:00
CSDN incentive-icons
CSDN
成就一亿技术人
26264文章数 242218关注度
往期回顾 全部

科技要闻

传小米传音Ovi四家手机厂下调全年出货预期

头条要闻

欧洲多国只派几个兵去格陵兰岛 意防长:像笑话的开头

头条要闻

欧洲多国只派几个兵去格陵兰岛 意防长:像笑话的开头

体育要闻

全队身价=登贝莱,他们凭什么领跑法甲?

娱乐要闻

李湘翻车,早就有迹可循!

财经要闻

清流|酒店商家在携程和美团之间沦为炮灰

汽车要闻

方程豹品牌销量突破30万辆 2026年还将推出轿跑系列

态度原创

艺术
数码
健康
本地
公开课

艺术要闻

300亿!341米!迪拜将建全球首个奔驰品牌城市

数码要闻

震动拖地+8.8cm越障!石头G30S Pro将带来极致清洁体验

血常规3项异常,是身体警报!

本地新闻

云游内蒙|黄沙与碧波撞色,乌海天生会“混搭”

公开课

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

无障碍浏览 进入关怀版