Programming -- Principles and Practice Using C++ (3rd Edition)
- Addison-Wesleyから刊行される"Programming -- Principles and Practice Using C++ (3rd Edition)"は、2024年4月に発売予定
- ISBN: 978-0-13-830868-1
- 出版社のウェブサイトから直接購入可能
書籍紹介
- この本は、真剣に取り組む誰もがプログラミングの基本原則を学び、実際のプログラミングに必要な実践的スキルを身につける助けとなる
- この改訂版には次のような特徴がある:
- 読者の目標が、他の人が使い保守できる十分に良いプログラムを書くことであると想定している
- 曖昧な言語仕様の細部よりも、基本概念と技法に焦点を当てている
- プログラミング言語の入門ではなく、手続き型、オブジェクト指向、ジェネリックプログラミングを含むプログラミング一般への入門である
- ハードウェアを効率的に使うために必要な低レベル技術と、現代的な高水準技術の両方を扱う
- 有用で正確かつ安全な型を使い保守し、効率的なコードを書くための堅固な基盤を提供する
- 主にプログラミング経験のない人向けに設計されているが、熟練したプログラマにとっても、以前の版はより効果的な概念と技法の導入として有用だった
- 必須の概念、設計およびプログラミング技法、言語機能、ライブラリを幅広く扱う
- 最新のC++(C++20およびC++23)を使用する
- 入力、出力、計算、簡単なグラフィックス/GUIとともに、組み込み型とユーザー定義型の設計と利用を扱う
- C++標準ライブラリのコンテナとアルゴリズムへの入門を提供する
著者紹介
- Bjarne StroustrupはC++の設計者であり最初の実装者であり、"The C++ Programming Language"、"A Tour of C++"、および数多くの一般向け・学術的出版物の著者である
- 彼はニューヨーク市にあるコロンビア大学のコンピュータサイエンス教授である
- Stroustrup博士は全米工学アカデミー会員であり、IEEE、ACM、CHMのフェローである
- 彼は2018年のCharles Stark Draper Prize、IEEE Computer Societyの2018年Computer Pioneer Award、2017年のIET Faraday Medalを受賞している
PPP3紹介
- "Programming: Principles and Practice using C++ (3rd Edition)"(PPP3)は、プログラミング経験のない人のためのプログラミング入門書である
- 多少のプログラミング経験があり、スタイルや技術を向上させたい人、あるいは単に最新のC++を学びたい人にとっても有用だろう
- 教室での使用を想定して設計されているが、自習書の観点から書かれている
- この本の以前の版は、Texas A&M Universityや他の多くの場所で、電気工学、コンピュータ工学、コンピュータサイエンスの学生向け初回プログラミング授業の基礎として使われてきた
- PPP2を見たことがある人は、PPP3の分量が半分程度になっていることに気づくだろう。軽量化のために行ったことは次のとおり:
- C++20とC++23の中核部分を活用して、一般に1学期のコースで扱われる基礎章を強化し、移植性のためにQtベースでグラフィックス/GUI章のコードを書き直した(例: ブラウザおよび携帯電話)
- より専門的な章(PPP2では"視野を広げる"として知られていたもの)は、必要に応じて使えるようウェブに配置した
- 純粋な参考資料を削除した。現在ではウェブ上で、より多く最新の資料を見つけられる(例: cppreference.com)
- PPP2のサポート資料は引き続き利用可能(講義スライド、コードなど)
PPP3サンプル
- 序文: この本が約束することと約束しないこと
- 目次
- 第0章: 読者への言葉。この本で採用したアプローチに関するいくつかの注意点
- 第10章: ディスプレイモデル。サンプル章。完全な初心者ならこの章は今すぐ読まないでください。教師や経験豊富な読者に、この本が5週間程度(週2章を想定)でどこまで到達するのかを示すために公開しています。また、少し現代的なC++を披露する意図もあります
サポート情報
- C++実装およびソフトウェア開発環境へのリンク(および始めるためのちょっとした助言)
- モジュールの使い方(
PPP_support.hを使ってPPPモジュールをビルドする方法の説明を含む)
- モジュールを利用できる場合のためのPPPモジュール
stdモジュールとPPPを最も簡単に使うためのPPP.hヘッダ
- ヘッダファイルの利用に戻る必要がある場合のための
PPPheaders.hヘッダ
- PPP3のグラフィックス/GUIユーザーインターフェースライブラリ(第10〜14章)を含むGUIサポート。このコードを実行するにはQtをインストールする必要がある。ユーザーマニュアルを参照
- 複数章のサンプルコード(TBD)
- 正誤表
- PPPをベースにPPP3向けへ更新された講義用スライド
- PPPコーディングスタイルガイド
- 演習問題資料(TBD)
PPP2の章
- これらの章はC++23ではなくC++14を使って書かれているが、依然として正しく、トピックを妥当な形で紹介している
- 第1章: コンピュータ、人間、プログラミング
- 第11章: 入出力のカスタマイズ
- 第22章: 理想と歴史
- 第23章: テキスト処理
- 第24章: 数値計算
- 第25章: 組み込みシステムプログラミング
- 第26章: テスト
- 第27章: Cプログラミング言語
- 用語集
翻訳版
- まだない。以前の版の翻訳版は著者の書籍カバーページを参照
GN⁺の意見
- PPPはプログラミング入門者向けの有名な本で、今回C++20/23を活用し、内容を大幅に整理・圧縮した第3版が出るとのこと。うれしい知らせです。
- 特にGUI部分をQtベースに全面改訂したのは、QtがC++界の事実上の標準GUIフレームワークとして定着したことを示す例と言えそうです。
- モジュール化など最新のC++技術を積極的に反映し、ウェブとの連携も強化されたようで期待が持てます。特にウェブブラウザでそのまま実行できるバージョンがあるのは、教育用途にぴったりですね。
- ただし最新のC++を使うぶん、初心者が混乱する可能性もありそうです。依然として初心者向けにはCスタイルのC++から始める方がよいかもしれません。
- 著者のBjarneはC++の生みの親であり標準化を主導してきた人物なので、最も権威ある書籍の一つになりそうです。初心者だけでなく専門家も、Bjarneが選んだベストプラクティスや活用のヒントを学べるでしょう。
1件のコメント
Hacker Newsの意見
C++20のモジュール機能が、まだ大半のコンパイラで完全にはサポートされておらず、
import std;が動作しないことへの懸念が示されている。初心者が混乱する可能性がある。GUIチャプターでFLTKの代わりにQtを使ったのは大きな変更で、業界でQtが広く使われているため好意的に受け止められそうだ。ただし、学習曲線にどのような影響があるかは不明。
Stroustrupのコードでは
using namespace std;を使ってstd::接頭辞を省略できるため、コードの可読性が向上している。Stroustrupのコードで
#includeの後に空白を一貫して使っていないことに疑問が呈されている。以前はC++を使ってUIやAPIのパースなど、ほぼあらゆることを処理していたが、現在では開発スタックにおけるC++の位置づけは下がっている。
この本の以前の版を深く学んだ経験があり、C++への理解を高めるのに大いに役立った。しかし、このような本を読まずにC++コードを書く人も多かった。
C++に関する最新情報をまとめた "C++ Annotations" という本が紹介されている。
第3版は、第2版に比べてページ数と重さがおよそ半分に減っている。
第2版の「Part IV: Broadening the View」セクションが削除されたため分量が減っており、その内容はオンラインで読める。C++11/14を活用したトピックは今でも有効だ。
C++20をサポートするIDEやコンパイラを見つけるのが難しく、
import std;が動作しない問題について助言を求めている。