C++とは

提供:ウィキバーシティ

C++とは[編集]

C++とは、C言語に恐るべき量の新機能を追加してできた、プログラミング言語です。C++は、とても高速・多機能・柔軟な反面、習得には困難を極めます。余りに言語仕様が複雑なため、ここではその一部しか解説できません。どれだけ難しいと言うと、C++の作者(ビャーネ・ストロヴストロップ)でさえ全貌を把握できないほどです。さらに、この言語正に文字通り「何でもあり」なのです。

C++の用途[編集]

元々、C++は大規模ソフトウェアのために開発されたこともあり、主に

  • OS(オペレーティングシステム)
  • 人工知能
  • 組込みシステム
  • 大規模業務システム
  • デバイスドライバ
  • IoTシステム
  • ゲームエンジン

などが守備範囲です。

C++の分類[編集]

これは、一概には言えないのですが、C++は

  • 手続き型プログラミング
  • オブジェクト指向プログラミング
  • ジェネリックプログラミング
  • テンプレートメタプログラミング
  • 並列型プログラミング
  • 関数型プログラミング

の特徴を持つ、マルチパラダイムプログラミング言語です。

C++の特徴[編集]

まず、メリットですが、

  • 実行速度が速い
  • ハードウェアの深いところまで触れる
  • 機能がとても多い
  • プラットフォームを選ばない(言語仕様に環境依存の機能が少ない)
  • どんなプログラムでもほぼ作れる
  • C言語と互換性がある

などがあります。後述しますが、元々OSを作るために開発されたC言語から派生しており、低水準から高水準まで広くサポートしているC言語の機能を大幅に強化し、(完全ではありませんが)(上位)互換性を保っています。ちなみに、低水準や高水準と言うのは、機械語に近い(人間に理解しにくい)か、遠いか(人間に理解しやすい)かで分かれます。例えば、

amd64のアセンブラ
    global foo
foo:
    mov rax, rdi
    mov rdx, rsi
    add rax, rdx
    ret
C++
int foo(int x, int y) {
    return x + y;
}

だったら間違いなく下のほうがわかりやすいと思います。これが低水準と高水準の違いです。

C++のバージョン[編集]

歴史的には、前述のストロヴストロップ氏が1979年にC++の前身、C with classes の開発、つまり45年前までさかのぼる。