筆者はどこかの掲示板か何かで次のような「C」コードがビルドできない理由を尋ねている人を見かけたことがあります。
#include <stdio.h>
int main()
{
printf("Hello World!");
int i;
int j;
int k;
return 0;
}
このソースコードは、Visual C++ 2005 Express Editionでは「C++」コードとしては無事にビルドできますが、「C」コードとしてはできません。筆者はこのあたりの事情をはっきり理解しておく必要があると考え、Redmondフォーラムにこのスレッドを立ててみました。すると、MicrosoftのVC++チームメンバーからコメントが寄せられました。そのコメントは、次のようなことを述べています。
・CとC++の間の最大の相違は「オブジェクト指向プログラミング」にある
・C++はテンプレートをサポートしていることも相違の一つである
・Cを選択する人は極めて少ない
・このため、Microsoftにおいて、Cのサポート(この場合、C99仕様)優先度は低い
・CとC++の間には微妙な構文上の相違もある
このコメントはきわめて現実的な判断を示しています。しかし、わが国のインターネット空間から公開されている情報を調べてみると、"Cの愛好家"がかなり存在することが分かります。JavaやC#を選択するのもよいでしょう。しかし、CからC++、そして、C++からJava/C#への歴史と考え方の推移は理解しておくべきだと思います。