C++とは
C++(シープラスプラス)は、 “C言語の拡張版 ” として1983年に発表されたプログラミング言語です。汎用性が高く動作が高速なC言語の長所は残しつつ、オブジェクト指向プログラミングの概念が採り入れられています。
C言語は優れたプログラミング言語ですが、大規模開発の場面では効率が悪くなってしまう側面もありました。C++に採り入れられたオブジェクト指向プログラミングには、長期間かつ多人数の関わる大規模開発に向くメリットがあります。
C++が最初に公開されたのは1983年ですが、その後の歴史のなかで一部機能の廃止や新機能追加などの改訂が行われてきました。現在の標準規格は2017年に改訂されたC++17ですが、2020年には C++20 が公開される予定です。
C++の特徴
C++ には、以下の特徴があります。
- C言語にオブジェクト指向の概念が採り入れられた“C言語の拡張版 ”
- C言語と互換性があり、 C言語で作成されたソースコードを再利用できる
- コンピュータのオペレーティングシステム(OS)、デバイスドライバ 、コンパイラ、リンカなどの開発に幅広く利用されている
C++は、C言語にオブジェクト指向の概念が採り入れられた“C言語の拡張版 ”です。 C言語と互換性があり、 C言語で作成されたソースコードを再利用できます。ちなみに、オブジェクト指向型言語の代表的な存在であるJavaは、C言語と互換性がありません。
プログラミング言語には、コンピュータが直接理解できるマシン語、中間に位置するアセンブリ言語、人間にとって理解しやすい高水準言語がありますが、 C++ は、人間にとって理解しやすい高水準言語のひとつです。C++ を実際に動作させるためには、プログラムを記述した後にマシン語に変換するコンパイルという処理をしてやる必要があります。
C++に採り入れられたオブジェクト指向とは?
C++を一言で説明するなら、“C言語にオブジェクト指向の概念を採り入れて機能拡張したプログラミング言語 ” ということになります。 オブジェクト指向型言語のメリットは、保守性が高いということにつきます。
ところで、オブジェクト指向とは一体どのようなものでしょうか。
オブジェクト(object )という言葉は、モノとか物体という意味です。オブジェクト指向とは、 オブジェクトと呼ばれるまとまり単位でプログラムを構築していくプログラミング手法のことです。
例えば、自動車はハンドルを回せば進行方向が変わり、アクセルを踏めば加速して、ブレーキを踏めば減速します。自動車の運転をする場合、運転手はハンドルやアクセルやブレーキなどの操作方法を覚える必要はあっても、それらの内側の仕組みまで知る必要はありません。
オブジェクト指向プログラミングは、これと似ています。ひとつひとつのプログラムのまとまりを、自動車におけるハンドルやアクセルやブレーキ のように何らかの機能を果たすひとまとまりのモノ(オブジェクト)として扱います。
プログラムの世界には、ハンドルやアクセルペダルやブレーキペダルのような手や足で触れられる物体はありませんが、変数や関数が集まって何らかの機能を果たすひとまとまりがひとつのオブジェクトとなります。
オブジェクト指向プログラミングには、それぞれのオブジェクトの内部がどのような仕組みになっているのかを深く理解していなくても、その利用方法さえ知っていればプログラミングを進められる利点があります。 オブジェクト指向プログラミングを採り入れると、保守性が高いメリットが得られるのはこのためです。
オブジェクト指向を採り入れているプログラミング言語としては、C++、Java、Objective-C、Swift、Ruby、PHP、JavaScriptなどが挙げられます。
C++はこんな場面で使われている
C++は、コンピュータのオペレーティングシステム(OS) 、デバイスドライバ 、コンパイラ 、リンカなどの開発に幅広く利用されています。
C++を学ぶメリット
C++にはオブジェクト指向の概念が採り入れられています。オブジェクト指向の概念が採り入れられた言語には、誰かが書いたプログラムに他の人がプログラムを書き足していくような 多人数・長期間にわたる開発をしやすい特徴があります。
オブジェクト指向は、現在のプログラミング言語の主流となっているため、C++ を理解することで、 他のプログラミング言語を学習する際にも役に立つことが多いでしょう。 例えば、JavaやC#(シーシャープ) は C++ をベースに開発された言語ですから、 C++ を理解していれば、これらの言語にはとっつきやすいでしょう。
C++は、C言語と互換性があり、C++のソース中ではC言語で作成されたソースコードを再利用できます。C言語の経験者ならC++の習得は比較的容易ですし、C++を習得することは、そのままオブジェクト指向プログラミングの習得にもなるでしょう。