[声明]:本英文资料源自于Herb Sutter 发表于“C/C++ User Journal”杂志,“C++ 翻译小组”的翻译作品供学习交流与参考用途,不得用于任何商业用途。未经Herb Sutter同意,不得转载;对于违反以上条款,翻译小组对此不负任何责任;特此声明。
文章来源:http://www.gotw.ca
版权归属:Herb Sutter
译 者:Elminster (CSDN)
The New C++
对C++而言这是个迷惑的时期。在1998年C++标准出版以后,现行的标准还暂时保留,这样我们就有时间来修改BUG,完善编译器和类库。现在事情又“热”起来了,发生了许多令人兴奋的东西。
这个新栏目是关于这些“令人兴奋的东西”的,标题是“The New C++”,关注当前新标准的进展:关于C++语言和类库(很多)的扩展以及今后几年我们要发展的标准C++2.0版本。
这儿涵盖了许多,在这里你收到相当多的最新报道。我们中的一些人早已在其他论坛写了一些关于“The New C++”的文章:更多的关于我们目前的状况与现在发生的激动人心的事情等等,留心我和Matt Austern的两个补充栏目在CUJ 2002年[1, 2].它包含了一些基本信息,关于进展程度和相关人员,最重要的是你如何参与和它如何影响你的现在的工作以及目前而不是数年后,这几年的发展道路。
[概述]
在“The New C++”的第一部分,我打算以补充的形式描述我们已经处于什么状况和我们的起始方向,然后再专题介绍——C++标准过程中的人,团体和时间,人员状况以及C++标准化过程中的“术语表”。在今后的专栏,我将描述一些重要功能的技术细节,它们如何工作的,委员会辩论的议题和委员会电子邮件反馈出来的会议议题。
图一指出了主要影响C++标准发展的重大事件,包括在1998年C++标准(ISO/IEC 14882-1998)的发布和将来C++0x’s的发布过程。这幅图将给你一个清晰的概念,就是各种各样的工作项目和联合,在什么时间向什么样的方向发展。专栏其余部分定义了图1中使用的术语。暂时我不想说太多,但是我想特别指出的一件事:Boost决不是唯一对Library TR作出主要的最大贡献的团体,它只是现今最显眼的一个团体。
[人物]
这里是个人和团体的主要名单,他们在C++发展的过去和未来扮演着重要角色。
ANSI:美国国家标准组织。在ANSI会议上,原则是“一家公司或提议的个人,一个投票权”。在国际标准组织会议中,ANSI代表团是美国代表团,同样出席会议的其他国家代表团都有一个ISO投票。由于美国在软件工业的综合方面,特别是在C和C++上的支配作用,所以ANSI会议实际上有点等同WG14和WG21会议。
ANSI J11:ANSI C委员会
ANSI J16:ANSI C++委员会。J16通常与ISO WG21同时召开(这是它的“first among equals”地位的一种表现)。在过去的两年,它也在与J11相同的地点召开,只是时间上相差一个星期,这样可以促进跨委员会通信交流。
AT&T:AT&T贝尔实验室(现在是AT&T研究中心)20世纪80年代早期C++就诞生于此,是Bjarne Stroustrup创作的成果。AT&T提议将C++作为标准,WG21/J16研究工作开始于1989/1990。
Boost:“C++ Boost”研究计划创办于C++98标准通过以后,目标是致力于发展“existing practice”为现行标准的下一轮服务。最初主要包括标准委员会成员,当前的成员人数变得很广泛。见<www.boost.org>
CWG(核心工作组): WG21/J16的小组委员会,专注于核心的语言问题,比如命名空间、模板,诸如此类。
HP:惠普,Alex Stepanov和Meng Lee在这里发明了革命性的STL(标准模板库),其中的许多内容被融合到了1995年C++标准草案里,随后WG21/J16做了改进。
EWG(发展工作组): WG21/J16最新的小组委员会,2001年10月第一次召开会议,特别专注于C++0x的方向。
ISO: ISO国际标准化组织。ISO不是字母的缩写,而是来自于拉丁语,意思是“相同”。在ISO会议上,规则是“一个国家,一个投票权”。(有一些讨论要在将来改变它,但现在还是这个规则)
ISO WG14: ISO C委员会。ISO组织中,JTC1/SC22/WG14是C语言技术工作小组,通常简写为WG14。
ISO WG21:ISO C++委员会。在ISO组织中,JTC1/SC22/WG21是C++技术工作小组,通常简写成WG21。WG21通常于ANSI J16同时召开会议。在过去的两年内,它与WG14在相同的地方召开会议,时间上相隔一个星期,这样可以促进跨委员会交流。
LWG(类库工作组):WG21/J16的小组委员会,专注于标准库的问题,比如容器、算法、流,诸如此类。
PWG(性能工作组):WG21/J16的小组委员会,专注于性能技术报告,在这里不会作说明,他不会直接关系到用户体验的C++语言和类库的性能(比较而言就是TC的缺陷报告和修正、C++0x的新特性)
Bjarne Stroustrup:C++的创造者和第一个C++编译器Cfront的作者。Stroustrup还参与C++标准化活动,目前在WG21/J16会议上他是新的C++0x EWG主席。
Alex Stepanov:STL的主要创造者,STL被采用作为标准C++库的一个主要部分。
[更多的术语表]
除了上述的人和组织外,还有一些其他常见的名称值得说明一下。在该栏目中规则排列如下
ARM C++: 1990的C++。"The ARM"是 The Annotated C++ Reference Manual[4]这本书名称的缩写。The ARM曾经作为开始C++标准研究的基础文档。
C++98:第一个正式的ISO/ANSI C++标准,发表于1998年。正式的命名是ISO/IEC IS 14882:1998(E)。
C++0x:第二个正式的ISO/ANSI C++标准,工作正在进行中,将于未来的几年内发布(尚未定日期)
C99: 第二个正式的ISO/ANSI C标准,发布于1999年。该标准内包含很多东西,C++委员会认为可以全部采用或只作小部分的修改,成为C++0x的一部分。可以清楚地看出C++委员相当重视兼容C,所以可以更容易的将C99的一些功能集成到C++0x中去,而不必自己另外设计。然而,有一些C99的功能,C++0x不能容易以C99的形式采用,因为功能的冲突在C++98中早已存在(比如,complex在C++98中是一个类模板,C99中是一个关键字)
库扩展技术报告:开始于2001年,WG21/J16开始积极的征求和评估C++98标准库扩展的提议。这些后来以“库扩展”TR的形式发布,正式的讲它是不标准的,但决不是骗你的-在推出于20世纪90年代早期和中期的C++草案时,提供商会尽快的紧密跟踪它和实现功能。为什么?因为TR虽然不是正式的,但是明确的想要被大规模的逐字逐句的加到未来非常标准的C++0x标准。
STL:20世纪90年代早期,Alex Stepanov和Meng Lee在惠普实验室开发了极富创造力的STL。HP STL的大部分在1995被采用,然后经过改进,成为C++98标准库的“容器,Iterator和算法”部分。
TCI(技术勘误1):完成于2001年。第一个C++98 标准的“mid-course correction”(又名“patch”,或“service pack”,或“maintenance release”)。包含全球c++团体提交的缺陷报告的解决。
TC2(技术勘误2):当我们继续Library TR和C++0x工作时,无疑继续会有未决的和还没有受到的缺陷报告的解决。这些将以技术勘误2的形式讨论。
[下期]
在领导出版工作时期,即使是在Web上,我希望在2002年4月下一次C++标准会议之前,完成该栏目的两个或更多的部分。下期:概观在2001年10月Redmond, Washington, USA举行的WG21/J16会议上审议的第一批建议库扩展。
[参考资料]
[1] Herb Sutter. "Sutter's Mill: Toward a Standard C++0x Library, Part 1," C/C++ Users Journal, January 2002.
[2] Matt Austern. "The Standard Librarian: And Now for Something Completely Different," C/C++ Users Journal, January 2002, <www.cuj.com/experts/2001/austern.htm>.
[3] The official WG21 website is at <http://std.dkuug.dk/jtc1/sc22/wg21/>.
[4] Margaret Ellis and Bjarne Stroustrup. The Annotated C++ Reference Manual (Addison-Wesley, 1989).