Categories |
CPUの創りかた |
Modern Compiler Implementation in ML |
NerdTV |
PDP-11シミュレータで古代のUNIXを動かしてみる |
The Yakumo Project |
やさぐれ読書録
最近のツッコミ:1.Dominic(2008-06-23 05:05)
2.CheapestCheapOEMoem(2008-06-17 03:00)
3.NewDownloadCreativAdobOEM(2008-06-12 20:00)
最近のトラックバック:1.濃縮還元オレンジニュース:プロ.. (2006-12-22 22:02)
"オープンソースカンファレンス2005"の帰り道に藤澤さんとこんな話をした:
ちょうど手持ちのテストプログラムを見直していた最中だったので、具体例としてこれをネタに少々お話を。去年の12月ごろに、変数の依存性解析のサブルーチンをテストするプログラムを書いていたのだが、似たようなコードのコピーが続く関数が並んでいたのがどうにも気に食わず、なんとかしたいなぁと考えていた。
ということで、今週はこのテストプログラムを相手に、類似するコードを切り出しては束ねるという作業を繰り返しながら、無駄をどんどん切り取っていった。これ自体はJavaなどのプログラミング言語でもよくやる作業なのだが、MLなどの関数型言語だと、パラメータに(変数だけではなく)関数をとることが出来る、という特徴があるので、これを有効に使う。結果:
サイズは修正前92行に対して、修正後は40行。さすがに「3分の1まで縮められる」は大げさだったか。元のコードもとにかく冗長だったし…いや、"showDefUse"と"showInOut"の二つの関数を共通化すれば、今よりもさらに小さくできるハズだ、などと考えている間に今週は終わってしまった。寄り道もほどほどにしなければ。