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

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

相关推荐
热点推荐
老干妈放弃遵义椒始末:立善立德不立威的陶华碧输给了人性

老干妈放弃遵义椒始末:立善立德不立威的陶华碧输给了人性

诗意世界
2025-11-07 09:35:12
惊呆!社交巨头被曝去年靠诈骗及违禁广告收入上千亿元,成全球“欺诈经济”重要支柱!美国证监会正在调查,公司回应:没那么多

惊呆!社交巨头被曝去年靠诈骗及违禁广告收入上千亿元,成全球“欺诈经济”重要支柱!美国证监会正在调查,公司回应:没那么多

每日经济新闻
2025-11-09 00:42:04
消息传来!上海虹桥⇋浦东只要10分钟,价格有望低至59元

消息传来!上海虹桥⇋浦东只要10分钟,价格有望低至59元

鲁中晨报
2025-11-08 22:31:04
毛主席每年遗体防腐费用不菲,但中国人直呼:“花得值!”

毛主席每年遗体防腐费用不菲,但中国人直呼:“花得值!”

百态人间
2025-11-08 05:45:03
文班18+18马刺险胜鹈鹕 福克斯复出首秀24分墨菲41+9

文班18+18马刺险胜鹈鹕 福克斯复出首秀24分墨菲41+9

醉卧浮生
2025-11-09 11:27:34
数百人在内蒙古一菜地“免费摘白菜”,菜农损失近百万,知情人:有少数人还钱菜农没收

数百人在内蒙古一菜地“免费摘白菜”,菜农损失近百万,知情人:有少数人还钱菜农没收

潇湘晨报
2025-11-09 12:43:19
4-0!38岁梅西率队晋级半决赛:1V4乱杀+3场砍5球 解锁生涯400助

4-0!38岁梅西率队晋级半决赛:1V4乱杀+3场砍5球 解锁生涯400助

风过乡
2025-11-09 11:18:43
英媒:英国已准备好出动步兵战机与乌军并肩作战,挪威铁肩担道义

英媒:英国已准备好出动步兵战机与乌军并肩作战,挪威铁肩担道义

史政先锋
2025-11-08 15:56:02
115岁的李陈氏,出生于清朝的“老宝贝”|面孔

115岁的李陈氏,出生于清朝的“老宝贝”|面孔

大象新闻
2025-11-09 09:38:06
警惕!网购电动自行车电池起火15人遇难 火灾现场披露

警惕!网购电动自行车电池起火15人遇难 火灾现场披露

环球网资讯
2025-11-09 09:32:09
40万元级豪华SUV  问界M8为何成了香饽饽

40万元级豪华SUV 问界M8为何成了香饽饽

车文驿
2025-11-09 12:50:20
俄媒:俄军即将攻占乌克兰“第三首都”!俄副总理自曝参战:用狙击步枪还击乌军!俄对乌发动大规模空袭

俄媒:俄军即将攻占乌克兰“第三首都”!俄副总理自曝参战:用狙击步枪还击乌军!俄对乌发动大规模空袭

每日经济新闻
2025-11-08 22:55:11
广东号召30万青年上山下乡,是时代的进步,还是历史的倒退?

广东号召30万青年上山下乡,是时代的进步,还是历史的倒退?

娱乐看阿敞
2025-11-08 18:12:39
A股:大家要做好准备,行情很明朗,明天,11月10日,很可能这样走

A股:大家要做好准备,行情很明朗,明天,11月10日,很可能这样走

云鹏叙事
2025-11-09 09:29:16
萧美琴现身欧洲议会,对百余议员发表“台独”演讲,中方罕见震怒

萧美琴现身欧洲议会,对百余议员发表“台独”演讲,中方罕见震怒

现代小青青慕慕
2025-11-09 12:48:23
祖院长报警就对了!这事明显的是被人做了局,必须要严惩偷拍者…

祖院长报警就对了!这事明显的是被人做了局,必须要严惩偷拍者…

火山诗话
2025-11-08 07:54:20
四国发表联合声明,不许中方开炮,18万菲军当肉盾,巡逻区域变大

四国发表联合声明,不许中方开炮,18万菲军当肉盾,巡逻区域变大

博览历史
2025-11-08 14:52:59
“眼科女王”曾琦,多张漂亮优雅照片曝光,未来3大困境等着她

“眼科女王”曾琦,多张漂亮优雅照片曝光,未来3大困境等着她

李昕言温度空间
2025-11-06 21:03:20
张家界荒野求生挑战赛新退出选手大赞泡面“太好吃”,目前仅剩16名选手

张家界荒野求生挑战赛新退出选手大赞泡面“太好吃”,目前仅剩16名选手

极目新闻
2025-11-09 11:38:20
房产中介做梦也没想到!自己会迎来史上最大竞争对手,庄家出手了

房产中介做梦也没想到!自己会迎来史上最大竞争对手,庄家出手了

火山诗话
2025-11-09 10:21:02
2025-11-09 16:11:00
CSDN incentive-icons
CSDN
成就一亿技术人
26085文章数 242178关注度
往期回顾 全部

科技要闻

黄仁勋亲赴台积电“讨要更多芯片”

头条要闻

央视新闻频道迎来“90后”新主播王晨

头条要闻

央视新闻频道迎来“90后”新主播王晨

体育要闻

他只想默默地拿走最后一亿美元

娱乐要闻

《繁花》剧组又回应了?

财经要闻

10月CPI同比涨0.2% PPI同比下降2.1%

汽车要闻

钛7月销破2万 霜雾灰与青峦翠配色正式开启交付

态度原创

房产
本地
游戏
数码
军事航空

房产要闻

封关倒计时!三亚主城 2.3 万 /㎡+ 即买即住,手慢无!

本地新闻

这届干饭人,已经把博物馆吃成了食堂

Steam喜加一!古怪AVG解谜冒险《灯泡小子》免费领

数码要闻

天马携多款Micro-LED透明技术亮相进博会

军事要闻

俄媒:俄军即将攻占乌克兰"第三首都"

无障碍浏览 进入关怀版