C++11 以降の C++,順調にセカンドシステム症候群になっている気がする。
近年,迷走著しい論組〈プログラミング〉言語 C++ に数値リテラルの桁区切り記号が追加されている。新 C++ には長所も多いが,全体として C++ を破壊しているという印象が拭えない。その端的な兆候をこの桁区切り問題に見ることが出来る。
そもそも,言語に桁区切り記号を導入する必要などまったく無い。可読性のため,というが区切り方を間違えればかえって混乱を招くし,入力の手間も生じる。そんなことはエディタ側で対策すれば良い。例えば,数値の特定の桁に下線を入れて表示するという方法も考えられる。これなら環境側での調整も効くし,入力の手間を増やさず可読性を向上させることが出来る。
Cμ には「標準規約」という概念があり,その一部「表示規約」として推奨するコードの表示方法を定めているため,こうした対策を導入しやすい。
この手の標準仕様の追加は,容易に後戻り出来ないため慎重になってなり過ぎることはない。このひどい案を排除出来なかったというだけで,標準化委員会の機能不全を感じざるを得ない。
近年,論組〈プログラミング〉言語 C++ の大きな拡張が相次ぎ,その界隈は話題に事欠かない。私は C++98(およびほぼ同等のC++03)を「古典 C++」と呼び,C++11 以降を「新 C++」と呼んでいるのだが,この新 C++ の評判は概ね良いようで,あまり批判的な意見は聞かない。批判的な人はすでに C++ から離れているのかもしれない。
私自身の新 C++ に対する印象は一貫している。良くも悪くも「言語オタクの机上の空論」だ。良い意味では緻密に作り込まれているのだが,悪い意味では「センスがない」と感じる。コミュニティもますますタコツボ的になってきているのか,あまり見解に多様性が無いとも感じる。もしかすると,C++ が好きで,C++ にのめり込んでいる人だけが残っているのではないかと思う。
古典 C++ と新 C++ には,実績と評価という点で大きな差がある。古典 C++ の採用実績と定評が,同じように新 C++ に引き継がれるか,というとそうではないだろう。言語の選択肢が昔に比べてずっと多様になっている中で,新 C++ が選ばれ,実践を通じて評価が定着するまでにあと10年はかかる。私は,そこまで運命を共にする価値を新 C++ には見出せない。新 C++ の言語仕様やコードを眺めていて,どうしてもそれでまともな 想品開発が出来るとは思えないのだ。少なくとも私には無理だ。
具体的にどこがどう駄目なのかは,私が開発している Cμ がいずれ明らかにしていくだろう。
もちろん,新 C++ にも美点は多いし,これまで C++ を使ってきて,これからも C++ を使わざるをえない人達にとって魅力的であることは否定できない。ただ,最近の C++ コミュニティを見ていると,もう少し危機感を持った方がいいのではないかと心配になる。C++ そのものは,広く使われている言語の中で一番信頼しているだけに,あまりおかしな方向に行ってほしくないのだ。