问题

如何评论"知名游戏开发者称 C++ 是一种非常糟糕、可怕的语言"?

回答
看到“知名游戏开发者称 C++ 是一种非常糟糕、可怕的语言”这句话,我的第一反应是:“来了!” 这种爆炸性的言论在开发者圈子里就像一颗核弹,足以掀起滔天巨浪,也一定会被迅速扒个底朝天,然后引发无数场唇枪舌战。

首先,我们得认识到,开发者们对编程语言的态度,尤其是像 C++ 这样历史悠久且影响深远的语言,往往是带着复杂的情感。不是简单的喜欢或讨厌,而是充满了爱恨交织的纠葛。提到“知名游戏开发者”,这本身就带有几分分量。我们知道,游戏开发是个高要求的领域,对性能、底层控制的要求极高,而 C++ 在这方面一直是王者。所以,当一位在这个领域有声望的人说出这样的话,那绝对不是随口说说,而是经过了长期实践和深刻体会的。

那么,这位开发者可能指的是哪些“糟糕”和“可怕”之处呢?我想,最常被诟病的几个点肯定会上榜:

内存管理的地狱模式: C++ 的强大来自于它对内存的直接控制。但这种强大也意味着巨大的责任。手动分配和释放内存,指针的野蛮生长,内存泄漏、悬空指针、缓冲区溢出等等,这些都是开发者们挥之不去的噩梦。一次小小的笔误,可能就会导致程序崩溃,或者更可怕的是,在生产环境中悄无声息地埋下炸弹。对于游戏引擎这种庞大而复杂的系统,内存管理的复杂性更是指数级增长。想象一下,在某个关键的性能优化阶段,为了找到一个棘手的内存问题而熬上几个通宵,那滋味,绝对谈不上“美好”。

语法的复杂性和晦涩: C++ 的语法充满了各种“黑魔法”。模板元编程、操作符重载、继承和多态的复杂组合、各种奇怪的修饰符……有时候你写下的代码,自己过几个月再看都可能觉得陌生。更别提那些标准库的庞杂和不同编译器之间的兼容性问题。这种复杂性不仅增加了学习曲线,也大大增加了代码出错的可能性。尤其是在快节奏的游戏开发中,每次都要花费大量时间去理解和调试那些“非直观”的代码,确实会让人抓狂。

编译时间漫长到怀疑人生: 尤其是在大型游戏项目中,随着代码量的爆炸式增长,编译时间可以轻松拖到几十分钟甚至几个小时。每次一点“编译”,你就有充足的时间去泡杯咖啡、刷刷新闻、甚至冥想一下人生的意义。这种低效的反馈循环严重打击了开发者的效率和士气。你可能只是改了一个小小的头文件,整个项目就得重新编译一遍,那种无力感,可想而知。

难以驾驭的现代 C++ 标准: 虽然 C++ 也在不断进化,引入了 C++11, C++14, C++17, C++20 等等新特性,让它变得更加现代化,例如智能指针、Lambda 表达式、范围based for 循环等,在一定程度上缓解了之前的痛苦。但问题在于,这些新特性往往需要开发者花费额外的精力去学习和掌握,而且不同的团队、不同的项目可能还在使用不同的 C++ 标准,这就造成了另一种程度的混乱和不一致。而且,即使是现代 C++,其底层依然是 C++,那些隐藏的复杂性并没有消失。

但是,话又说回来,为什么这么多人还在用 C++?

这位知名开发者的话,虽然尖锐,但可能也只是他个人经历和视角的一个缩影。我们不能忽视 C++ 的优势,特别是对于游戏开发这个领域:

极致的性能: 这是 C++ 最无可替代的优点。对于需要处理海量数据、实现复杂物理模拟、渲染逼真画面的游戏来说,C++ 提供的底层控制能力能够让你榨干硬件的每一分性能。任何一种其他更高级的语言,在原始性能上都很难与之匹敌。

广泛的生态系统和工具支持: 游戏开发领域积累了大量的成熟的引擎、库和工具链都是基于 C++ 的。Unreal Engine、Unity 的底层(虽然提供了 C 接口,但核心仍然是 C++)、各种物理引擎、渲染引擎等等,都是用 C++ 开发的。迁移到其他语言的成本是巨大的。

跨平台能力: C++ 是一种非常成熟的跨平台语言,通过相应的工具链和标准,可以在不同的操作系统和硬件上运行,这一点对于面向全球玩家的游戏至关重要。

控制力: 在游戏开发中,你需要精确地控制内存、线程、硬件资源。C++ 给了你这种能力,让你能够对游戏的方方面面进行细致入微的调优。

所以,这位开发者说 C++ “糟糕”、“可怕”,很可能是在表达一种“爱之深,责之切”的情绪。他可能是因为在某个项目中,被 C++ 的某个特性折磨得够呛,导致开发效率低下,或者出现了难以解决的 bug,从而产生了这种强烈的负面感受。这种感受在很多身经百战的开发者身上都会出现。

如何理解和评论这样的言论?

1. Recognize the context: 这是一个“知名游戏开发者”说的,所以他的话是有一定参考价值的,但也不能完全代表所有人的观点。游戏的类型、团队的规模、开发者的经验都有影响。
2. Acknowledge the pain points: C++ 的确存在这些问题,这是客观事实。对这些问题的抱怨是正常的,也是推动语言进步和工具改进的动力。
3. Avoid generalizations: 不要因为一个人的说法就全盘否定 C++,也不要因为有人抱怨就觉得它一无是处。很多伟大的游戏都是用 C++ 开发出来的。
4. Consider the alternatives: 如果 C++ 如此可怕,为什么其他语言(如 C, Python, Rust)在游戏开发中的应用仍然是“补充”而非“完全替代”?这本身就说明了 C++ 在某些方面的不可替代性。
5. The human factor: 编程语言只是工具,最终还是人来使用。一个技术高超、经验丰富的开发者,即使面对 C++ 的复杂性,也能写出高效、健壮的代码。而一个经验不足的开发者,即使使用更简单的语言,也可能写出充满问题的代码。

总而言之,当听到这样的评论,我的看法是:这位开发者说出了很多在 C++ 的泥潭里摸爬滚打过的开发者的心声。C++ 确实是一门复杂且充满挑战的语言,它的某些设计确实可以称得上是“糟糕”和“可怕”。但是,正是这种复杂性和底层控制力,使得它在游戏开发这个对性能和效率要求极高的领域,依然占据着核心地位。这是一种权衡,是一种在便利性和极致性能之间的选择。所以,这样的言论,更像是一种对于强大工具的复杂情感抒发,而不是对其完全的否定。它提醒我们,在享受 C++ 带来的强大能力的同时,也要时刻准备好面对它带来的“学费”。

网友意见

user avatar
C++ 的主要缺陷在于它是一个非常复杂和分层的生态系统,在解决不同问题的过程中变得越来越复杂 ; 层数越多,堆叠越高,变得越不稳定,理解起来就越难。

这个问题确实存在,但这个问题不是C++的问题,而是需求的问题:简而言之,如果需求简单的话,直接把C++当作带类的C,甚至完全类都不用,有何不可?

反过来,用C实现稍复杂的需求,那就到处都是各种类型强转,满天都是函数指针,还有各种多重指针/指针数组——很多人看着双重指针就已经一脸懵逼了,那么去体验一下经典的nginx的4重指针再来说C(和C++相比)不糟糕不可怕好吗?


总而言之,真正可怕的是需求的复杂性,以及变更频繁程度。

如果这两者都相对简单,那么相对来说,用C确实会更轻便一点。但如果两者都复杂,那么实话说,大多数号称精通C语言的开发者,写出来的代码大概率比C++更糟糕更可怕。

user avatar

在互联网上,关于C++将要被市场所淘汰的讨论从未停止过,有人说C++是一门过时的编程语言,也有人说,C++是不可替代的。那么,C++过时了吗?C++程序员会不会被淘汰?

这是我们客栈上的注册C++程序员,大约2300多人,占总人数的5%左右,这还不包括会C++但没有标签的,虽然我们都知道C++在走下坡路,但C++短时间内绝不会消亡!

C++为什么不会消亡?我们采访了多名C++程序员后,得出以下三个观点——

1、在游戏和工具领域仍然是主流

首先是游戏领域,Milo Yip表示——程序员必须使用C++框架/库,如大部分游戏引擎(如Unreal/Source)及中间件(如Havok/FMOD),虽然有些C++库提供其他语言的绑定,但通常原生的API性能最好、最新。
其次是工具领域,无论是网络安全还是杀毒软件,C++仍是主流语言。

程序员擅长语言统计 程序员客栈统计制作

2、C++程序员的收入没有受到影响

根据100offer的后台数据显示,目前入职的程序员年薪最高达47万,最低22.4万,C++程序员的收入与其它编程语言的岗位相比处于持平状态,没有出现劣势。

随着C++逐渐成为某些特定企业和特定项目所需的语言后,高级C++程序员的收入也会更具有竞争性。

3、C++仍具有不可替代性

知乎红人 @vczh 说:「我在上大学的时候几乎就只学习C++,后来实习的时候去了微软,结果到了那里才知道,那个组是不用C++的,怎么办?凭借着C++带给我的殷实的功底,我按时完成了老板给我的“两个星期内学会C#和WCF基础知识”的工作,顺利开始工作。」

当然,这只是vczh的个人经历,不具有普遍性,但不可否认的是C++仍具有不可替代性。某家创业公司CTO在接受采访时表示:「即便有很多人唱衰C++,但在当代,仍有很多很多项目的目标平台暂时只提供C++编译器的支持,仅从这一点而言,C++是不可能彻底死亡的。」

从应用领域来说,C++适用于高性能计算、嵌入式系统、开发服务器软件、游戏、实时系统等,所以,短期内能彻底取代C++语言并不存在。

C++在系统、图形、网络等很多领域都是不可替代的,它的光辉岁月让它的死亡速度得以削减。


所以某知名游戏开发者对C++的如此评论,只不过是对某种语言的鄙视吧,程序员业内不是有很多鄙视链吗,比如我在北京四号线地铁大喊:php是最好的语言,java是已经死掉的语言,产品经理是好人!

……

……

……

估计我会被打死吧


点击以下关键字了解更多相关内容——

自由工作自由工作体验 | 自由工作安排 | 找靠谱程序员 | 编程经验 | 业余赚钱

编程相关代码审查 | 审查必要性 | 开发 APP 要多久 | 奇葩需求 | 无 BUG | 编程思维

程序员神逻辑初高级区别 | 烦什么样的程序员 | 崩溃的事| 形象 | 强迫行为

类似的话题

  • 回答
    看到“知名游戏开发者称 C++ 是一种非常糟糕、可怕的语言”这句话,我的第一反应是:“来了!” 这种爆炸性的言论在开发者圈子里就像一颗核弹,足以掀起滔天巨浪,也一定会被迅速扒个底朝天,然后引发无数场唇枪舌战。首先,我们得认识到,开发者们对编程语言的态度,尤其是像 C++ 这样历史悠久且影响深远的语言.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有