文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
11.3 需要工作的领域
没有一种语言对所有人和所有事都是完美的。对于这点,没有人比既懂多种语言、又严肃使用其中一种并努力支持它的人了解更多了。阻碍进步的很少是单纯的无知。相反,重大改进的主要障碍是缺乏方向、缺乏开发资源以及害怕破坏现有代码。
C++ 苦于诞生过早,在现代化的集成开发环境(IDE)、构建系统、图形界面(GUI)系统和 Unicode 问世之前就已经诞生了。我期待 C++ 能慢慢赶上来。举例来说:
- 工具使用:从 C 语言开始,用字符和词法标记来说明语义,以及用
#include
和宏来组织源代码,这一直是有效工具建设的主要障碍。模块应该会有所帮助(§9.3.1),而且是有可能为 C++ 设计出一个合理的内部表示的 [Dos Reis and Stroustrup 2009, 2011]。 - 教育:今天的 C++ 教学大多仍然过时和落后(§2.3)。核心指南(§10.6)是对实践进行现代化的一种方法。WG21 的教育研究小组(§3.2)和许多面向教育的会议报告表明,这些问题得到了重视和并正在解决中。
- 打包和发布:C++ 诞生时,由独立开发、维护的模块组成的软件并不常见。今天,已经有了用于 C++ 的构建系统和打包管理程序。然而,还没有一个是标准的,有些难以用于简单的任务,有些则不够通用,不能应对使用 C++ 构建的大规模系统。我在 2017 年的 CppCon 主题演讲中提出了这个问题,并向社区发起挑战 [Stroustrup 2017c] 来解决它。我认为我们正在看到进展。此外,C++ 社区还缺少一个标准的地方来寻找有用的库。Boost [Boost 1998–2020] 是解决这个问题的一个努力,GitHub 正逐渐成为一个通用的资源库。但要达到让相对的新手能找到、下载、安装和运行几个主流的库这样的方便程度,我们的路还很长。
- 字符集和图形:C++ 语言和标准库依赖于 ASCII,但大多数应用程序使用某种形式的 Unicode。WG21 工作组现在有一个研究小组试图找到一个方式去标准化 Unicode 支持(§3.2)。缺乏标准的图形和图形界面则是更难的问题。
- 清理陈年烂账:这非常困难,而且令人不快。例如,我们知道内置类型之间的隐式窄化转换会导致无穷无尽的问题(§9.3.8),但是有数以万亿计的 C++ 代码行,这些代码以难以预测的方式依赖于那些转换。试图通过添加
更现代
的特性来替换旧特性来进行改进很容易成为 N+1 问题(§4.2.5)的牺牲品。改进的工具(例如静态程序分析和程序转换)提供了希望。
大型语言社区所面临的挑战是多种多样的,不可能有单一而简单的解决方案。这不仅仅是一个语法、类型理论或基本语言设计的问题。有些问题是商业性的。 在工业规模上取得成功所需的各种技能范围令人望而生畏。时间会证明,C++ 社区是否能处理好所有这些问题,以及更多的其他问题。这点上我适度乐观,因为现在所有领域都已经有一些积极的举措(§3.2)。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论