#Script プロトタイプベース?
いまの #Script での継承はプロトタイプベースとクラスベースを混ぜたようなものだが、ECMAScript のようなより純粋なプロトタイプベース形式にした方がやはりいいような気がしてきた。
まぁそもそも一般的にスクリプト言語でオブジェクト指向をやるならクラスベースよりプロトタイプベースの方が美しいんだけれども、#Script ではオブジェクトの種類を区別するためにクラスの概念も組み入れた。でも今ではクラスの存在がオブジェクトのあり方をそれ以上に拘束している。ゆえに、もっとクラスの力を弱めたい。
そもそもオブジェクトの種類が区別できればクラスという概念自体が要らないわけで、何かうまい代替方法はないものかと。
ちなみになぜオブジェクトの種類の区別が必要なのかというと、数値とか真偽値とか、実行環境が直接内部で扱う値 (今の #Script でいうところの原始型の値) を表すオブジェクトを他のオブジェクトと区別しないとそもそも演算が定義できないから。ECMAScript では「Number 型の値」と「Number オブジェクト」という二種類の実体を使い分けているが、これは混乱を招くので #Script では避けたい。また、こういうオブジェクトのメンバが自由に変更可能だといろいろ実装時にうれしくないことがあるので、やはりこういう特殊なオブジェクトは変更不可能にしたい。
となると、今の #Calc の実装内部ではこれらのオブジェクトを変更可能な普通のオブジェクトとそうでない特殊なものという風に明確に区別しているのだが、その区別を #Script にも取り込んでしまうのがよかろうか。仕様書を実装に合わせて書き換えるというのは本意ではないが、仕様がより美しくなるのならそれもありだろう。
ただ、この件に関してもよく考えないといけないな。実際やるとすれば、今回ほどではないにしても大幅に仕様書を書き換えることになるから。
| 固定リンク

コメント