おおむらさん,太田さん,
平鍋です.
いつも有用な情報ありがとうございます.
On Sat, 4 Nov 2000 12:24:58 +0900,
"Oota" <oota@....jp> said:
>> 突然、思い出してしまったのですが、標題に書いた
>> 「Cプログラミング診断室」というおもろい本がありました。
>> ご存知の方も多数と思います。
>>
>> あれってある意味、Cのリファクタリングについて書かれた本ですね。
>>
>>
>> この本、絶版になってるので(ので、か?)オンラインで読めるようです。
>>
> http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html
おお,「舘」の藤原さんが書いている本ですね.私も以前読んで面
白いと思いました.
> このサイトで気になるのが、トップにある新記録:最長不倒関数: 6344行
> でダウンロードできるファイルです。一体この人はどうやったらこんなに長い
> 関数を書けるのだろうか。そもそもテストできたのか。などなど。
実用とか理論とかにとらわれない,何か前衛的な挑戦ではないか,
と思います(笑).
> 「やさしいCプログラミング」も笑えますね。これで京都大学の博士課程を
> 出ていて教授をやっているのだから怖いです。
これは,上記からのポインタになっているのですね.一瞬同じ著者
かと勘違いしました.前書きだけでかなり笑えます.
でも,このマクロを駆使したギミック言語の延長に,generative
programming がある,と捉えることもできますね.gp は,例えば
こんな感じです.コンパイルタイムに階乗計算を行うための C++
template です.(James Coplien から教わったものですが,もはや
解読不能)
=========
template <bool condition, class Then, class Else>
struct IF { typedef Then RET; };
template <class Then, class Else>
struct IF<false, Then, Else> { typedef Else RET; };
struct One { enum {RET = 1;}; };
template <int n> struct fact {
typedef
IF<n==0, One, fact<n-1> >::RET PreviousFactorial;
enum { RET = (n ==0)
? PreviousFactorial::RET
: PreviousFactorial::RET * n};
};
=========
以上