2005年04月25日
川俣晶の縁側ソフトウェア技術雑記 total 12436 count

C++の重要性は高まっているか? JavaやC#に見切りを付けて戻る価値があるか?

Written By: 川俣 晶連絡先

 こんにちは。出戻り現役C++プログラマの川俣です。

 現在、C++の重要性は間違いなく高まっています。

 JavaやC#に見切りを付けて戻る価値がある存在であると思います。

 という話が今ひとつ理解されていないらしいことが、以下の記事へのリアクションで分かりました。

なぜJavaでは駄目なのか §

 結局のところ、Javaというのは、極めて限定した領域でしか実用性を発揮できず、狭い実績しか残せていないわけです。裏を返せば、Javaには現場レベルで問題点が多数あります。これに見切りを付けるのは、極めて健全かつ現実的です。

なぜC#では駄目なのか §

 C#は、Javaの持つ問題のうちの多くに対策が打たれており、割と出来の良い言語だと思います。

 しかし、2つの問題があります。

 1つは、今ひとつ普及せず、マイナー言語に留まっていることです。これから全力で取り組むには、リスクがありすぎます。

 もう1つは、C/C++とソースコード互換ではないことです。つまり既存資産の活用ができません。(これはJavaにも共通する問題です)

JavaとC#に見切りを付けるとして、どれを選択すべきか §

 現状で極めて私的な感想から言えば、JavaとC#の代替プログラム言語になり得る第1候補はVisual Basicです。

 Visual Basicは依然として大勢力であり、将来にわたって手厚いサポートが期待できます。

 しかし、Visual Basicを採用するには、様々なハードルがあります。主にWindowsでしか使用できないであるとか、C/C++/Java/C#といったC系言語に慣れたプログラマには違和感が大きすぎると言った問題です。

 そこで、現在メジャーなプログラム言語からJava, C#, Visual Basicを取り除くと、有力な候補はC/C++ぐらいしか残りません。

そしてC++は生きている §

 C++/CLIといった新しい言語拡張の提案が行われるなど、C++周辺の動きも活発です。

 実は、ガベージコレクションするメモリ管理機能を持ったC++/CLIを使えば、自動化されたメモリ管理というJava/C#の特徴を取り込みつつ、同時にレガシーなメモリ管理を行う既存資産を混用できます。

机上の空論ではない理由 §

 C++復権が机上の空論ではないと私自身が実感できる理由は、現実にそれらが私の目の前に仕事として出現しつつあるためです。

 たとえば、かつて16bit Windows時代に開発した画像スクリーンセーバー、画廊亭の復活作業を行っていますが、これはまさにC++で書かれたソースコードと格闘することを意味します。これらのソースコードを全てより新しい別のプログラム言語で書き直すというのは、あり得ない選択です。これはC++で作業しなければならないのです。2005年ならではの新しい機能を追加する要求もありますが、これもC++によって記述して追加することになります。

 また、近い過去に雑誌記事原稿でC++を扱う記事の依頼が来た例もあります。

 その一方で、C#の話題が出ることはもはや滅多になく、ましてJava対C#の熱い激論など、実在したことが疑わしいほどに見かけることがありません。