C++

いまさら僕が言うまでもないが、C++という言語は混沌としていると思う。

この混沌はどこから来るのだろうと考えてみるに、どうも悪しき還元主義にあるんじゃないかなぁという気がする。

C++の仕様の議論でしばしば見られる現象として「機能○○は既存のxxによって実現可能であるから言語コアに不要」というのがある。これはライブラリ機能ではなくてメタ文法に属する水準の話だが、テンプレートという変態機能があるおかげで、C++は色々なことがad-hocに実現できてしまうわけだ。

もちろん言語コアはできるだけコンパクトに纏めるべきだし、予約語も少ないに越したことはない。・・・のだが、仮に「ifとgotoがあればすべてのフローはシミュレートできるからforもwhileも不要」といったらまるで「本物のプログラマ」の話みたいでうげっと思うだろう。僕の感じるC++の混沌はそれに類似したことなのではないだろうか。

ある機能がad-hocであることのコストは、それが認識の中で弱い前景化になりがちであることと、同じことだが不格好な実装になりがちなことで、C++の場合「結局どれを組み合わせれば正しい書き方なのか言語全体を知っていないと判断できない」という形で現れているように思う。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です