2010-03-19

コンセプトが廃止になった理由

昨日は、久しぶりに、私の契約しているISPが規制されていなかったので、2chに書き込んだ。書いた後、結構まとまっていると感じたので、ブログにも書いて、保存しておくことにした。コンセプトが廃止になった理由について。

コンセプトが廃止になった理由は、いろいろあるが、直接には、concept mapを、暗黙的に生成するかどうかだった。

あるコンセプトに対して、対応するコンセプトマップを、暗黙的に生成するか、 あるいは、たとえ、コンセプトマップが空でも、明示的に定義させるべきかという問題があった。 つまり、ある型は、そのコンセプトの要求を満たしていると言うことを、明示的に宣言しなければならないわけだ。 こうすることによって、たまたまシグネチャが一致したのではなく、明確に、この型はこのコンセプトを満たしているんだと宣言できる。

ただ、このやり方は、殆どの場合、空のコンセプトマップを、ただ、そのコンセプトを満たしているという宣言のためだけに、書かなければならない。

それはどうなんだと。そんなの面倒で、誰もやらないぜと。

フランクフルト会議での解決策は、デフォルトのコンセプトには、暗黙的に、対応するコンセプトマップが生成され、 explicitをつけた場合、コンセプトマップを(たとえ空でも)、明示的に宣言しなければならないという提案だった。

ただ、やはりコンセプトというのが、非常に微妙で、ある意味では、厳格すぎるし、なかなか難しい機能だった。 コンセプトのコードを正しく書くのは、非常に難しい。

さらに、まともな実装もなかった。Douglas GregorのConcept GCCは、かなり不完全な実装で使い物にならなかった。

まあ、そんなわけで、標準化委員会の中にも、「もういいだろ」って雰囲気が漂っていた。 そこにきて、この根本的な思想の違いをきっかけに、投票が行われた。 すでに入っているConceptを、ドラフトから削除するという投票。 これには、Bjarne Stroustrupも、Douglas Gregorも、削除の票を投じた。

そんなわけで、コンセプトは削除された。

No comments: