2008-09-15

ヘボ言語で多態

本日は敬老の日でお休みです。

salで階層化格子を使った当たり判定を書きました。

でも肝心の物体管理部分がなかなか書けません。多態性を表現する機能が無いのが痛すぎます。salでこのような継承関係を表現するにはどうしたら良いのでしょうか。

  • 種類ごとに別々に管理する
  • すべての種類を内包できるルーズな構造を用意する

その方面には詳しくないんですが、O/Rマッピングとかではどうしてるんでしたっけ?

種類ごとに別々に管理するのは、将来的に何が増えるか分からない状況では抵抗があります。種類ごとに同じような管理コード(特に未使用IDの管理)を量産するのは苦痛です。templateや、そうでなくても動的に色々やる機構があればうまくまとめられるかもしれませんが、salには当然そんなものはありませんし。

次善の策はある程度余裕を持たせたルーズな構造で継承ツリー全体をカバーしてしまうことでしょうか。ただ、言語仕様上種類によって変数名を変えるようなことは出来ないので、かなり嫌なことになりそうです。lparam, wparamみたいな。ただ、メソッド呼び出し前に別の一時変数へデータをコピーし、呼び出し後に元へ反映させるような仕組みを入れれば多少書きやすくなるかもしれません。オーバーヘッドは伴いますが。

一番良いのは、もっとちゃんとしたプログラミング用の言語を作る、ということなのですが……。