アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
Re: 珠玉の力作 (スコア:2, 参考になる)
うーん、とも言えない。
・Pascalの従属サブルーチンの場合は違うけど、Pascalでサブルーチンをベタに書く場合やCの関数の場合、手続き/関数は全く別のスコープを持っている
・手続き/関数がサブルーチンになる場合、サブルーチンコールのオーバーヘッドが発生する(アーキテクチャ的なものとその言語処理系の実装的なものの両方)
・手続き/関数がインラインに展開される(サブルーチンコールとならない)場合、ソースとオブジェクトで相違が発生する。(まああまり気にする事も無いかも。マシン語やアセンブリ語レベルでデバッガやICEを使う人が困る程度かな?)
必要なのは処理の抽象化だわね。ループや手続き/関数、あるいはマクロはその実現手段にしか過ぎないんであって、その優劣は状況により変化すると思うよ。
珠玉の力作に関して言えば、リスト9-8は論外つーか酷すぎる。コーディングの労力を減らす場合、これに近い事をやらないとは言わないけど、それはもっと複雑な処理でループやサブルーチンに括るのが困難な場合だわね。扱うパラメータが異様に多いとか。その場合でもこうベタには書かずにマクロを使うだろうけど。
リスト9-10は、確かに書いてある条件が成立するなら動くコードだろうけど、ぼく的にはfor文を吹っ飛ばす所までやるかは極めて疑問。じゃなくて、論理圧縮についてのみ述べれば良かったのに、とは思うわね。
Re: 珠玉の力作 (スコア:1)
そうですねぇ。どうもインライン化されるような動きしか、頭に無かったですわ。
まぁ、それ以外にも、繰り返しの中身は比較的他の部分で使いたくなる
ことが多いので、関数化しておくほうがいいってのが、私の経験則です。
しっかし…。
この方、「Cプログラミング診断室」という、なにやら作法めいた
本の作者なのですね。
本を書いている人なら、もう少し、論点に絞った文章というのに、
心がけるものだと思っていましたが…。
まぁ、論理圧縮を心がけるということは、そのとおりですから、
おかしな部分はあくまで例示だけですけども…ねぇ…。