Index: [Article Count Order] [Thread]

Date:  Tue, 7 Nov 2000 12:23:10 +0900
From:  Kenji Hiranabe <hiranabe@....jp>
Subject:  [XP-jp:01148] Re: C プログラミング診断室というのがありました
To:  extremeprogramming-jp@....jp (extremeprogramming-jp ML)
Message-Id:  <20001107121742X.hiranabe@....jp>
In-Reply-To:  Your message of "Sat, 4 Nov 2000 12:24:58 +0900"	<000001c04610$6bd02cc0$010400c8@Ra20>
References:  <000001c04610$6bd02cc0$010400c8@Ra20>
Posted:  Tue, 07 Nov 2000 12:17:42 +0900
X-Mail-Count: 01148

おおむらさん,太田さん,
平鍋です.

いつも有用な情報ありがとうございます.

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};
};

=========

以上