Generic Programming with C++ Template
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG参考図書:
Modern C++ Design
Andrei Alexandrescu, Addison-Wesley, ISBN:0-201-70431-5
(訳書: ピアソン・エデュケーション, ISBN:4-89471-435-3)
http://cseng.aw.com/book/0,,0201704315,00.html
Generic Programming - STL による汎用プログラミング
Matthew H. Austern, ASCII, ISBN:4-7561-3441-6
関連スレッド:
C++相談室 Part3
http://pc.2ch.net/test/read.cgi/tech/1003832761/
STL スレッド
http://pc.2ch.net/test/read.cgi/tech/1004287394/
0175172
NGNGもちろん無駄だといってる訳ではない。
ModernC++Designを読んでる最中にHaskellに出会って
今、はまりまくってるよ。
そのせいか、STLもパラメータ化クラス(型?)を使いまくってる性で
関数言語風味たっぷりに感じてるよ。
どれくらい嵌ってるかというと、関数プログラミングからホーアCSP理論まで読んで
「ほー、Eiffelの表明の元ネタは仕様記述言語Zから来てたのは知ってるけど
そのZ言語の元ネタはCSP理論なんかー。おもしれーなー。
表明の推論もできそうだなー」とか訳のわからんことを考えるくらい嵌ってる。
ただ、この手のネタは、この板の主旨から結構ズレてしまったのでは?
と思うわけよ。
>>174
これも面白いと思う。
非正格言語でtemplateみたいなコンパイル時簡約?みたいなことが
出来たら実行速度が手続き型言語に勝てる関数型言語も夢では無いかもしれない
と俺は創造してしまう。
(CleanやMLは代入使って実行速度を上げてるようだが、そんなセコイことせずにな)
でも、なーtemplateは形検査してくれないからなー。
ModernC++Designの技はやり過ぎだと思う。
ハッタリには使えると漏れも思う。
(研究する価値が無いというつもりは無い。そこは酌んでほしい)
0176デフォルトの名無しさん
NGNGやっぱり実践的なプログラムにあれは使うものじゃないよね。
Cの変なテクニックを積み重ねたようなプログラムなんて物凄く
読みにくいけど、それの上を逝ってるよ。
0177デフォルトの名無しさん
NGNG頭の体操には悪くないが。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGサイト、キボーン!(懐)
0181デフォルトの名無しさん
NGNG0182デフォルトの名無しさん
NGNG動くらしい。(LokiのReadMeに書いてなかったけ?)
Lokiがコンパイルできる珍しい処理系
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185デフォルトの名無しさん
NGNGじゃ、駄目じゃん、、、
いったいなんでgccでは動くのか、その理由が知りたいな。
実際、ここまで互換性がないとテンプレート怖くて使えないんだけど。
0186デフォルトの名無しさん
NGNGあるSTLの本の第一章に。
「互換性が低いことを怖がってSTLに対して保守的にならないで下さい。
時代はstanderd C++に向かっているのです。」
0187デフォルトの名無しさん
NGNG・・・で?
0188デフォルトの名無しさん
NGNGVC++ だと部分特殊化もメンバ関数テンプレートもサポートしてないから…
つーかもう4年近く前のコンパイラだよ?<VC6
VC.NETだとどの程度templateに対応してるんだろ。
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGって書いてあったが<VC.NET
0191デフォルトの名無しさん
NGNGgccが開発バージョン2.9から最新ANSI C++規格を実装したからさ
それと.NETでLokiは使いたくないなー。VC.NETはやめとけ。
氏ぬぞ。
0192デフォルトの名無しさん
NGNG0193デフォルトの名無しさん
NGNGサイトがでかすぎて分からないヨ
0194デフォルトの名無しさん
NGNG0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNG凄ぇ・・・まさに天才。
0197デフォルトの名無しさん
NGNGおれは3章であっぷあっぷだよ。
あんまりテンプレート自体を使いこなして内省かも。
0198デフォルトの名無しさん
NGNG出てこないところをみると皆自分の中で消化吸収してる最中なのかな?
おれはあと3ヶ月ぐらいはかかるだろうな。
0199デフォルトの名無しさん
NGNG0200デフォルトの名無しさん
NGNG0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGC++使う理由の大半はテンプレートがあることだからね。
STL なーんて素晴らしい。
0204デフォルトの名無しさん
NGNG0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGJava
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGD言語
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGevalはやめてー
究極すぎる
0213デフォルトの名無しさん
NGNG0214デフォルトの名無しさん
NGNG0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNG結構使えるよな。テンプレートパラメータからホストクラスを
派生させるってのカッコいいから使ってるよ。
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGSTLに該当する機能はあるのでしょうか。購入検討の資料としたいのです。
0219デフォルトの名無しさん
NGNGよく知らないけど、System.Collectionsのコンテナを
使うんじゃないかな?だからSTLは無いと思うけど。
0220デフォルトの名無しさん
NGNG分からない。だれか簡単に説明してくれないかな?
0221デフォルトの名無しさん
NGNGttp://www.shiro.dreamhost.com/scheme/docs/lambda-j.html
STLといい最近のC++は関数型プログラミングの匂いがー
関数プログラミングのすばらしさはまだまだあるぜーいえー。
なんでも再帰
ttp://www.shiro.dreamhost.com/scheme/docs/tailcall-j.html
なぜ関数プログラミングは重要か
ttp://www.sampou.org/haskell/article/whyfp.html
0222デフォルトの名無しさん
NGNGFunctorと組み合わせて高階関数ができるからかな?
ttp://www-6.ibm.com/jp/developerworks/linux/010921/j_l-prog3.html
ttp://www.teu.ac.jp/kougi/koshida/Prog6/Text08/index.html
ttp://a414s1.it.nanzan-u.ac.jp/smlbook/smlwww/node10.html
TypeListと補助するtemplateだけでも役にたつところもあるかな?
ttp://www.google.com/search?q=cache:5o9J68CC7oMC:www.tama.or.jp/~o-mikita/phantasien/memo/p0108.html+C%2B%2B+TypeList&hl=ja&lr=lang_ja
0223デフォルトの名無しさんk
NGNGclass Cls
{
public:
//このクラスにおいて関係するタイプのリストを作成する
//(全てのアプリケーションコードにあるクラス内において必須)
typedef TYPELIST_3(Cls1, Cls2, Cls3) MyClsList;
・・・
private:
//必要なインスタンスを作成する
Loki::TL::TypeAt<MYClsList, 0> cls1;
Loki::TL::TypeAt<MYClsList, 2> cls3;
};
とかって感じにタイプリストからの型選択テンプレートクラスに
リストを渡して選ばせる感じに使うんでしょうか?
なんか頭が固くていい使い方が思い浮かばないなw
クラス間の関係が明確になるメリットは大きいかな。
0224デフォルトの名無しさん
NGNG諸関係だけを記述するようなプログラムを作るのってかなり頭痛いよね。
上の奴もCls自体をいくつかのテンプレートパラメータ(タイプリスト)を
もらうように直したら、かなり自由度は上がるけどもう何がなんだか
分からんものになりそうな・・・
アプリケーションプログラマにそこまで要求するんか!の世界。
この本読んで任意の処理に対するタイプリストの設計を勉強しないと
全然ダメだな。
こういうのはもっと若いうちにやりたかったよ。。。(遠い目
Lispハカーは、こういったやり方でいつもプログラミングしてるんですか?
0225デフォルトの名無しさん
NGNGその設計は良くないのでは?
(タイプリストの引数の数が変わったとき作りなおさなやね)
今手元に本が無いので上手く掛けないけど・・・
TypeListのクラスを単一継承するという活用法が載ってた
と思うけど、そってで攻めてみては?
あっ。Cls2,Cls3,Cls4見たいにしたらいいんか
0226223=224
NGNG今まではOO的なプログラミングということでインターフェイスを
規定してそれに対して実装するってやり方だったけど、これは
全然違うね。
最初にタイプリストありき。それの関係を記述するようなプログラミング。
あたま痛くなってくる。でもこれがホントの再利用性なのかも。
0227223=224
NGNG馬ファ輪飲んで今日はもう寝る
0228225
NGNG個人的にはType2Typeぐらいしか使いたくないなー
実際の開発に使えそうなものって何かな?
0229デフォルトの名無しさん
NGNG天才が書いたコードは天才しか再利用できない
0230223=224
NGNGんー、自分でも色々と考えてるんだけど、これをつかった効果を
なんとなく想像するので精一杯。
イメージとしては、既存の開発において
ライブラリコード:アプリケーションコード=1:10
ぐらいの比率だったとして、Alexandrescu方式のプログラミングを
導入したことで
ライブラリコード:アプリケーションコード=8:2
みたいなところまで比率に上げる。というか外部のライブラリやシステムに
依存したものを極力排除する。そうして全体のステップ数を減らす。
こんな世界(w)を期待してるのは分かるんだけど、
いかにライブラリコードを設計するかは一筋には逝かないね。
システムの全体を理解してパターンを適用し、それらの関係を
リストで表現する。こんな天才的能力がある人だけが使うものかもね。
リストをデータ構造としか考えてこなかった俺みたいなヘタレには
そもそも無関係かも(w
STLで上がった生産性がアプリケーション全体に適応されたら
天才とヘタレの能率の差なんて目も当てられないだろな。
0231223=224
NGNG天才の書いたコードは天才しか再利用できないかもしれないけど、
ModernC++Designで言われているのは「自分の書いたコードぐらい
再利用しようぜ」ってことだと思う。
天才がこういったプログラム設計をあっという間に理解して
抽象度の高いプログラミングをしてると思うとカナーリ鬱なんだけど、
ヘタレもお遊び程度にはやっておかないと。
今日はショックで眠れないYO、トホホ
0232デフォルトの名無しさん
NGNG0233デフォルトの名無しさん
NGNGクラス同士の機能が独立したものになるように
設計すればいいかも。
そのクラス同士を組み合わせるところにGenerativ Programming
を使えばよいと考えている。
しかし完全に機能が独立したクラスまで上手く機能を分割できないと・・・・
俺にはむりっす
0234デフォルトの名無しさん
NGNGC++のきったねー構文に関する知識は後から詰め込めばよし。
まずはプログラミングが何なのかを学ぶためにHaskellをやれ。
0235デフォルトの名無しさん
NGNGスレ違い。
0236デフォルトの名無しさん
NGNG板違い
http://cheese.2ch.net/test/read.cgi/math/1015420115/
あっちの板では認知度が低いです。がんばって宣伝してきてね
0237デフォルトの名無しさん
NGNGHaskellはIOとのやり取りが弱いので実用的ではない。
まあ、これは言語ではなく処理系の問題だが。
あとHaskellはマクロが無いね。
コンパイル時でないと知りえない情報(__FILE__とか__LINE__)が
かけない。すこし残念。
0238デフォルトの名無しさん
NGNGC++Report?DDJ?
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGもっと柔軟なものをここでなんとしてでも作りませう!
0241デフォルトの名無しさんk
NGNG0242デフォルトの名無しさん
NGNG0243241
NGNGマクロの部分ならなんとかなるかもしれないけど。
0244デフォルトの名無しさん
NGNG0245デフォルトの名無しさん
NGNGAndrei Alexandrescu にも無理(だった)
>>240
どうでもいいが Loli じゃなくて Loki な。
0246デフォルトの名無しさん
NGNG0247デフォルトの名無しさん
NGNG0248デフォルトの名無しさん
NGNGありません、ごめんなさい
0249デフォルトの名無しさん
NGNGRuby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> C++
0250デフォルトの名無しさん
NGNG0251Rubyは好きだけど、比べることは不毛だ。
NGNG= って可能性は無いわけ?
0252デフォルトの名無しさん
NGNG0253デフォルトの名無しさん
NGNGたぶん operator>>>>>>>>...() だから stream から入力してるんだと思うが。
0254デフォルトの名無しさん
NGNG別スレが丁度あるじゃん。
0255デフォルトの名無しさん
NGNGいや、激しくビットシフトしてるんだと思うぞ。
0256デフォルトの名無しさん
NGNGはしっこのビットがはみ出すくらいに・・・
0257デフォルトの名無しさん
NGNG確かに画期的だとは思うのだけど。
インラインしてくれる分、それだけコードは早くなるんだけどね。
0258デフォルトの名無しさん
NGNGコンパイラのオプションをいじって、最適化を「速度優先」から「サイズ優先」
に変更しましょう。インライン展開が、かなりの程度まで抑制されます。
0259デフォルトの名無しさん
NGNG全く変化なしでしたよ。
0261デフォルトの名無しさん
NGNG最近のCPUではインラインしすぎはかえって遅くなることが
あるんで、よろしく。STLに限った話じゃないけども。
0262デフォルトの名無しさん
NGNG0263デフォルトの名無しさん
NGNGインライン展開されてたのにはびっくりした。
0264デフォルトの名無しさん
NGNGそりゃマクロだからインライン展開するわな。
つうかマクロをインライン展開というのかは微妙
# あれにびっくりしたのには同意。
0265263
NGNGBEGIN_MSG_HANDLER(Hoge)
MESSAGE_HANDLER( WM_HOGE ,OnHoge )
//OnHogeがここにinline展開される
MESSAGE_HANDLER( WM_HOGE2 ,OnHoge2 )
//OnHoge2はここにinline展開される
END_MSG_HANDLER()
LRESULT OnHoge(){...} //ここではbpかけられない
LRESULT OnHoge2(){...}
};
0266デフォルトの名無しさん
NGNGそんなあなたに
__asm { int 3 }
(っつー話じゃないか)
0267デフォルトの名無しさん
NGNG著者に遠慮して本書いてないか?modern~はとても実践的な本だけど、もっとTypelistに
特化した馬鹿みたいなオタク本を書いて欲しいところだな。
0268デフォルトの名無しさん
NGNG彼のWebページは何だかな。
0269デフォルトの名無しさん
NGNGいやWebで公開するには惜しいアイディアがあるんだろ。
more modernが出るのをひたすら待つのみ
0270デフォルトの名無しさん
NGNGAlexandrescuは彼のパクリ
0271デフォルトの名無しさん
NGNG知ったかしてます?
なんか具体的なこと語ってみてよ
0272デフォルトの名無しさん
NGNG使えるけど、それ以外のことにも可能性がある点が面白いわけで
270のような奴はそもそも勘違いしてるんだろな。
0273デフォルトの名無しさん
NGNGなんかローダーがエラー返してくる。。
0274デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています