ソフトウェア
中級

C++ (1985年)(シープラスプラス)

C++は1985年Bell Labs ビャーネ・ストロヴストルップ (Bjarne Stroustrup) が開発したC 言語にOOP 機能追加した汎用プログラミング言語で「C with Classes」(1979年起源) ・Class/Template/STL 採用しUnix/Windows/ゲームエンジン (Unreal Engine)/Chrome/MySQL/Android NDK等で大量採用される現代最重要システム言語。

0 回閲覧
0 いいね
2026/5/13 更新
関連タグ
cpp
c-plus-plus
1985
bjarne-stroustrup
bell-labs
oop
template
stl
game-engine
systems-programming
programming-history

C++ (1985年)

概要

C++は1985年10月Bell Labs ビャーネ・ストロヴストルップ (Bjarne Stroustrup・デンマーク出身・後Texas A&M 大学) が開発したC 言語にOOP 機能追加した汎用プログラミング言語で「C with Classes」(1979年起源) ・Class/Inheritance・Template (C++ 1990年代Generic Programming)・STL (Standard Template Library 1994年Alexander Stepanov)・Exception Handling・Multiple Inheritance (多重継承) ・後継Lambda (C++11 2011年) ・auto 型推論 (C++11) ・smart pointers (unique_ptr/shared_ptr) 採用しUnix/Windows/ゲームエンジン (Unreal Engine・Unity 一部) /Chrome/MySQL/Android NDK/Microsoft Office/Adobe Photoshop/Bloomberg 金融ターミナル等で大量採用される現代最重要システム言語。ISO 標準化: C++98/03/11/14/17/20/23 と継続改良。

主な特徴・仕組み

  • 発表: 1985年10月Bell Labs (旧AT&T 研究所) ・Bjarne Stroustrup
  • 元代名: 「C with Classes」(1979年起源) →「C++」(1983年・「increment」演算子から)
  • 言語パラダイム: マルチパラダイム (OOP+手続き型+ジェネリック+関数型・C++11 以降)
  • C 言語互換: 大半のC コードはC++ で動作 (一部例外)
  • 静的型付け: コンパイル時型チェック
  • コンパイル言語: ネイティブ機械語へコンパイル (GCC/Clang/MSVC)
  • 手動メモリ管理: malloc/free→new/delete・後smart pointers (C++11)
  • STL (1994年): vector/list/map/set/algorithm 等の汎用コンテナ・Alexander Stepanov (Compaq Cambridge Research Lab)
  • 後継: Carbon (Google 2022年・C++ 後継言語実験)

C++ ISO 標準化の歴史

標準年主な追加機能
C++981998初の ISO 標準・STL 統合
C++032003バグ修正版
C++112011Lambda・auto・smart pointers・std::move・std::thread
C++142014Lambda 改良・generic Lambda
C++172017std::optional・std::variant・std::filesystem・if constexpr
C++202020Concepts・Modules・Coroutines・Ranges
C++232023std::expected・improved Ranges
C++26 (策定中)2026予定リフレクション・改良Modules

C++11 革命 (2011年)

2003年C++03 から8年ぶりのメジャー更新:

  • Lambda 関数: 無名関数・関数型プログラミング機能
  • auto 型推論: 型自動推論 (Java var/Go :=/Rust let と類似)
  • smart pointers: unique_ptr/shared_ptr・手動メモリ管理から脱却
  • std::move: rvalue reference・パフォーマンス向上
  • std::thread: 標準スレッドライブラリ (Pthreads/Win32 Threads から脱却)
  • range-based for: for (auto x : container) 風シンプル構文
  • 意義: 「モダンC++」起点・以降10年で大幅進化

STL (Standard Template Library)

1994年C++ の核心機能:

  • 開発者: Alexander Stepanov (Compaq Cambridge Research Lab) ・David Musser
  • 構成: Containers (vector/list/map/set/queue/stack)・Algorithms (sort/find/transform)・Iterators (begin/end)・Functors (std::function 等)
  • 意義: ジェネリックプログラミング (Template 利用) の標準化・C++ ライブラリの基盤
  • 後継: Boost (1998年-) ・C++17 std::filesystem・C++20 Ranges

採用システム (1985-2024年)

  • オペレーティングシステム: Windows OS (Microsoft) ・Mac OS X/macOS (一部Apple・Cocoa はObjective-C/Swift) ・Linux カーネル (一部・大半C)
  • ブラウザ: Google Chrome (V8 JavaScript Engine)・Mozilla Firefox (Gecko)・Apple Safari (WebKit)・Microsoft Edge (Chromium ベース)
  • データベース: MySQL・MariaDB・MongoDB・SQLite・PostgreSQL (一部)
  • ゲームエンジン: Unreal Engine (Epic Games)・Unity (一部 C# +C++)・id Tech (Doom)・CryEngine
  • 金融: Bloomberg ターミナル・Tradeweb・Citadel 等の高頻度取引 (HFT)
  • 科学技術: TensorFlow (一部 C++・Python フロントエンド) ・PyTorch (LibTorch C++)・ROOT (CERN 物理学)
  • メディア: Adobe Photoshop/Premiere・Autodesk Maya/3ds Max
  • モバイル: Android NDK (Native Development Kit・C++ で高速ライブラリ)

関連技術との違い

項目C (1972)C++ (1985)Java (1995)Rust (2010)
パラダイム命令型**マルチ (OOP+手続き+ジェネリック+関数型) **OOPマルチ (所有権ベース)
型付け静的静的静的静的 (Strong)
メモリ管理手動手動+smart pointers (C++11)GC所有権 (Ownership)
OOPなし**あり (世界標準) **ありあり (Trait)
Template/Genericsなし**あり (Template) **あり (Generics・型消去)あり (モノモーフィゼーション)
用途システム/組込みシステム/ゲーム/金融/Office企業システム/Androidシステム/Web/組込み

よくある質問 (FAQ)

Q1: C++ と Rust どちらが優れたか? A: 用途次第。C++ は40年の歴史でエコシステム巨大 (Boost・STL・Eigen・OpenCV 等)・既存コード資産膨大。Rust は新しい (2010年-) でメモリ安全性が言語レベル保証 (所有権) ・並行処理安全。Linux カーネル (2022年Linux 6.1 でRust 統合) ・Microsoft Windows (一部Rust) で並走採用・Rust が「現代版C++」評価。

Q2: Carbon (Google 2022年) と C++ の関係は? A: Carbon は Google が2022年7月発表したC++ 後継言語実験・「C++ との完全相互運用性」を維持しつつモダン構文・メモリ安全性向上を狙う。2024年現在実験段階・本格採用は2027-2030年予測。Rust と並ぶ「C++ の現代化候補」。

Q3: なぜC++ がゲームエンジンの標準か? A: (1) ネイティブ機械語コンパイルで最高性能・(2) 手動メモリ管理でGC ストール (Java/C#) 回避・リアルタイム性確保・(3) ハードウェア直接操作可能 (DirectX/Vulkan)・(4) Unreal Engine/Unity 等の30年エコシステム・(5) コンソール (PS5/Xbox Series X) SDK が C++ ベース・全要因で「ゲーミング = C++」確立。

まとめ

  • 1985年Bell Labs ビャーネ・ストロヴストルップ開発
  • C 言語にOOP 機能追加
  • Class/Template/STL
  • Unreal Engine/Chrome/MySQL 等で大量採用
  • ISO 標準C++98/11/17/20/23 と継続改良
この記事について
カテゴリーソフトウェア
難易度中級
作成日2026/5/13