在本章中,我们围绕一句话展开了探讨:“C++ 很难学。”那么,事实果真如此吗?
我们回顾了 C++ 的历史,了解到在最初阶段,即使是编写最简单的程序也颇具挑战。随后,我们比较了 Java、C# 和 Python 是如何解决开发者在 C++ 中常遇到的问题的,同时C++ 标准在过去十五年间出人意料地快速发展,旨在消除许多旧有的障碍。
如今,你已经可以用 C++ 编写出风格上类似于 Java 或 C# 的代码。即便如此,仍然可能需要理解一些底层机制,例如:内存管理 —— 我以移动语义为例来说明这一点。随着语言和时代的发展,学习 C++ 的方式也在不断演进:Stroustrup 在教学中只是简要介绍指针,便迅速引导读者转向 STL 提供的更高层次的抽象结构。而通过引入修改后的 TDD(测试驱动开发)循环,可以帮助学习者以一种探索性的方式逐步掌握 C++,而不至于被复杂的语法或晦涩的错误信息所吓跑。
此外,我们也指出,C++ 在工具链和可移植性方面仍存在一定的短板。在 C++ 中安装新依赖项往往是一个复杂的过程,这与 Java、Python 或 C# 所提供的统一包管理方式形成鲜明对比。这种差异可能会让一些有志于成为 C++ 开发者的初学者望而却步,从而止步于更深入的学习之路。
最后,尽管现代 C++ 标准取得了显著进步,但不能忽视一个现实:全球范围内仍有大量遗留的 C++ 代码尚未升级至最新标准。因此,即使你从现代 C++ 入手学习,也很有可能在实际工作中接触到老旧代码库。
综上,我们可以得出这样一个结论:C++ 仍然比 Java、C# 或 Python 更难学习,但它已比以往对易用性做了很大的改善。同时,它所具备的强大功能依然吸引着一批富有热情的开发者。
下一章中,Ferenc 将继续探讨一个关键问题:是否每个 C++ 程序都必须严格遵循标准规范? 或者说,开发者的核心驱动力是解决问题,并根据自身环境选择最适合的技术方案,甚至忽略标准本身?也许正是在这种实践中,新的编程习惯和模式得以诞生,并最终被纳入正式标准之中。