ページ 11

いたずら

Posted: 2007年4月09日(月) 17:35
by sa
はじめましてsaと申します。
友人を驚かせようと思うのですがいたずらなのは、ないでしょうか?
(ウイルス・スパイウェア系は、だめです)<!--1

テンプレートメタプログラミング

Posted: 2007年4月29日(日) 15:18
by 組木紙織
現在c++によるテンプレートメタプログラミングについての書籍、サイトを探しているのですが、
ほとんど見つかりません。
見つかったのも十分に説明がなく、これから始めようと思っている私には分からないものばかりです。
テンプレートメタプログラミングについてこれから始めようを思っている人を対象にして書かれているものを知りませんか?

言語は日本語、英語問いません。
出来ればソースコードもしっかりと乗っていて詳しく説明がついているものをお願いします。

Re:テンプレートメタプログラミング

Posted: 2007年4月29日(日) 15:46
by Justy
>ほとんど見つかりません
 本格的になればなるほど第三者には何のコードだからさっぱりになるので
有名なテクニックではあれど、現場ではあまり使われませんからねぇ。

 いくつか探したと言うことでしたが、

Modern C++ Design
http://www.amazon.co.jp/dp/4894714353

 これはダメでしたか?
 多分日本語の書籍でまともに扱っているのは、今のところこれくらいしかないと思います。
 かなり丁寧に書いてあったので、判りやすいですよ。


C++ Template Metaprogramming
http://www.amazon.co.jp/dp/0321227255

 洋書ですがこれもお勧め。


 Webはあんまり知らないですが、これなんてどうでしょう。
http://d.hatena.ne.jp/yotto-k/20061225

 中身は全部読んでませんがここの pdfは結構丁寧に書かれていたような。


 後は Lokiとか boost(mpl/lambda/spirit)関連を扱ってるサイトを探せば
いくつか見つかるかと思います。

Re:テンプレートメタプログラミング

Posted: 2007年4月29日(日) 16:35
by 組木紙織
お返事ありがとうございます。

書籍に関しては、店頭にまったくおいていないので、評判を聞いてからにしようと決めてました。
とりあえずは
>Modern C++ Design
を注文しようかなと思います。


>Webはあんまり知らないですが、これなんてどうでしょう。
http://d.hatena.ne.jp/yotto-k/20061225

そこのサイトは見つけて、見たのですが、boostを利用してという内容だったように思います。
今やろうと思っていることは、STL以外を使わないようにというつもりだったので、boostを利用していたので
別のサイトを探していました。

しばらくこれらの内容で頑張ってみます。

Re:テンプレートメタプログラミング

Posted: 2007年4月29日(日) 17:02
by Justy
STL以外を使わないようにというつもりだったので、boostを利用していたので
別のサイトを探していました

 なるほど。

 そういうことですと、"Modern C++ Design"もちょっとマズイかもしれません。
 この pdfと同じように TMPの基本から説明はしていますが、結局は Lokiの解説になっていますから。

 店頭にあれば手に取ってみて見てみることができますが、店頭にないとなると
もう少しネットの書評とかを見てからの方がいいかもしれません。

Re:テンプレートメタプログラミング

Posted: 2007年4月29日(日) 19:16
by 組木紙織
>そういうことですと、"Modern C++ Design"もちょっとマズイかもしれません。
>この pdfと同じように TMPの基本から説明はしていますが、結局は Lokiの解説になっていますから。

そうですか。単純にc++の基本機能だけでTMPを学びたいと思っただけなのですが。
boostやLokiにも手を出したほうがいいのかな。

かなり一般的に使われているとおもうのですが、職業でないので開発効率はほとんど気にする必要はなく、
自分で実装して初めて学習できる部分もあると思うので、あまり手を出したくはないのです。

>C++ Template Metaprogramming
を入手して頑張ってみようかな。
英語のプログラムの専門書はまだ読んだことがないので、その練習にもなるし。

Re:テンプレートメタプログラミング

Posted: 2007年4月29日(日) 22:30
by Justy
 今の C++で boost/Lokiに全く触れずに TMPを学ぶのはちょっと難しいと思います。
 浅いレベルならともかく深いところは特に。

 "C++ Template Metaprogramming"も中は boostがガンガン出てきます。
3章のサンプル
http://boost-consulting.com/mplbook/metafunctions.html


自分で実装して初めて学習できる部分もあると思うので
あまり手を出したくはないのです
 では、「使う」方向ではなくて、両ライブラリを「研究」して、
TMPを学んでいってはどうでしょうか。

 私も最初に触れたとき、"Modern C++ Design"と Lokiの実装を見ながら
納得がいくまで Lokiを改変してみたり、自分で実装したりして覚えました。


 ただ boostの方はコードが読みづらいので、中身の実装より何をどう利用しているのかとか
最終的にユーザーにどう書かせるのか、どういうクラスがあって
どう組み合わせることで何を実現しているのか、などの仕組みの部分に
注目していくと、自分で書くときに参考になりますね。

 実際、boost::serializationを参考にして(それよりも遙かに低機能な)
超簡易シリアライズライブラリを作ったことがあります。
 serializationの実装がどうなっているかではなく、serializationの
機能(仕様とかユーザーの利用方法など)を把握した上で
そこから実装を推測して、それに近い機能・使わせ方に
なるよう自分で書いていくのは、なかなか勉強になりました。