C++は、1970年代後半に誕生し、40年以上にわたって進化してきたプログラミング言語です。
システムソフトウェア、ゲームエンジン、高性能計算、金融システムなど、パフォーマンスが重要な分野で現在でも広く利用されています。
この言語は単なるC言語の拡張ではなく、大規模ソフトウェア開発の課題を解決するために設計された言語として生まれました。
C++誕生の背景(1970年代)
C++が誕生した背景には、当時のソフトウェア開発の問題があります。
1970年代、システム開発ではC programming languageが広く使われていました。
C言語は
- 高速
- ハードウェア制御が可能
- UnixなどのOS開発に適している
という利点を持っていました。
しかし、ソフトウェアが大規模になるにつれて次の問題が出てきました。
- コードの再利用が難しい
- プログラム構造が複雑になる
- 大規模開発の管理が困難
この問題を解決するために注目されたのがオブジェクト指向プログラミングです。
当時の代表的な言語として
- Simula
- Smalltalk
がありました。
特にSimulaは「クラス」や「オブジェクト」といった概念を持つ、最初期のオブジェクト指向言語でした。
しかし、これらの言語は
- 実行速度
- システム開発への適応
の面で当時のUnix環境には必ずしも適していませんでした。
そこでC言語の性能 + オブジェクト指向を組み合わせた言語が求められるようになりました。
C++の誕生(1979年)
C++を開発したのはBjarne Stroustrupです。
彼は当時Bell Labsで研究していました。
Stroustrupは、Simulaの抽象化能力を評価していましたが、Unix環境で使える高速な言語を必要としていました。
その結果、1979年にC with Classesという言語を開発しました。
この言語は、C言語に次の機能を追加したものでした。
- クラス
- データ抽象化
- メンバ関数
これがC++の直接の祖先です。
C++という名前の誕生(1983年)
1983年頃、この言語はC++と呼ばれるようになります。
名前の由来はC言語のインクリメント演算子です。
意味としては「Cを一段階進化させた言語」というニュアンスがあります。
この時期には次の機能が追加されました。
- 関数オーバーロード
- 仮想関数
- 参照
- 演算子オーバーロード
また、この頃にC++コードをCに変換する処理系(Cfront)が開発され、他の研究者にも利用されるようになりました。
C++の普及(1985年)
1985年はC++にとって重要な年です。
この年に
- 最初の商業版C++が登場
- 『The C++ Programming Language』が出版
しました。
この書籍はC++の設計思想を解説したもので、世界中の開発者に大きな影響を与えました。
テンプレートとSTLの登場(1990年代)
1990年代はC++の設計思想が大きく発展した時期です。
この時代に登場した重要な概念がジェネリックプログラミングです。
これを支える機能がテンプレートでした。
さらに、1990年代前半にAlexander StepanovらによってStandard Template Library(STL)が提案されました。
STLは
- コンテナ
- アルゴリズム
- イテレータ
という設計を持つライブラリで、C++の標準ライブラリの中心となりました。
C++98(最初の国際標準)
1998年、C++は最初のISO標準として正式に規格化されました。
この規格は一般にC++98と呼ばれます。
この標準化により
- STL
- 例外処理
- 名前空間
- 型システム
などが整理され、C++は世界的に安定した言語として普及しました。
C++03(2003年)
2003年にC++03が制定されました。
しかし、この改訂は
- バグ修正
- 規格の明確化
が中心であり、大きな新機能は追加されていません。
C++11(大きな転換点)
2011年に登場したC++11は、C++の歴史の中で最も重要な更新の1つです。
この規格では
- 型推論
- ラムダ式
- スマートポインタ
- ムーブセマンティクス
- マルチスレッドライブラリ
など、多数の機能が追加されました。
この更新によって、C++は「モダンC++」と呼ばれる新しいスタイルへと進化しました。
C++14・C++17
C++11以降は、比較的短い周期で改訂が行われています。
C++14は小規模な改良でしたが、C++17では次のような機能が追加されました。
- structured bindings
- filesystemライブラリ
- optional
- variant
これにより、標準ライブラリの実用性が大きく向上しました。
C++20(大規模アップデート)
2020年に登場したC++20はC++11に次ぐ大きな改訂とされています。
この規格では
- Concepts
- Ranges
- Coroutines
- Modules
など、言語設計に関わる重要な機能が導入されました。
C++23(最新の規格)
現在の最新系統はC++23です。
技術的な仕様は2023年に完成し、ISO規格としては2024年版として公開されています。
この改訂では
- rangesの拡張
- std::expected
- print機能
- ライブラリの改善
などが追加されました。
まとめ
C++の歴史は、次のように整理できます。
| 年代 | 主な出来事 |
|---|---|
| 1979 | C with Classes 誕生 |
| 1983 | C++という名前 |
| 1985 | 商業版C++と代表書籍 |
| 1990年代 | テンプレートとSTL |
| 1998 | C++98(最初のISO標準) |
| 2003 | C++03 |
| 2011 | C++11(大きな転換) |
| 2020 | C++20 |
| 2023 | C++23 |
C++は「C言語の効率」と「高度な抽象化」を両立する言語として設計され、現在でも進化を続けています。
以上、C++の歴史についてでした。
最後までお読みいただき、ありがとうございました。
