3.1 标准
标准委员会的目的是编写标准。制定标准的一个官方理由是**促进贸易,特别是减少国际贸易的技术壁垒和人为障碍**
,及**提供实现经济、效率和互操作性的框架**
。标准是规范,不是实现。它的目的是保持多个实现一致,并确定一致性
在 一个必须能够有效利用各种不同底层硬件的世界里到底意味着什么。许多程序员在理解这一点上存在问题。他们要么认为当前的编译器就是语言的定义,要么难以理 解为什么很难在许多不同的、通常是竞争性的组织之间达成 100% 的协议。在 1990 年代,委员会考虑过制定形式规约(formal specification),但咨询过世界一流的专家后得出结论,规约技术的进展和成员的水平都还达不到制定 C++ 形式规约的程度。当然,也考虑过参考实现,但语言的复杂度,特别是与硬件使用和优化相关的问题,已经挫败了这种想法。如果有参考实现,它会太复杂,也会代 价过大。要么就得把它简化到一种对最困难的问题没有帮助的程度,但这样的困难问题正是最需要参考实现的场合。再有,当 N 个彼此竞争的实现团队记录他们的决策、运行广泛的合规性测试并讨论它们的不同之处时,会有些意外收获;如果已经有了个复杂的参考实现,就可能掩盖掉这样的 意外收获。对于 C++,从前端实现来说(Clang、EDG、GCC 和微软)N 至少为 4,至于后端,N 少说有十几个。
因此,标准委员会正在努力解决拥有多种实现带来的问题。另一条路是冒险搞单一文化。如果 C++ 技术只来源于一个组织,那么无论好坏,每个人都会得到相同的东西。一个控制唯一真正实现
的组织将在社区中拥有主导话语权,他们出现的问题,就会影响到所有人。特别是,一旦有资金问题、商业顾虑、政治见解或者技术上的一意孤行,就会严重破坏语言及其用户群体。
无论好坏,C++ 社区选择了半组织
的混乱,里面有一个很大的委员会加上多个编译器、工具及库的供应者。我们没有用统一所有权或独裁者模式。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论