C++とJava

最近、Javaばっかりやっていて、C++を全然いじっていなかったが、かなりC++の実装の感覚が戻ってきた。
前日買った、VisualC++で開発しているが、結構、VisualC++は開発環境的にはまあまあ良くできてると実感した。

何気に、C++で開発するとバイナリファイルをいじることが多いので、バイナリエディタが重宝している。
C++をやりだすと、まず思い出すのが

  1. deleteなんて処理があったんだなあ
  2. そういえば、VisualC++でメモリリーク検出ライブラリがあったっけ
  3. そういえば、Virtual関数は普通じゃなくて定義しないとだめなんだなあ(Javaは、基本的に全部Virtual関数)
  4. スタック上に作られたオブジェクトは、スコープから抜けるときに破棄されてデストラクタも呼び出されるんだっけなあ。そういえば、わざとこの性質を使ってメモリリークやりソースのリークを出さないテクニックを、若いころアメリカのAppleで働いてた凄腕エンジニアの人に教わったっけ
  5. メソッドだけでなく、演算子もオーバーライドできるんだっけ
  6. New演算子のアロケーターの置き換えは、やっぱり便利だなあ


結構、ガーベージコレクションのおかげでプログラムはかなり簡単にかけるんだなあと、再び実感。
それと同時に、やっぱり、C++の方が早いような気がする。というか、ハードウェアの進歩が結構あるんだなあと実感。


そういえば、最近は、学校のプログラミングの授業はJavaがベースになっているんだなあと思いつつ、良く考えたら、C++からJavaに転向するのはらくだが、逆にC++からJavaに転向するのはかなり厳しいなあとおもった。
しかし、これでは、DBや検索エンジン、それに通信を扱う部分のコアな部分など、Cとかで書かないとやっぱり駄目だというところをかける人がすごく減っているような気がする。