C++に再び活躍の場を!

C++の設計と進化」が、おもしろいのでちょびちょび読んでいる。で、そこらへんの関係で、最近、web上で「C++ってそんなに悪くないんじゃないの?」的な意見を見かける機会が若干多くなったように感じる。
参考までに → C++はなぜ人気が無いのか
とは言っても、どの人の意見も大体、「でもやっぱC++は使わんなぁ…」的な感じで終わってると思う。で、流行に乗って(ちょっと時期遅いけど)、そこらへん関係で、「C++は悪くないけど、やっぱり使わないよなぁ…」っていう話から、「立派な先人の言うことも全て聞くべきではない」っていう話まで。


まず、C++で最も汚いとされているのが、「Cとの互換性」という部分だろうか。色々と意見はあるだろうけど、この部分は大体の人が賛成してくれるかと思う。で、ここらへんを無くして作りなおしたのが、JavaやらC#というわけだ。
えーと、その話はあんまり関係無いか。まず、C++が生まれて、広まった時に、もし、それが、C++ではなく、Javaだったらどうだろうか。C#だったらどうなっていただろうか。あんな汚い言語が普及することなく、完成された言語が普及して、今よりも幸せになっていただろうか。
そんなこと無いと思う。
C++オブジェクト指向言語だから受け入れられたんではなくて、「Cとの互換性」があって、かつ、「効率はCと同じ」であって、その上でオブジェクト指向言語だったからこそ、その時のCプログラマに軽い気持ちで受け入れられたんだろう。仕事でプログラムを書いている人達は動いているプログラムが動かなくなるのを何よりも嫌う。
C++の設計と進化」で、何度も、「今現在役に立つ言語でなくてはならない」という主張が出てくるんだけど、そういう視点から見ると、C++言語というのが、非常によくできた言語であるように見えてくる。


でー。そのC++が広まった当時の、「今現在」というのが、「今日」を含むのかどうか。というのは、考えてみる価値があると思う。僕の意見としては、「含む」ほうである。というか、むしろ、「今はコンピュータも速いし、それにテスト駆動なんたらのリファクタリなんとかで、きれいに書き直すのはあたりまえなんだから、その頃とは話が違う」などという意見は夢見がちだと言ってもいい。と、思う。
まず、一月に実家に帰ったときのことだが、いまだに、Celeron 366MHz のメモリ128MBのWindows98が現役で動いていた、という事実だ。サンプル数1個しかないけど、まさか、うちだけということもあるまい。そんなコンピュータではJavaのあの起動の遅さとメモリ使い過ぎ具合には耐えられないだろうし、.NET環境なんかインストールできるかどうかも怪しい。
こういう環境で動かしてる人達は、「まだ動くんだからいいんだ。」的考えかたをしているので、物理的に壊れない限りは買い換えることもないだろう。そういう人達の環境が一新されるまでには、あと十年くらいはある、と考えたほうがいいと思う。
「そのくらい買い換えを勧めたらいいじゃないか」、という意見は論外である。それは、プログラムも一応書ける営業の意見だ。技術者の意見ではない。自分のやりたいことのために、相手に環境を用意させるなんていうことをやる奴に技術者を名乗る資格は無い。
そして、もういっこ。「普通のプログラマは動いてるプログラムの書き換えを嫌う。」という点である。「テスト駆動な手法は十分に認知された」などと考えているのははっきり言って甘い。「普通のプログラマ」というのは、多分、そこらへんにいくらでもいる。


で、結論としては、C++は過渡期に使われる言語としては、最も優れた言語であると思うし、そして、今は、まだその過渡期であると思う。だから、えーと、C++はいつもボロクソに言われながらも、実際にはデスクトップアプリケーション用言語としては一番利用されている、というのには、それなりの理由があるのだろうから、そのことは忘れるべきではないよなぁ…、という超個人的感想。


で、次は、「C++はそんなに複雑か」という話から、「立派な先人の〜」という話になるんだけど、長くなってしまったので続く。