トップ «前の日記(2005-03-26) 最新 次の日記(2005-03-31)» 編集

Rogue Engineer's Diary / やさぐれ日記

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)

2004|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|09|

2005-03-27

[Modern Compiler Implementation in ML] テストコード見直し(脱線編)

"オープンソースカンファレンス2005"の帰り道に藤澤さんとこんな話をした:

  • 藤澤さん:「Standard MLの特徴ってどんなところですか」
  • 福盛:「とにかくタイトに書けるってところでしょうかね。最初にテキトウに書き下ろした後、コードを見直していくと、どんどん小さくなっていくんですよ。極端な場合には元の大きさの3分の1くらいまでに縮められることもあります」
  • 藤澤さん:「へぇ」

ちょうど手持ちのテストプログラムを見直していた最中だったので、具体例としてこれをネタに少々お話を。去年の12月ごろに、変数の依存性解析のサブルーチンをテストするプログラムを書いていたのだが、似たようなコードのコピーが続く関数が並んでいたのがどうにも気に食わず、なんとかしたいなぁと考えていた。

ということで、今週はこのテストプログラムを相手に、類似するコードを切り出しては束ねるという作業を繰り返しながら、無駄をどんどん切り取っていった。これ自体はJavaなどのプログラミング言語でもよくやる作業なのだが、MLなどの関数型言語だと、パラメータに(変数だけではなく)関数をとることが出来る、という特徴があるので、これを有効に使う。結果:

サイズは修正前92行に対して、修正後は40行。さすがに「3分の1まで縮められる」は大げさだったか。元のコードもとにかく冗長だったし…いや、"showDefUse"と"showInOut"の二つの関数を共通化すれば、今よりもさらに小さくできるハズだ、などと考えている間に今週は終わってしまった。寄り道もほどほどにしなければ。

Name / お名前:
E-mail:
Comment / コメント
(To English posters: please do not remove the extra characters in the comment area):
本日のリンク元


福盛秀雄/Hideo Fukumori

Visitors Count: 230(yesterday) / 83(today) / 276383(total)