違う言語間の移植

 昨日のエントリで手続き型の言語からオブジェクト指向言語へ移植するときも手続き型っぽく作るべきと言った真意(というほどたいそうなものでもないが)について書きたいと思います。

 これは、私が「一番手っ取り早くて正確」と思っている手法です。

 まず、移植前のプログラムをそのまま移植後の言語のコンパイラに通します。



 通るわけないですね。



 あとは、通るまでそれぞれの行を移植後の言語にあった書き方に書き換えていきます。Java に移植するなら Eclipse であの赤い波線をどんどん減らしていく作業になるわけです。案外楽しいです。


 これでかなりカバーできます。特に移植後の言語がオブジェクト指向言語ならば、移植前の言語に特殊な型があったとしても、シミュレートするクラスを作ればかなり対応が効きます。作らなくてもビルトインのもので対応できたりしますし。

 あとはこれに対してユニットテスト等を書いてからオブジェクト指向らしくリファクタリングすればいいのです。



 よくはたから見られて「何やってんの?」なんていわれることもありますが、ロジックのよくわからないプログラムで、この手法以上に正確で素早い移植ができた人を(普段から超絶な人を除き)見たことがありません。