两小时巨作:史上最烂的编程语言
C++ 语言的“史上最烂”争议:开发者对其复杂性、历史包袱和开发效率的深刻反思
该帖子围绕一个“两小时巨作:史上最烂的编程语言”的视频展开,引发了关于 C++ 语言的激烈讨论。大部分参与者认为视频对 C++ 的批评“在理”,并分享了自己在使用 C++ 过程中遇到的各种痛点,包括其复杂的语法、缓慢的标准更新、糟糕的易用性以及由此带来的开发效率低下。尽管 C++ 在某些领域(如实时性能、游戏开发)仍有优势,但其历史遗留问题和设计缺陷使其成为许多开发者“头疼”的对象。
1. 关键信息
- C++ 的主要槽点: 复杂性高、易用性差、标准更新缓慢、API 设计奇怪、头文件问题、编译速度慢、历史包袱重、缺乏包管理器、容易导致代码风格混乱。
- 开发者痛点:
- 易用性:
FILE* fp = std::fopen(...)与std::unique_ptr<FILE, decltype(&std::fclose)> fp(...)的对比,凸显 C++ 在资源管理上的繁琐。 - 标准更新: SFINAE 的“脑残”设计,以及 Concepts 的想法提出多年才被纳入标准。
- 开发效率: 视频作者和多位用户认为 C++ 的开发效率极低,甚至“负90%”。
- 生态位: C++ 占据了许多生态位,导致在某些领域难以被替代,即使有更好的选择。
- 入门门槛: C++ 被认为是打击新生积极性的语言,不适合作为第一门编程语言。
- 易用性:
- C++ 的优势(被提及但被其缺点掩盖):
- 能够做一切事情(图灵完备)。
- 在追求极致性能和开发效率的平衡上,仍然是许多领域的首选(如实时通信、交易、游戏开发)。
- 其他语言的对比:
- Rust: 被认为在内存安全方面有优势,但也有用户认为其将编译器的责任推卸给使用者。
- Go: 被认为适合做网络服务。
- Python: 适合做原型开发和测试,但在性能要求高的场景下存在瓶颈。
- C: 被认为是学习计算机体系结构的基础。
2. 羊毛/优惠信息
- 无
3. 最新动态
- 无
4. 争议或不同意见
- 对 C++ 优点的辩护:
- 有用户认为 C++ 的易用性问题被夸大,认为可以通过配置
clang-tidy等工具来解决。 - 有用户认为 C++ 的复杂性是其强大功能的代价,并且“老登级”的 C++ 仍然是许多领域的必需品。
- 有用户认为 C++ 的“品味”问题是公司文化问题,而非语言本身的问题。
- 有用户认为 C++ 的易用性问题被夸大,认为可以通过配置
- 对 Rust 的批评:
- 有用户认为 Rust 将编译器的责任推卸给使用者。
- 对 Python 的批评:
- 有用户认为 Python 在某些场景下“太慢了”,即使是 IO bound 的业务。
5. 行动建议
- 对于 C++ 的使用者:
- 认识到 C++ 的复杂性和历史包袱,并尝试通过自动化工具(如
clang-tidy)来规范代码风格和解决潜在问题。 - 如果可能,考虑在新项目中使用更现代的语言或工具。
- 认识到 C++ 的复杂性和历史包袱,并尝试通过自动化工具(如
- 对于初学者:
- 谨慎选择第一门编程语言,避免 C++ 带来的挫败感。
- 建议从 Python、Lisp、Java 或 C 等语言入手。
- 对于企业:
- 考虑在特定领域(如追求极致性能)继续使用 C++,但要意识到其开发效率的劣势。
- 在可能的情况下,探索使用 Rust、Go 等语言来提升开发效率和安全性。
- 建立清晰的代码规范和自动化检查流程,以缓解 C++ 代码风格混乱的问题。