C++的未来之路:C++0x概览

C++的未来之路:C++0x概览,第1张

C++的未来之路:C++0x概览,第2张


c++ 0x的工作已经进入了决定性阶段。iso++委员会对C++0x的目标是使它成为“C++09”。这意味着我们必须在2008年完成这项标准,以便获得ISO成员国的批准。提交的最终标准设施将从目前正在讨论的提案中选出。为了按时完成这项工作,委员会已经停止审查新的提案,而是集中于已经讨论过的提案。

本文简要描述了C++0x标准化的指导原则,展示了一些可能的语言扩展的例子,并列出一些建议的新标准库设施。

指导原则

C++是一种支持系统编程的通用编程语言。它

是更好的c。

支持数据抽象

支持面向对象编程

支持泛型编程

当我说“系统编程”时,我指的是传统上与操作系统和基本工具相关的那种编程任务。包括操作系统内核、设备驱动程序、系统工具、网络应用程序、文字处理工具、编译器、一些图形和GUI应用程序、数据库系统、游戏引擎、CAD/CAM、电信系统等。这类工作在当前C++用户中占据了主导地位。比如可以参考我的个人主页“应用”模块(http://www . research . att . com/~ bs/Applications . html)。

C+0x的目标是让上面的陈述仍然成立。并不是要消除这些编程风格(或范式)中的一种(例如,让C++与C不那么兼容),或者添加一个全新的范式。最有效的编程风格就是将这些技术结合起来,也就是我们常说的“多范式编程”。因此,我们可以说,我们希望改进C++使之成为更好的多范例编程语言。

C++0x的高级目标是:

让C++成为更好的系统编程语言和库构建语言。

-而不是为特定的子社区提供专用设施(如数值计算或Windows风格的应用程序开发)。

让C++更容易教和学。

-通过增强的一致性、更强的保障和对新手的设施支持。

换句话说,在C++98已经很强的领域(以及一些C++98支持的更自然、更一般化的领域),C++0x应该比C++98做得更好。对于一些专有的应用领域,比如数值计算、Windows风格的应用开发和嵌入式系统编程,C++0x应该是依赖于库的。C++在基本语言特性(如基于堆栈的对象和指针)方面的高效性,以及在抽象机制(如类和模板)方面的通用性和灵活性,使得该库在广泛的应用中具有吸引力,从而降低了C++对各种新语言特性的需求。

我们不能为了降低C++的教与学的难度而去掉一些语言特性。保持C++的稳定性和兼容性是我们的主要考虑。因此,以任何方式删除任何重要的功能都是不可行的(而删除不重要的功能也无助于解决问题)。那么留给我们的选择恐怕就只有“通用化规则”和“增加更易用的功能”了。两者都是我们的目标,但后者更容易。例如,更好的库(容器和算法)可以帮助用户避免一些底层设施(如数组和指针)导致的问题。能够“简化库的定义和应用”的语言设施(比如“概念”和“通用初始化器列表”,下面会讨论)也将有助于提高C++0x的可用性。

可能有人会对此提出异议,“不要给初学者降级C++,已经有很多适合初学者的语言了!”或者“最好的办法就是把新手变成专家!”这些人的观点不无道理,但现实是,新手永远比专家多。而且,很多C++用户根本不需要也不想成为C++的专家——他们是各自领域的专家(比如物理学家、图形专家、硬件工程师),但是他们需要使用C++。个人认为,C++已经太“专家友好”了,我们可以用很少的成本为“新手”提供更好的支持。事实上,这种支持不会损害任何C++代码的性能(零成本原则仍然适用)、灵活性(我们不打算禁止任何东西)和简洁性。相反,我们的目标是简化这些想法的表达。最后,值得指出的是,C++这么大,应用这么广,各种设计技巧数不胜数,很多时候我们都是“新手”。

C++0x应该以这样一种方式进行改进,使得生成的语言应该更容易学习和使用。以下是委员会考虑的一些规则:

提供稳定性和兼容性(对于C++98,可能还有C)

优先考虑图书馆设施,其次是语言拓展
只做能改变人的思维方式的改变。

优先考虑一般性而不是特殊性

为专家和新手提供支持。

增强类型安全性(通过为当前不安全的设施提供安全的替代方案)

提高直接处理硬件的性能和能力。

适应现实世界

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++的未来之路:C++0x概览

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情