CodeZine(コードジン)

特集ページ一覧

設計者自らが書き下ろす「C++入門書」とは~Bjarne Stroustrup氏との対話~

第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/08/11 14:00

目次

Question 2:あなたが書く入門書とは?

How is your new book going? Almost finished? I know you are less than happy with C++ books currently available at the bookstores. How do you characterize your book?
I have looked at the contents more than 10 times. The book begins with "The Basics". I noticed Chapter 3 has three big concepts: Objects, Types, and Values in this order. At a first glance, I was a bit upset with that order. Why should Objects come before Types?

 新しい書籍の執筆具合はいかがですか。脱稿間近といったところでしょうか。あなたは現在店頭に並んでいるC++書籍の内容に、不満を持っていらっしゃいます。出版予定の書籍の特徴を教えいただけますか?

 私は目次に何度も何度も目を通してみました。書籍は”The Basics”という章から始まります。第3章には”Object””Types””Values”という3つの重要概念が、この順序で登場します。私は正直この出現順序に驚いています。”Object”を”Type”の後ではなく、前に持ってきていますが、その理由はなんでしょうか?

Stroustrup氏の回答1:プロジェクトはユーザーのためのものである

The book is "in production." That means that people are working on the detailed layout, the illustrations, the quality of the English, the index, etc. The book should be in print in late October. The technical contents have been complete for a while.

 書籍は現在”制作”の段階に入っています。レイアウトやイラストの細かな調整、校正、索引作成などの編集作業を行っています。10月の終わり頃には印刷に回されるでしょう。技術的な内容の吟味はずっと以前に完了しています。

 
I don't think you need to worry about the order of topics. Here is a sentence from the beginning of Chapter 3:

    "To read something, we need somewhere to read into; that is, we need somewhere in the computer's memory to place what we read. We call such a "place" an object. An object is a region of memory with a type that specifies what kind of information can be placed in it. A named object is called a variable. For example, character strings are put into string variables and integers are put into int variables."

I do not start out with elaborate class hierarchies or long explanations of the importance of dynamic binding.

The basic idea for the design of the freshman programming class (and the book) was to work backwards from what is required to start a first project aimed for use by others. That list of requirements defines the ideal set of topics. Naturally, we can't completely cover all that (even assuming suitable supervision for that hypothetical next project) in a semester. You couldn't train a plumber in three months let alone an acceptable high-school violinist. To compare, learning the basics of a natural language takes upwards of three years. Yet, we succeed in assembling a toolset of concepts and techniques. Students have reported that they have put what they learned to good use on their first real projects.

 トピックの出現順にあまり気を使う必要はないと思います。第3章の書き出しは次のようになっています:

 ”何かを読み出すためには、その読み出し対象となる何かを書き込んでおく場所が必要になります。つまり、コンピュータメモリ内のどこかに記憶させておく必要があります。

 記憶させるために必要なメモリ内の場所は「オブジェクト」と呼ばれています。オブジェクトはメモリ内の領域であり、そこに記憶される情報の種類は「型」により指定されます。名前付きオブジェクトは「変数」と呼ばれます。例えば、文字列は文字列変数に、整数は整数変数にそれぞれ記憶されます。”

 私は、複雑なクラス階層やダイナミックバインディングに関する詳しい説明を書籍前半部では、行っていません。

 初心者用のプログラミングクラスや書籍を企画する段階では、いろいろな案が出されます。本書の基本姿勢は”プロジェクトはユーザーのためのものである”という点にあります。プロジェクトは自分のためではなく、自分以外の人(ユーザー)のためのものですから、プロジェクトに必要とされる条件をまず考えなくてはなりません。

 本書のトピックは、プロジェクトの条件リストにより決定されています。もちろん、ここには限界があります。すべての必要条件をリストアップできたとしても、そのすべてを限られた時間とスペース内でカバーすることは到底できません。配管工やそれなりの音を出せるバイオリニストを、3ヶ月で養成することなどできるものではありません。自然言語の基本を学ぶだけでも、3年以上の時間が必要と言われています。

 しかし、私たちには経験と実績があります。私たちは、初心者が最初に取り組む(仮想上の)プロジェクトを遂行する上で必要とされる概念とテクニックを、体系立てることに成功しています。私が勤務する大学の学生たちは、学んだ体系を最初のプロジェクトへ実際に応用し、立派な成果を上げているのです。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Bjarne Stroustrup氏との対話

著者プロフィール

  • 豊田 孝(トヨタ タカシ)

    「Windows PowerShell実践スクリプティング―オブジェクト指向と集合指向の統合シェル」(秀和システム発行)と「IT技術者として生き抜くための十ヶ条」(翔泳社発行)の近著2冊にて本音の数%を吐露。最近の活動傾向は、こちらを参照してください。  

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5