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