コンテンツにスキップ

2. C++ について

2.1 特徴

  • コンピュータの性能を最大限に引き出すソフトウェアの開発が得意なプログラミング言語。
  • 世界中のパソコンやスマートフォン、ゲーム機や家電、企業や工場、大学、研究所で動くソフトウェアの開発に使われている。
  • C++ は比較的難易度の高い言語であるが、利用者が多いことから、ドキュメントや参考資料を見つけやすく、学習しやすい。

2.2 歴史

  • デンマーク生まれのコンピューター科学者 Bjarne Stroustrup(ビャーネ・ストラウストラップ)博士によって 1980 年代に最初のバージョンが発表。
  • 当時使われていたプログラミング言語「C(シー)」を改良した新しい言語であるため「C++」という名前が付けられた。
  • その後多くの専門家によって進化や改良が重ねられ、現在では世界で 450 万人以上が C++ を使ってソフトウェアを開発。
  • 近年は、3 年ごとに新機能を追加するバージョンアップが行われている。バージョンを区別するために、発表年の下 2 けたをとって「C++17」のように呼ぶことがある。
  • 新しいバージョンほど、複雑なプログラムをわかりやすいコードで記述できる。
  • とくに C++11 で重要なアップデートが行われて C++ の書き方が大きく変わった。C++11 以降を、「現代的な C++」を意味する「モダン C++」と呼んで区別することがある。
C++ のバージョン 発表年
C++98 1998 年
C++03 2003 年
C++11 2011 年 (これ以降が「モダン C++」)
C++14 2014 年
C++17 2017 年
C++20 2020 年
C++23 2023 年

出版年が古い入門書や参考資料は、モダン C++ で書かれていないことがあるため注意が必要。しかし、古いバージョンの書き方でも、最新のバージョンとほぼ 100% の互換性を保っているため、まったく動かなくなる心配はない。

2.3 用途

C++ が使われている有名なソフトウェアやシステムには、次のような例がある。

ソフトウェア・システム 説明
Windows オペレーティングシステム
Google Chrome Web ブラウザ
Photoshop 画像編集ソフト
Arduino マイクロコンピュータの開発環境
Microsoft Office 文書作成・表計算ソフト
Unreal Engine ゲームエンジン
ゲーム Nintendo Switch や PS4 / PS5, Xbox で動くゲーム
大規模 Web サービスのバックエンド Google や YouTube, Facebook, Amazon などのサーバーやデータベース
自動運転システム
ロボット制御システム
金融取引システム
プログラミング言語のコンパイラ C++, Swift など
高性能計算アプリケーション 科学計算、シミュレーション
電子系設計作業自動化(EDA)ツール

これ以外にも、AtCoder や情報オリンピック、ICPC など競技プログラミングの分野においても人気がある。

2.4 C++ の特徴

  • C++ は、Python(パイソン)や JavaScript(ジャバスクリプト)のように、英数字や記号をキーボードでタイピングしてプログラムするテキストプログラミング言語。
  • C++ で作られたプログラムは最小限のコストで高速に計算処理を実行でき、CPU やメモリの仕事を細かく制御できるため、実行スピードが重要なソフトウェアや、複雑な処理を行うソフトウェア、家電に組み込まれる小さなコンピュータなどの開発に使われることが多い。
  • ほかのプログラミング言語と比較して習熟するのが難しい言語だが、基本的な機能は、適切な入門書を選択すれば簡単に使えるようになる。

C++ のコード例 1

画面に「Hello, world!」と表示する C++ コード
#include <iostream>

int main()
{
	std::cout << "Hello, world!\n";
}

C++ のコード例 2

キーボードで半角空白区切りで 2 つの整数を入力すると、その 2 つの数の合計を表示する C++ コード
#include <iostream>

int main()
{
	int a, b;

	std::cin >> a >> b;

	std::cout << (a + b) << '\n';
}

C++ のコード例 3

  • C++ では、画像処理や音声処理、ゲームや機械学習など、特定の機能を開発するための拡張機能集として、さまざまな「ライブラリ」が公開されている。
  • それらのライブラリを使うことで、高度なアプリケーションを C++ で便利に開発できるようになる。

「Siv3D」というライブラリを使って、画面に図形や画像を表示する C++ コード(C++ 開発環境とは別に、パソコンにライブラリをインストールする必要がある)
#include <Siv3D.hpp>

void Main()
{
	Scene::SetBackground(ColorF{ 0.8, 0.9, 1.0 });
	const Texture food{ U"🍿"_emoji };
	const Texture bird{ U"🐥"_emoji };
	while (System::Update())
	{
		Circle{ Scene::Center(), 100 }.draw();
		food.drawAt(Scene::Center());
		bird.drawAt(Cursor::Pos());
	}
}

2.5 入門書

  • C++ の入門書は次の 3 冊がおすすめである。

『冒険で学ぶ はじめてのプログラミング』(本講義の教科書)

3 日間コースの中高生向け C++ 教室で使われている教科書。モダン C++ をベースに入門レベルの内容(標準入出力、変数、if-else, for, 乱数、std::vector など)を扱っている。無理のないペースと物語形式の題材で、挫折せずにプログラミングに慣れることができるのが特長。C++ は厚い本が多いなか、約 180 ページと手軽なので、完全読破をして自信をつけて次のステップに進むのに適した最初の一冊。C++17 に対応。

『やさしい C++ 第 5 版』

C++ の入門~中級レベルの内容のうち、基本的な部分(『冒険で学ぶ はじめてのプログラミング』に加え、関数、ポインタ、クラス、ファイルなど)を取り上げて、豊富な図を交えて説明。学習する順番も適切にデザインされていて親切。約 550 ページと分量は多いが、情報系の専門 / 高専 / 大学生が C++ を使えるよう、腰を据えて独学するのに最適な一冊。ただし、C++11 以降の「範囲 for」や新しい標準ライブラリなど、モダン C++ の機能への言及が少ない点には注意が必要。

『独習 C++ 新版』

独学のための十分なサンプルと説明が掲載されている入門書で、C++11 ~ C++17 の機能も多く登場。『やさしい C++ 第 5 版』では扱っていないラムダ式や右辺値参照、また簡単な紹介にとどまっていたテンプレートや例外、データ構造などをしっかり解説。序盤からやや高度なトピックも登場するため、プログラミング未経験からこの本を読み始めるのは少し大変。

2.6 C++ が必要とされる分野

C++ は次のような分野で今後も必要とされると考えられている。

  • パソコンやゲーム機向けの大規模ゲーム開発
  • ゲーム開発を支援するツール開発
  • コンピュータグラフィックス用のツール開発
  • 機械学習用ツール開発
  • 自動運転システム
  • OS 開発
  • IoT デバイス
  • ロボット開発
  • 科学研究
  • 音楽系ソフトウェア
  • 金融ソフトウェア
  • 医療用ソフトウェア
  • 通信用ソフトウェア
  • 自動車システム
  • 航空機システム
  • CAD
  • プログラミング言語のコンパイラ