しのはらのC++実験室 〜 コンセプトなど

しのはらのC++実験室トップページ

// この実験室のコンセプト

 この実験室では、C++を「とても面白いおもちゃ」として扱います。 それは興味の対象が、C++によって作られるプログラムではなく、 C++という言語そのものの方にあるということです。 実際、僕はC++で遊ぶときそのような見方をすることがよくあります。

「仕様」について思うこと

 ところでC++言語に興味があるということですが、 僕の「C++の仕様」についての考えを述べたいと思います。
 人がやらないようなC++の使い方をしてみたり、奇抜なクラスを設計したりするとき、 必ず「C++の仕様」というものを意識させられます。 仕様とはC++というスポーツの「ルール」に相当するわけですから、 僕がやっていることは「仕様に乗っ取ってプログラムと戦う」というか、 「仕様を相手に戦う」というかそんな感じなわけです。
 ところがそこに「理想」と「現実」という2つの世界があることに気付きます。 それは「仕様」と「実装」と言われるものに対応します。 「仕様」は厳密に定められ記述された「ルールブック」 であって、 世の中の処理系実装者たち(コンパイラメーカー) はこれにできる限り従った処理系を作ろうとします。 そしてプログラマが実際に相手にしなければならないのは、 「実装」と呼ばれるこれらの処理系なわけで、 言ってみれば競技場に立っている「審判」です。 審判(処理系)は精一杯ルールブック(仕様)に従うように努力していても、 どうしても到らないところもあります。 プレーヤ(プログラマ)にとって現実の相手はルールブックではなく審判であり、 審判に従うことが現実の意味でのルールなのです。
 そういう認識を持つとき、 僕らの興味の対象は「実装の中でいかにうまく生きるか」 にあると言えると思うのです。
 そんなわけで僕も「実装」を相手に戦っていることが多いですが、それが現実です。 ただし仕様に合わない実装を仕様と思いこむことがないよう、 普段から心がけているつもりです。