虽然 C++ 因其无与伦比的硬件控制能力仍是系统编程的基石,但越来越多的开发者对该语言 40 年累积的复杂性表达出一种“爱恨交织”的关系。随着社区权衡 C++ 高层抽象的优势与 Rust 内存安全及现代工具链日益增长的吸引力,这种情绪变得尤为强烈。
最初的提问
讨论由一位用户发起,他指出虽然 C++ 因为“功能蔓延”受到批评,但他个人非常喜欢自 C++11 起引入的严格类型系统和模板功能。
发帖者强调编写正确的迭代器或处理右值引用是主要的痛点,并询问社区成员是否仍然喜欢编写 C++ 源代码。
该提问引发了关于专业经验、个人项目以及使用现代 C++ 对比其他语言的权衡等广泛的个人轶事。
C++ 力量与精通的论点
几位评论者认为 C++ 的主要吸引力在于其纯粹的力量。一位以 adev_ 身份发表评论的用户表示,目前没有任何语言在泛型编程或硬件控制方面能与 C++ 相媲美,他暗示虽然它存在历史遗留问题,但它能提供难以超越的性能和生产力。
其他人,如 mort96,则认为对 C++ 的享受源于对其特性的精通。他们指出,掌握如何处理移动语义和内存管理可以实现“巧妙”的优化,从而避免不必要的分配,他们认为这种能力比其他语言中更具“保姆式”限制的机制更自由。
相反,一些用户表示更倾向于 C 的简洁性或 Python 的高层能力。一位评论者 adg001 表示,他从未享受过 C++ 最初的语法和面向对象编程方法,更喜欢 C 的感觉。
向 Rust 的迁移
讨论中一个反复出现的主题是从 C++ 迁移到 Rust。评论者 gignico 报告称,虽然他们仍然欣赏 C++ 的优点,但在切换到 Rust 后,他们发现很难再回头看,并特别指出 C++ 缺乏代数数据类型和模式匹配是主要缺点。
其他评论者指出,C++ 失去了吸引力,因为它不再提供良好的性能与投入平衡。他们建议,甚至对于新项目,LLM 现在编写 Rust 代码的熟练程度也高于 C++。
一些开发者,如 ketzu,指出虽然他们喜欢 C++ 的循环和函数,但模板规范的复杂性最终导致他们转向 Rust。
历史遗留问题与现代改进
讨论还涉及了语言的“冗余”。评论者 chris_j 指出,C++ 承载了 40 年的功能,如果今天重新发明该语言,这些功能可能不会被包含在内,尽管他承认在 C++11 更新后,该语言变得更加令人愉悦。
AI 在现代开发中的作用作为一个意想不到的角度出现。评论者 logicchains 声称更倾向于 C++,因为像 Claude 这样的 AI 代理可以完成大部分工作,而且结构良好的 C++ 有时比 Rust 代码编译得更快。
这凸显了一种权衡:即使人类开发者正转向具有更严格安全保证的语言,C++ 海量的现有代码库仍为 AI 辅助编程提供了显著优势。
未解决的问题与权衡
讨论揭示出,对 C++ 的喜爱往往取决于经验;专家可以使用它来进行“巧妙”的内存管理,而其他人则认为其语法和模板系统“令人反感”或“难以理解”。
一个重要的争议点仍然是 C++ 委员会主导的开发前景。评论者 gignico 对委员会在当前组织挑战中实施模式匹配等长期提案的能力表示怀疑。
最终,在 C++ 和 Rust 之间的选择涉及 C++ 的“无保姆式”表现力与 Rust 安全优先、现代工具生态之间的权衡。
