GCC開発にC++を導入

 職業的プログラマではないものの、プログラミングとなればしばしばお世話になるのがGCCである。PC上のCコンパイラといえば、Borland C++とかLSI C試食版のようなものがあった。どちらかといえばDOS時代のイメージのものである。

GCC開発者ら,GCCの開発にC++を導入することを決定(SourceForge.JP)

 現在はC++コンパイラが、Cコンパイラの上位互換のようになって、CとC++はオプションの違いくらいの感じであまり差がなくなったような印象を受ける。自分はWindowsネイティブでGCC互換という点で、MinGWをもっぱら使うようになった。Visual C++などは、あまり本来のC++のイメージは感じられない。あくまでWindowsアプリのための言語という感じである。


 さてそのGCCそのものが、これまでCで記述されていたのが、C++を導入することになるという。確かに現在の純粋なC言語の位置づけは、組込み系プログラミングなどの限られた対象だけになっている。従来のCプログラムはそのまま動くから問題はないと思われるが、C++独自の部分はどういうところに取り入れられることになるのだろうか。


 自分はもっぱらアプリやアルゴリズム数値計算のためのC++プログラムしか書かないが、問題はライブラリであろう。プログラミングを勉強するためだけなら、Javaもそうであるように、目的以前にやれオプジェクト指向だクラスだなどとなるが、CやC++で蓄積されてきたものとして重要なものにライブラリがある。C++でさえ、既存のCライブラリをわざわざ呼び出して使うこともある。同じことをするC++のライブラリが整備されていなかったりする場合である。


 やったことはないが、Javaを利用するにしてもC++ルーチンを呼び出す必要があるときもある。これをJNI(Java Native Interface)という。C++でCライブラリを使い、さらにJavaAPIを通じて、そのC++ルーチンを呼び出すということになる。数値計算のようなパフォーマンスを要求されるような処理の場合、ありうる状況ではある。


 比較的新しい言語はどんどん出てきても、その言語の特徴に合わせた効率のよいライブラリも同じ速度で提供されるようになるわけではない。したがって上記のようなJavaC++→ Cライブラリのような後ろ向き参照も必要になる。スーパーコンピュータの世界で、いまだにFortranも使われ続けている理由と同様のことである(GCCにもFortranはある)。いずれにしても、どんな環境でも同じソースで動いてくれるGCCが生き続けることはありがたいことではある。これからはネイティブで64ビットに対応してくれるものとなるだろう。