2010-02-03

C++0x本:ライブラリをどうするか

ライブラリは膨大である。1000ページ使おうとも、C++0xのライブラリをすべて解説することなど、到底できはしない。

C++0xのコア言語は、プリプロセッサまで含めても、規格上は、たったの400ページである。私は、800ページあれば、コア言語はすべて解説できると考えている。解説文は、分かりやすく表現するために、規格よりも冗長になる。それでも、せいぜい1.5倍から2倍程度の文章量で収まると考えている。したがって、800ページで、あらかたのコア言語機能を解説するのは、可能であると考えている。ひょっとしたら、少しページが余るかもしれない。問題は、ライブラリだ。

C++0xを解説するのだから、当然、ライブラリも、ある程度は解説したい。ところが、これは難しい。

ライブラリは、規格上は、750ページぐらいある。相当多い。

分量の問題もさることながら、別の問題もある。

ライブラリの全クラスの全メンバを、ひとつひとつ解説して行くようなリファレンス本は、あまり役に立つとも思えない。昔は知らず、今の時代は、高性能なパソコンと、広帯域のネット回線がある。コンパイラに付属するマニュアルを、オンライン上で参照するということは、非常に手軽なことだ。

この時代にあって、いまさら、ライブラリを詳細に解説した、物理的な本は、あまり役にはたたないのである。それこそ、ググッた方が速い。

それよりは、ライブラリで使われているテクニックや概念(イテレーターやコンテナ、関数オブジェクトなど)を解説して、ライブラリを使うための、前提知識をつけた方がよい。

ライブラリの解説は、コア言語以上に難しい。たとえば、strict weak orderingをどう解説したらいいのだろうか

たとえ、この問題を数学的に完璧に解説できたとしても、おそらく、だれも読んでくれまい。

プログラミングには、英語や数学が必須だという意見がある。一理ある。特に、英語については、個人的にも肯定したいだけの理由がある。しかし、それはプログラミング上のある特定の問題において、英語や数学が特に必要とされるだけであって、プログラミング自体には、英語や数学が必要だとは思わない。

英語について。どの自然言語を使うかは、問題ではない。数学を理解したければ、まずギリシャ語やラテン語を学ばなければならないのだろうか。数学は、ある特定の自然言語に依存しないはずだ。

数学について。恥を恐れずにいう。すべてのプログラマに大学レベルの数学力が必要ではないと信ずる。もし必要とあれば、世の中は極端なプログラマ不足になっているだろう。あまりにもプログラマの人手不足が深刻で、今日のコンピューターの発達はなかったに違いない。プログラミングからすれば、数学は道具にすぎないと信ずる。

しかし考えてみれば、コア言語が、規格上どのように定義されているかも、大部分のプログラマにとってみれば、どうでもいい話である。とすると、ここまで長文をだらだらと書いてきたが、これは、単なる個人の嗜好に基づくものであるということになってしまう。困ったな。ライブラリで使われている概念を解説したほうが良いというのも、結局、コア言語に偏った者の、物の見方なのかもしれない。

まあ、所詮は、コア言語に魅せられた人間の駄文か。

No comments: