WisdomSoft - for your serial experiences.

C++とは?

プログラミング言語 C++ の特徴や、国際標準の歴史について解説します。

プログラミング言語 C++

C++ 言語は、1980 年代に登場した C 言語を拡張したプログラミング言語です。文法を C 言語から引き継いでいるため、C 言語で書かれたプログラムの多くは、そのまま C++ 言語としてコンパイルできます。そのため、C++ 言語のコンパイラは C 言語のコンパイラとしても利用できるものが一般的です。C++ 言語を学習するということは、C 言語を学習することにも繋がります。

C++ 言語で追加された機能は非常に多く、主にオブジェクト指向と呼ばれるプログラミング手法を取り入れていることが大きな特徴となっています。C++ 言語で追加された機能は、未経験者にとっては複雑に感じるものでしょう。しかし、複数人で開発する中規模以上のプログラミングでは欠かせない機能であり、C++ 言語を学習することで、抽象度が高く再利用性に長けたコードを書くことができるようになります。

国際標準

C++ 言語で書かれたプログラムはコンパイラによって機械語に翻訳されなけれな実行できません。そこで、様々なシステム向けにコンパイラが作られるわけですが、コンパイラを作る人が勝手に新しい機能(文法)を追加したり、一部の機能を改変したらどうなるでしょう。C++ 言語の方言が大量に生成され、ソースコードが固有のコンパイラに依存してしまい、他のシステム用のコンパイラではコンパイルできなくなってしまいます。

こうした問題が発生しないように、世界中で使われる実用度の高いプログラミング言語の多くは国際標準化機構 (International Organization for Standardization, ISO)で、明確に文法が定められています。標準化機関によって定められている文法のことを仕様と呼び、この仕様に基づいて開発されたプログラムを実装(または処理系)と呼びます。ISO 標準に従っていれば、実装に依存することなく同じコードを確実にコンパイルできます。

C++ 言語のような歴史のある言語の場合、ISO 標準にもいくつかのバージョンが存在します。最初の標準は 1998 年に制定された ISO/IEC 14882:1998 であり、本校執筆時点での最新のバージョンは 2011 年に制定された ISO/IEC 14882:2011 です。

図1 C++言語標準化の歴史
図1 C++言語標準化の歴史

図1は C 言語と C++ 言語の関係と標準化の歴史を簡単にまとめたものです。互いに互換性を意識しながら、しかし独立したプログラミング言語として進化しています。

標準化が行われる前の時代は、公式書籍が事実上の標準として参考にされてきました。C 言語では C 言語を開発した Brian Kernighan 氏と Dennis Ritchie 氏による共著「プログラミング言語 C」(The C Programming Language)が標準でした。これを二人の名前の頭文字から K&R とも呼びます。C++ 言語では C++ 言語を開発した Bjarne Stroustrup 氏による「プログラミング言語 C++」(The C++ Programming Language)が参考にされてきました。

現存する C++ コードの多くは ISO/IEC 14882:2003 を基本としています。最新の ISO/IEC 14882:2011 は長く C++ 0x という愛称で標準化作業が進められてきましたが、正式な制定は 2011 年まで遅れました。通称 C++ 11 と呼ばれる新しい仕様では、現代的なプログラミングに必要な機能が多く取り入れられています。