« オブジェクト指向開発チームのための品質保証活動 | トップページ | 今夜はロイヤルパークホテルに宿泊の巻 »

2011年8月21日 (日)

書籍「Modern C++ Design」~C++のテンプレート活用技法とジェネリックプログラミング

C++のテンプレート機能を使い、効果の高いプログラミングについて書かれた書籍に「Modern C++ Design」がある。

L1000195

C++のテンプレートというとコンテナクラスなどに代表される利用方法が直ぐに思いつく。

しかし、テンプレートには色々な利用方法の選択肢がある。

実はテンプレートによるプログラミング、つまりジェネリック・プログラミングは、1980年代の後半から1990年代の半ばにかけて、かなり議論されいた。

私がAda83でプログラミングを毎日のようにしていた時、Ada83ではC++のテンプレート機能に該当するGeneric機能が入っていた。

この時代には、Generic機能でどのようなプログラミングが可能なのかが深く議論されており、継承とGeneric機能の比較、型セーフやメモリー空間の圧迫、処理速度なども含めて研究がおこなわれている。

実は、Ada83の段階では諸事情で継承機能が見送られ、Ada95で正式追加された。

Ada83の段階で十分な検討の結果見送られた事もあり、Ada95で継承機能が追加されたが、Ada83の仕様に特に大きな変更をかけることなく済んでいおり互換性もある。

「Modern C++ Design」を読む上で、Templateに興味が強い方は、1980年代の後半から1990年代の半ばにかけて議論・研究された「Genericプログラミング」資料を合わせて読むと興味深いのではないかと思う。

最も簡単に参照できる資料の1つに、バートランド・メイヤーの「Object-Oriented Software Construction(翻訳本では「オブジェクト指向入門」)*内容的には入門書とは思えない」がある。

L1000202 L1000203 L1000204 L1000205

第1版と2版があるが両方に「Genericプログラミング(本書では総称性と記載)を用いた継承のエミュレーション」逆に「継承を用いて総称性をエミュレートする」というに解説がある。

どちらかと言うと第1版の当該部分を読み、次に2版の当該箇所を読むと良いと思う。

第1版と第2版(付録Bに掲載)では少し記事の視点が異なっている部分がある。

一応、補足するとこの本のGenericプログラミング解説はAda言語やEiffle言語をベースに議論が行われているので、C++に置き換えて読み進める必要がある。

|

« オブジェクト指向開発チームのための品質保証活動 | トップページ | 今夜はロイヤルパークホテルに宿泊の巻 »

「パソコン・インターネット」カテゴリの記事