泥潭日报 uscardforum · 内容汇总

两小时巨作:史上最烂的编程语言

内容摘要

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++ 的“品味”问题是公司文化问题,而非语言本身的问题。
  • 对 Rust 的批评:
    • 有用户认为 Rust 将编译器的责任推卸给使用者。
  • 对 Python 的批评:
    • 有用户认为 Python 在某些场景下“太慢了”,即使是 IO bound 的业务。

5. 行动建议

  • 对于 C++ 的使用者:
    • 认识到 C++ 的复杂性和历史包袱,并尝试通过自动化工具(如 clang-tidy)来规范代码风格和解决潜在问题。
    • 如果可能,考虑在新项目中使用更现代的语言或工具。
  • 对于初学者:
    • 谨慎选择第一门编程语言,避免 C++ 带来的挫败感。
    • 建议从 Python、Lisp、Java 或 C 等语言入手。
  • 对于企业:
    • 考虑在特定领域(如追求极致性能)继续使用 C++,但要意识到其开发效率的劣势。
    • 在可能的情况下,探索使用 Rust、Go 等语言来提升开发效率和安全性。
    • 建立清晰的代码规范和自动化检查流程,以缓解 C++ 代码风格混乱的问题。