言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

cola/flash c3 port

仕事の記録を書く。

ここ三週間、Flash むけ自作コンパイラを移植する作業をやっていた。このコンパイラは先週書いたようにこれまた同僚の作った開発中の言語、コードネーム cola の上で動いているのだが、なんせ開発中なのでがらりと変更がおこる。これまで何度かこのような作業をしている。

移植作業は 2月22日(月曜日) に始めて今終わったので丸三週間かかった。なんか無駄な作業だなーという気もしないでも無いが、今まで気づかなかったバグを修正する事が出来た。特に関数引数の評価順が左右から右左に変わったので、評価順に依存していたコードを直せたのが良かった。また、アセンブラ部分は他の Scheme でも動くので移植性が上がった。

移植に当たってテストケースが非常に役に立った。また、cola は C 言語みたいに関数を使用する前に定義しておかないといけない約束がある(循環参照はダミーの定義が必要)ので自然と低レベルな関数から書き始めて最後にメイン処理が来るという構造が出来上がる。この網羅的なテストケースとボトムアップな構成がプログラムの移植には大変威力を発揮する事が分かった。これが無かったら移植だけで二ヶ月くらいかかっていたかもしれない。

今回三週間も移植にかけてしまったが、途中風邪を引いたり Kindle に夢中になったりしなかったら、もうちょっと早く終わっていたと思う。