courseraで 『C++ for C Programer』という講義を受講しています。そこで、今日は、C++がC言語よりも優れている点、またはその逆を調べてみました。

講義では、マーガリンはバターから作られるから、バターよりベターというオヤジギャグでC++のCに対する優位性が説明されるが、ほかにも以下の様な理由があげられる。

  • More Type Safe
  • More Libraries
  • Less reliance on preprocessor
  • OO vs imperative

そこで、ネット上の意見も調べてまとめてみた。

※自分の意見ではなくて、あくまでネット上の情報をまとめたもの。

C++がCよりも優れている点

  • C++はC言語を内包している、互換性がある。
  • オブジェクト指向を言語がサポートしている。
  • 豊富なライブラリ群

CがC++よりも優れている点

  • 実行速度、パフォーマンスが高い。
  • メモリ使用量の小ささ。
  • C++よりも文法がシンプル。

まとめ

ハードのレジスタをいじるような組込み系はCが優位、アプリケーションならばC++が優位と読めた。

C言語でもオブジェクト指向ライクな実装はできるけれども、それをしないのは、(すくなくとも自分の職場では)、過去の資産が手続きで書かれているためと、OOに対する知識のなさからだと思う。

あとは、OOライクでないと、テストコードがとても書きにくい。TDDが好きなので、C言語よりもC++に魅力を感じる。いまはC言語を仕事でつかっているけれども、早くC++を身につけてC++の仕事に移動したい。