DLRにおけるオブジェクトその2
タイトルの付け方が拙かった気がしますが、続きなのでそのまま放置。(^^;
http://blogs.msdn.com/hugunin/archive/2007/05/04/the-one-true-object-part-2.aspx
IronPythonの作者による解説の続き。
要点をまとめると、
- 静的、動的問わず各言語は独自の型システムを持っている
- 例えばC#なら静的な型、単一継承、Pythonなら動的な型、多重継承、JavaScriptならプロトタイプベース
- 型システムに違いがあれど、メッセージパッシングの視点で見るとこれらの言語は共通性を持っている
- DLRはメッセージパッシングをベースとした型システムを構築する
- 静的言語(C#など)に対しては、C#3.0やVB9の拡張メソッドの強化版によって型を変更せずにメソッドを追加する
- 例えばCLRのStringオブジェクトは、拡張メソッドによってPythonのtitleや__class__、__get__メッセージに応答可能になる
- 強化版拡張メソッドは、スコープは限定されず(C#などはファイルスコープ)、プロパティやオペレータも対象とする
- 動的言語に対しては、IDynamicObjectインタフェースによって更に動的なメッセージハンドリングを可能にする
- 現状のDLRのコードはこれからリファクタリングを行うので大きく変更される可能性がある
全部翻訳する気力がないので、ポイントだけ箇条書きにしました。