江添亮の C++ 入門
エゾエリョウノシープラスプラスニュウモン
- 著者:
- 江添 亮(エゾエ リョウ)
- 出版社:
- ドワンゴ
- 出版日:
- 2019年09月20日頃
- ISBN:
- 9784048930710
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
効率性と柔軟性を兼ね備えたプログラミング言語として進化を続ける C++。本書は、次の規格として標準化が進められている C++20 を意識しながら、現行の規格に準拠した C++ プログラムの書き方を徹底的に解説していく。プログラミング経験者を主要な対象としているが、解説を進めるに当たっては、その時点で学習した知識だけを利用して新しい知識を学ぶ方法 (知識のブートストラップ) が意識されており、プログラミング初心者であっても新しい機能、知識の理解を無理なく行えるようになっている。C++ の実行、デバッグ、基本的な文法、アルゴリズム、オブジェクト指向、テンプレート、メモリ管理、乱数など、C++ による本格的なプログラム開発に必須の知識を網羅した本格的な入門書である。
第 1 章 C++ の概要
第 2 章 C++ の実行
第 3 章 C++ ヒッチハイクガイド
第 4 章 デバッグ: コンパイルエラーメッセージの読み方
第 5 章 条件分岐の果てのレストラン
第 6 章 デバッグ: コンパイル警告メッセージ
第 7 章 最近体重が気になるあなたのための標準入力
第 8 章 ループ
第 9 章 メモリーを無限に確保する
第 10 章 デバッグ: printf デバッグ
第 11 章 整数
第 12 章 浮動小数点数
第 13 章 名前
第 14 章 イテレーターの基礎
第 15 章 lvalue リファレンスと const
第 16 章 アルゴリズム
第 17 章 ラムダ式
第 18 章 クラスの基本
第 19 章 より自然に振る舞うクラス
第 20 章 std::array
第 21 章 プログラマーの三大美徳
第 22 章 配列
第 23 章 テンプレート
第 24 章 array をさらに実装
第 25 章 array のイテレーター
第 26 章 傲慢なエラー処理: 例外
第 27 章 ポインター
第 28 章 イテレーター詳細
第 29 章 動的メモリー確保
第 30 章 vector の実装: 基礎
第 31 章 vector の実装: メモリー確保
第 32 章 コピー
第 33 章 ムーブ
第 34 章 rvalue リファレンス
第 35 章 ムーブの実装
第 36 章 スマートポインター
第 37 章 自作の数値クラスで演算をムーブに対応する方法
第 38 章 文字列
第 39 章 乱数
第 40 章 C プリプロセッサー
第 41 章 分割コンパイル
第 42 章 デバッガー
技書の森解説
C++ のプログラムの書き方を、言語の規格に沿って最初から積み上げていく入門書です。『江添亮の C++ 入門』 (江添 亮 著、ドワンゴ、2019 年 9 月 20 日発売) について、版元の紹介文は、次の規格として標準化が進められていた C++20 を意識しながら、刊行時の規格に準拠した C++ プログラムの書き方を解説する本だと説明しています。刊行時の著者プロフィールには、2010 年に C++ 標準化委員会のエキスパートメンバー、2014 年に株式会社ドワンゴに入社、2015 年に同委員会の委員という経歴が記されています。
全 42 章の構成、C++ の概要からデバッガーまで
目次は第 1 章「C++ の概要」から第 42 章「デバッガー」までの 42 章です。第 2 章「C++ の実行」で書いたプログラムを動かすところから入り、第 4 章「デバッグ: コンパイルエラーメッセージの読み方」、第 6 章「デバッグ: コンパイル警告メッセージ」、第 10 章「デバッグ: printf デバッグ」と、文法を学ぶ章の合間にデバッグの章が挟まれています。続いて整数、浮動小数点数、イテレーター、lvalue リファレンスと const、アルゴリズム、ラムダ式、クラスの章が並びます。第 24 章「array をさらに実装」と第 25 章「array のイテレーター」、第 30 章「vector の実装: 基礎」と第 31 章「vector の実装: メモリー確保」のように、標準ライブラリのコンテナを実装していく章があるのも目次の特徴です。その後はコピー、ムーブ、rvalue リファレンス、スマートポインター、文字列、乱数、C プリプロセッサー、分割コンパイルの章を経て、第 42 章「デバッガー」で閉じます。章題には第 3 章「C++ ヒッチハイクガイド」や第 5 章「条件分岐の果てのレストラン」のような題も混じります。
知識のブートストラップで積み上げるメモリーとムーブ
版元の紹介文によると、本書はその時点で学習した知識だけを利用して新しい知識を学ぶ方法を「知識のブートストラップ」と呼び、解説の順序に取り入れています。C++ は、ソースコードを コンパイラー で実行できる形式に変換してから動かす言語で、機能どうしが互いに深く依存しています。たとえば値を別の変数へ渡すとき、中身を複製するコピーと、持っている資源を移し替えるムーブのどちらが起きるかは、rvalue リファレンスの理解なしには説明できません。動的に確保したメモリーを誰がいつ解放するのかも書き手が決める必要があり、スマートポインターはその責任をオブジェクトの寿命に結び付けて自動化する仕組みです。要素を追加すると領域を確保し直して中身を移す vector を自分で実装してみると、コピーとムーブの違いが実行の効率にどう響くかを具体的に確かめられます。コンパイラーが出すエラーメッセージや警告はテンプレートが絡むと長くなりがちで、本書の目次でもその読み方が独立した章になっています。
プログラミング経験者を主な対象に、初心者にも配慮した入門書
版元の紹介文は、プログラミング経験者を主要な対象としながら、知識のブートストラップによってプログラミング初心者でも新しい機能や知識を無理なく理解できるようにしていると説明しています。扱う範囲は、紹介文の言葉では C++ の実行、デバッグ、基本的な文法、アルゴリズム、オブジェクト指向、テンプレート、メモリ管理、乱数などです。一方で、本書は刊行時の規格に準拠した書き方を解説する本で、C++20 は次の規格として意識される位置づけにとどまります。C++20 以降の規格の機能を中心に学びたい場合は、それを主題にした本を併せて選ぶ必要があります。
これから C++ を学ぶ人や、ほかの言語の経験はあっても C++ のコピーとムーブ、ポインターとメモリー管理を基礎から確かめたい人にとって、本書は実行とデバッグの手順から標準ライブラリのコンテナの実装までを、規格に沿った説明で 1 冊にまとめた入門書です。手元で動かしながら第 1 章から順に進めると、言語の仕組みを部品の積み上げとして理解する助けになります。
言及した記事 (5 件)
この本は技書デッキのカードです (攻撃 8 / 備え 2) 図鑑でこの本を見る
この本に興味がある方におすすめ
関連する本
関連記事
エラーメッセージを読めるエンジニアは何が違うのか
エラーが出たときに冷静に原因を特定できる人と、パニックになる人。その差は経験だけでなく、読んできた本の種類にあります。デバッグ力を支える読書の傾向を分析します。
アルゴリズム本ガイド - 競プロだけじゃない、実務に活きる選び方
アルゴリズム本の 3 タイプと、実務でアルゴリズムの知識が活きる場面、数学が苦手な人向けの学習ルートを紹介します。
技術書と季節の関係 - 新刊ラッシュの時期と読書が捗る季節
技術書の新刊が増える時期、セールが多い季節、読書が捗る環境条件など、技術書と季節にまつわる雑学を紹介します。