対話のポイント:入門書のレベルを超えた入門書
Stroustrup氏からの回答メールによれば、当初の8月出版予定が10月以降に延期されるようです。技術的な内容の吟味はずっと前に完了しているとのことですから、C++の言語文法やその使い方などの説明手順ではなく、”プログラミングとはそもそも何なのか”への回答探しにかなりの時間が割かれていることが想像できます。公式サイトからダウンロードできるPDFファイルの「preface」には、「本書で紹介するプログラミング概念は、JavaやC#などの他の言語にもそのまま適応できる」という文が含まれています。
Stroustrup氏は、「存在するのは問題とソリューションだけである」「コードは自分のためではなく、ユーザーのために書くものである」「プロ意識(professionalism)」などの基本用語を多用し、従来のプログラミング書との違いを強調しようとしています。

回答メール内に含まれている”depth-first”、”concrete-first”、あるいは、”concept-based”などといった英語を今回は訳出していません。1回のメール交換でこれらの意味を説明する拙速を避けたいと思います。この対話連載がさらに進めば、より本質的な議論が展開されることになるはずです。
筆者は「目次」を吟味し、”Type”の前に”Object”を説明している真意を尋ねています。筆者は極めて短絡的にOOP的な視点から尋ねたのですが、結果的に、議論が噛み合っていませんでした。しかし、Stroustrup氏の回答メール内で触れられている「”Object”はメモリ領域である」という説明は、正直な感想として、プログラミング入門書のレベルを超えている印象を受けます。
Stroustrup氏はObjectについて、自らのWebサイトで次のように説明しています。
object - (1) a contiguous region of memory holding a value of some type. (2) a named or unnamed variable of some type; an object of a type with a constructor is not considered an object before the constructor has completed and is no longer considered an object once a destructor has started executing for it. Objects can be allocated in static memory, on the stack, on on the free store. TC++PL 4.9.6, 10.4, 10.4.3, D&E 2.3, 3.9.
新しい書籍の「目次」を構成する”Objects”、”Types”、”Types”は、このObject解説の第1定義をそのまま使用しているようです。「”Object”は(型を持つ)メモリ領域である」Stroustrup氏が入門書籍内でこの文の意味をどのように説明するのか、本当に楽しみです。
今回は少し技術詳細に入りすぎた感じがあるので、次回は「プロ意識(professionalism)」について伺う予定です。Stroustrup氏は執筆中の入門書籍内で、「ソフトウェア開発者としてのプロ意識の重要性」を殊のほか強調しています。同氏が考えている”プロ意識”とは一体なんでしょうか。お楽しみに。
