2010-02-18

C++0x本:つまった

ここ数日、コンテナとアルゴリズムの目次が、さっぱり進まない。ひたすら悩みながら、何も進んでいないのだ。

問題はページ数だ。全関数と全クラスとその全メンバーを解説できるようなページ数はない。そこで、私は概念の説明をきっちりしようと決意した。しかし、関数オブジェクトやイテレーター、スマートポインターとは違い、コンテナやアルゴリズムの概念の解説は難しい。というのも、アルゴリズムというのは、所詮は、イテレーターを引数に取る関数テンプレートの寄せ集めであるし、コンテナの定義も、これこれの式がこのような動作をする、というものなのだ。コンテナが満たすべき最低限の定義をした上で、vectorだのlistだのmapだのunordered_mapだのといった、より詳しく、多くのことを定義した、サブクラスともいうべき、具体的なクラスが定義されるのだ。

したがって、アルゴリズムの解説は、具体的な関数の解説でしかなく、コンテナの解説をするには、ページが足りない。

そんな事をするぐらいなら、アルゴリズムは、最も単純な、for_eachに特化して、具体的な実装方法を解説した方が、よほどためになる。コンテナも、個々のクラスの列挙と、サンプルコードでも載せた方が、よほど実用的だ。コンテナひとつあたり、せいぜい数ページだ。

それに、その他のライブラリのこともある。iostreamなどは解説しなくてもいいとする。文字列のライブラリも、一般的だから、省くとする。しかし、新しく追加されたライブラリはある。乱数、正規表現、アトミック操作、スレッド。これらを解説するには、ページ数が絶望的に足りない。しかし、一切言及しなかったとしたら、読者は、その存在すら知ることがなくなる。たとえ一言でも、言及してあるならば、別の本や資料によって、詳しく調べようという意欲が湧いてくるのではないか。

どういうものかという根本的な概念の説明と、至極簡単なサンプルコードなら、2ページあれば書けるはずだ。たとい、実用上、役に立たなかったとしても、少なくとも、読者はその存在を知ることができる。そもそも、その存在を知っているかどうかの差は大きい。それならば、10ページ程度を割いて、これらのライブラリを、せめて紹介しておくのも、悪くないのではないか。

難しい。

4 comments:

Anonymous said...

どうしてもページ数が足りないのであれば、
本の一部をPDFで提供するのはどうでしょうか?
コンピュータの構成と設計では発展的な内容をPDF形式で提供しています。

江添亮 said...

それは最終手段です。
そのようにして提供されるボーナスチャプターは、本ほど読んではもらえません。

本の付録としてついているCDなどは、フリスビーにするしかありませんし、
自由にダウンロードできるwebサイトを作ったところで、誰も見向きもしません。

しかし、私はPDFが嫌いなので、ボーナスチャプターを提供するにしても、PDFという選択肢はありませんね。

萌ゑ said...

今日帰りに本屋に立ち寄ってみましたが、相変わらず面白い本はありませんね~
hitoさんの本の発売を楽しみに待っている一人です

Anonymous said...

一言の言及で詳しく調べようという意欲が湧く者ならば、見てくれるでしょう。
人数は少ないでしょうが。
PDFと限定して書いてしまいましたが、電子媒体でと書くべきでした。
自分もPDFは好きではありません。