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++の仕事に移動したい。