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年前までさかのぼる。