C++プログラミング(基礎編)改訂第四版: C++11/14対応 C++基礎課程シリーズ
価格: ¥0
本書はC++の入門書を使って勉強している方や、C++11/14を学びたいC++プログラマーのための副読本です。
背景と目的
情報技術の基礎を学ぶ高校生、高専生、専門学校生、大学生に対して基礎レベル(入門の後に来るレベル)の本の副読本を格安で提供することを目的としています。
基礎レベルのC++技術書は学生には値段が高すぎるため、安くて(100~500円で)ボリュームがある副読本を書きたいと思ったのが本書を執筆した理由です。
内容
- C++11/14の基礎(基本構文、変数、ループ、条件文、演算子、関数、ポインター、クラス、オーバーロード、UMLクラス図/OOPの基本、初期化、クラス・関数テンプレート、ラムダ式、スマートポインター等、内容を単調にしないために一部の例でデザインパターンもあわせて解説 ※難しいコード例は流して進むことを推奨)
- OSとハードウェア
- 範囲ループとイテレーター
- スコープとリンケージ
- キャスト
- ライブラリー、静的・動的ライブラリー(soファイル等)のリンク
- メモリーの割当(アラインメント、固定長割当)
- テンプレートメタプログラミング
- 3次元プログラミング(OpenGL4/GLM)
- GUIプログラミング(Qt5.8、説明対象はWindowsのみで、クロスプラットフォームの解説は無し)
- STLコンテナ
- STLアルゴリズム
- STL数値計算・乱数ライブラリー
- 正規表現(ECMAscript)
- ファイル入出力
- ビット操作
- ローカリゼーション(エンディアンや変換)
- 確率分布の3次元可視化(OpenGLの章を読んでから目を通すようにしてください)
- Boostライブラリー(文字列処理、ファイルシステム、パーサー、MPL/FusionといったTMPライブラリー、有限オートマトン等)
- テスト駆動開発(GoogleTest)
- makeツール(一部の章では、cmakeとqmakeを使用)
- Pythonモジュールのプログラミング(Boost.Python)
改訂第四版にあたって以下の内容を追加します。
- Qt5のGUIオブジェクト
- mocとqmake
- Qt5メタオブジェクト(リフレクション)デザインパターン
- QPainterとイベント処理
- 3次元データ可視化モジュール
- GDBによるデバッグ
- valgrindによるメモリーリーク検知
対象読者
- C++の入門書を購入して勉強中だが、副読本を探している方
- 大学生・専門学校生・高校生でC++の入門講座を最近修了ないし受講中の方
(おそらく)向いてない読者
- 規格の解釈について厳密な定義や正確性を求める方(本書は入門レベルも対象とするため、正確性よりもコーディングのやりやすさを優先しています)
- 既にC++を使用して半年以上、業務に従事している方(C++の規格書を読んだほうが早いです)
- プログラミングが初めてという方や、入門書で挫折した方(本書はC++の入門書の副読本という位置づけですので、全くのプログラミング初心者が読むことは想定していません)
- デザインパターンを学びたい方(テンプレートやラムダ式に適合させるために、オブジェクト指向の部分は全体的な傾向として解体する実装例が多いため、デザインパターンを学ぶには適していません)
注意点
読者に理解頂きたき点としては、本書のみを使ってC++を勉強することは不可能ではありませんが、出版社から出ている編集入りの教本や著名な入門書に比べるとあらゆる意味で品質が劣るため、副読本以外の使用には適さないということです。
- 例外処理は各項目のトピックと密接に関係する場合を除き使っていません
- 並列処理・マルチスレッドについては続編の「C++並列(マルチスレッド)プログラミング」でカバーする予定です
- ページ数が増えるたびに校正の手間が増えて完成度は低くなる傾向があり、本書は絶版として、誤字・誤植の少ない完成度の高い短い本に分割編集する予定です
開発環境
Windows 10(Bash on Windows)+vim、Windows環境ではWindows 10+MSYS2+MinGw(64bit)+Atom、MacではXCode(clangが付属、最新版のみ検証済み)が推奨環境です。
コードの検証は以下の環境で実施しています。
- OSは Windows 10 の Preview Build (Windows設定メニューから入手可能)に付属してくる Bash on Windows Ubuntu 16.04 (前バージョンの14.04でも一部のコードは検証済み)
- gcc-6.2以降(必須)
- clang-3.9(必須)
- Boost 1.63.0(必須)
- GNU Make 4.1(必須)
- OpenGL 4以降(オプション、3次元プログラミングに使用)
- Qt 5.8(オプション、WindowsのGUIプログラミングに使用)
- Python 3.52 + NumPy(オプション、Pythonモジュールの開発に使用)
- Google Test(オプション、テスト駆動開発型プログラミングに使用)
- CMake 3.62以上(オプション、テスト自動化に使用)
- Atom 1.18以降(オプション、Windows環境のIDEとして使用)
- vim 8.0.124+YCM(オプション、Ubuntu環境のIDEとして使用)
あると良い知識
- オブジェクト指向プログラミングについての(他言語での)経験
- Linux等のOSの基本アーキテクチャー(仮想メモリーやライブラリー等)
ラムダ式、テンプレート、スマートポインター、STLコンテナを説明する後半部分では以下のような知識があると理解しやすくなります。
- デザインパターン(ストラテジー、ファクトリー、デコレーター、オブザーバー、コマンド、チェインオブレスポンシビリティー、コンポーネント、インタープリター等)
- データ構造(連結リスト、キュー、スタック)
- ニューラルネットワークのレイヤー構造(データ構造だけを取り上げるのでアルゴリズムは内容に含みません)
特に連結リスト、キュー、スタックは何度も取り上げるので、基本的なデータ構造に関する教本などを通じて理解してから臨むか、併読する事をお薦めします。
更新・出版に関する方針
(2017年10月26日更新)
- 新たな版を出版した段階で、書籍の販売を停止します(販売停止前の無料キャンペーンを除き、内容が少なくなる古い版を手に入れるメリットは無くなるからです)。その際に古い版の更新は行えなくなります。
- 初版発売時の1800ページから、第三版の3000ページへと継続的に更新が行われています。今まで通り更新の努力はしますが、他の書籍同様に更新が停止されたり、販売が停止される可能性は常にあります。無期限・無制限の更新責任といった、書き手に対して一方的に不利な契約は致しかねます。
- 販売停止時に気づいていない誤字・誤植が残る可能性はありますが、他の書籍でも版を重ねるごとに誤字・誤植等の改善をしており、本書が特別な対応をしているわけではないことをご理解ください。(過去の事例では販売停止前に最新の修正版を更新しています)
- 更新対応は今まで通り継続努力をする意志は変わらないものの、誤解が生じないようにするために誤字・誤植に関係なく内容追加(または削除)・改編には版を更新する方針はここで明確にさせて頂きます。
C++基礎課程シリーズについて
「C++並列プログラミング」、「Vulkan入門」、「C++プログラマーの予備知識としてのアセンブリ言語プログラミング」、「C++で自作コンパイラ」、「C++で自作OS」等の予定です。シリーズの目的は基礎レベルの本の副読本を格安で提供することです。(Java並列プログラミングは並列プログラミングの後に執筆予定)
対象読者は情報技術を学ぶ高校生、高専生、専門学校生、大学生です。基礎レベルの本は値段が高すぎるので、安くて(100~500円で)ボリュームのある技術解説書を出すことが執筆の趣旨です。
類似した格安技術書を『継続的に執筆してる』人は、Amazonでは入門レベルで約10人、基礎レベルだと数人程度かと思います。(格安なワンコイン本は名誉を得るという目的が色濃くなるので、入門レベルを超える本の書き手は元から少数でしたが、最近は減少傾向かと思います)