デベロッパー

デベロッパー

C++プログラミングニュース:C++0x Final Committee Draft が承認

Danny Kalev
2010年8月6日 / 10:00
 
 

はじめに

2010年3月13日の土曜日、ISOC C++規格委員会が「C++0x Final Committee Draft (FCD)」を承認し、C++0x 標準が完成に向けてさらに一歩前進した。委員会の一部メンバーは米国副大統領の先日のコメントをおどけて引き合いに出しながら「FCD の承認は重要なことだ」と述べている。しかし、まだ未完成の部分が多数残っており、FCD の状態にはまだいくつかの懸念が生じている。  

国際標準

ISO のお役所言葉に詳しくない人は、標準化手続きの簡単な説明があるとうれしいのではないだろうか。C++0x 標準化プロジェクトは、ISO 国際標準の策定を目指す NCITS (米)や BSI (英)など複数の国の標準化団体による共同作業だ。これまでは別の手続きがとられていた。まず最初に米国の標準(ANSI C など)が策定され、それから ANSI 標準が ISO 国際標準(ISO C)の基盤になる。しかし、この2段階の標準化プロセスには時間がかかり、作業量は倍増した。近年になって、最初から ISO 国際標準を策定するという異なるアプローチが取られてきたのはそのような理由からだ。それにもかかわらず、国際的な共同活動でさえ標準化プロセスに数年かかることは経験上分かっている。  

CD、FCD、FDIS、そしてIS

標準化プロセスの最初のマイルストーンは委員会草案(CD)と呼ばれる。CD は、商用ソフトウェアのベータリリースに近い機能的に完成した標準だとされる。CD は新標準のプラットフォームとして ISO に登録される。C++0xの CD は2008年10月に承認されている。そうなると、FCD (4つあるマイルストーンの2番目)に到達するまで約1年半近くかかった理由が不思議に思われるかもしれない。同委員会は2009年7月、C++0x からコンセプトを排除することにした。それまでにはコンセプトが既に承認され、CD に統合されていた。コンセプトは作業草案(同委員会が作業を進めるときの基本にする正式文書)のほかのほぼすべてのセクションに影響する強制力のある機能であるため、コンセプトの切除にはコンセプトに依存する C++0x の各種機能の書き直しに加え、数か月にわたる編集作業が必要だった。CD の劇的な変化にともない、同委員会は2009年7月に2番目の CD を出すことを決定した(2009年7月の会議の議事録はこちら)。だが2番目の CD が出ることはなかった。同委員会は数か月前、その方針を180度転換したのだ。当初の目的通りに CD2の処理を進めていく代わりに、彼らは FCD を制作することにしたのだ。FCD を選んだ最大の理由は明らかだ。遅滞のひどい標準化プロセスの促進である。だが、この判断にはリスクが伴わないわけではない。以前登録された CD と一貫性がなかったら、ISO は FCD を拒否していたかもしれない。このようなリスクを排除するため、同委員会は ISO 事務局と議論を重ね、FCD が承認されるという保証を得た(2010年3月の会議の議事録はこちら)。そして、C++0x FCD は3月26日に ISO に承認された。4か月間におよぶバグ修正と、最終的な微修正は2010年7月に終了する。すべてが順調に進めば、Final Draft International Standard (FDIS)は2011年に発行されることになる。  

著者注:FDIS に関する ISO の規定は先ごろ変更されている。しかし、新規定はC++0x の標準化にはほとんどもしくは全く影響しない。  

時間との闘い

FCD の承認は、規格の現状の文章が6か月前より格段に優れていることを意味する。しかし、いまだに関連する問題がいくつかある。見つかっていないバグがあといくつ FCD に潜んでいるのかは、実際のところだれにも分からない。FCD は約1300ページのテキストで構成されている。単語や句読点の1つ1つが重要だと言っても大げさではないだろう。これまでは、新機能が次々に搭載され、ほかの機能にも修正が加えられ、場合によっては完全削除されるなか、標準のドラフトはひっきりなしに改訂されてきた。標準のなかのほぼすべての C++のセクションが、標準のほかのセクションを参照している。段落を1つ変更すると、FCD のほかのセクションの改訂が地すべり的に発生していく。筆者の見積もりでは、FCD にはまだ数百か所のバグやあらゆる種類の欠陥があり、その大半は編集上の簡単な修正だ。しかし、相当量の書き直しが必要になるセクションもおそらくあるだろう。ISO は FDIS を完成させる譲れない期限として2012年8月を設定しているため、時間が最も重要だ。FDIS は委員会の次(そして望むらくは最後)のマイルストーンだ。FDIS が承認されれば、ISO に渡されて批准(場合によっては1年近くかかるプロセス)が行われる。 つまり、すべてが順調に進めば、C++0x 標準は2012年に完成する。  

CD が2008年10月から繰り返してきた試行錯誤を考えれば、FCD は偽りなく注目すべき功績だ。典型的な C++プログラマーにとって C++0x の最も重要な機能はマルチスレッドだ。 しかし、新しい標準には自動ガーベッジコレクション、スレッドプール、そしてさらにはネットワーキング API まで、当初標準化予定だったいくつかの機能が欠如している。加えて、FCD にある特定の機能には品質と必要性に関する懸念もある。  

  1. Rvalue リファレンスは筆者が最も懸念しているものだ。その広がりと複雑性は筆者にコンセプトを思い起こさせる。
  2. 属性は今もって架空の問題に対するソリューションにしか思えない。
  3. ラムダ式は多態型のサポート欠如と奇妙なシンタックスが非難されている
  4. もう1つ論争を呼んでいる機能も、承認のわずか数日前に FCD に入った。noexceptという、例外処理を一切実行しないファンクションを明示するキーワードだ。
clock is ticking fast、with わずか16か月 left to C++0x 標準の最終承認までわずか16か月と、ISO では時間が押し迫っている。先月の FCD 承認は この野心的な目標へ向かう重要な一歩なのだ。  



関連記事
【関連記事】
中国電子書籍リーダーの漢王が C&R を日本のコンテンツの独占窓口に
米 HP と Avaya、企業向けユニファイドコミュニケーションで協業
「パックマン×ボンバーマン」など夢のコラボも実現―「ドコデモゲーム」23日にサービス開始
Windows 7の Sensor and Location プラットフォームを C#で使う
Microsoft Visual StudioでC++0xのラムダ式を使う

New Topics

Special Ad

ゆりかごからロケットまで、すべての乗り物をエンジョイ
ゆりかごからロケットまで、すべての乗り物をエンジョイ えん乗り」は、ゆりかごからロケットまで、すべての乗り物をエンジョイする、ニュース、コラム、動画などをお届けします! てんこ盛りをエンジョイするのは こちらから

Hot Topics

IT Job

Interviews / Specials

Popular

Access Ranking

Partner Sites