web-dev-qa-db-ja.com

C ++標準委員会はどのようにして彼らの設計アイデアをテストしますか?

C++委員会は、新しい標準をリリースする前に、ある種のプロトタイプコンパイラで新しい設計仕様をテストしますか?それとも、大きなコンパイラが実装するまでは事実上理論的なだけの標準をリリースするのでしょうか。

29

C++標準委員会 には細則と規則がありますが、これらのほとんどは組織の構造、提案の提出方法、投票、標準の発行などに集中しており、技術的な詳細についてはそれほど多くありません標準自体またはそれがどのようにテストされるかについて。

私が知る限り、機能またはそのデザインを「テスト」するための正式な要件はありません。 C++は、参照または「主要な」実装がないという点でややユニークです(たとえば、Microsoft CLR、Oracle JDK、Zend PHP)。ただし、委員会のメンバーは、言語とコンパイラの実装に関する深い知識を持つ多くの組織で構成されています。たとえば、前のリンクをたどると、尊敬されるC++コンパイラを持っているMicrosoftとIntelの代表者が表示されます。 Red HatとGCCに貢献している他のいくつかの企業も関与しています。

新しい機能を提案するとき、委員会のメンバーは、他の機能と競合する可能性がある場合、または 文法があいまいになる を引き起こして不必要に解析を複雑にする可能性があるかどうかについて、かなり良い考えをすでに持っています。 。 ( ここにC++の文法に関する良い質問があります

短い答えは「いいえ、委員会はプロトタイピングを使用して設計をテストする必要はありません」です。ただし、委員会のメンバーはC++の専門家であり、プログラマーの大多数が理解していないレベルですべての詳細を理解しているため、それほど必要はありません。これらの人々は言語理論とコンパイラ設計の専門家である言語アーキテクトであることを覚えておいてください。

プロセスにコンパイラベンダーが関与していることを考えると、それらの1つ以上mayが新しい機能のプロトタイプを作成することは可能ですが、これについても正式な要件はなく、私が読んだこともありません。 C++委員会からの公的に入手可能な文書で。

それらはvery保守的である傾向があり、リスクがあると判明する可能性のある大量の新機能を指定せずに、現実世界で需要のある新機能を徐々に追加します。実際、近年では、プロプライエタリな拡張機能やオープンソースライブラリとして存在していた新しい機能が、実世界ですでに機能しています。たとえば、C++ 11とC++ 14には Boost の一部が組み込まれています。これは、複数のコンパイラと実行環境で実際にテスト済みです。すでにテスト済みのものをテストする必要はありません。

26
user22815