BT

提案: C#で動的型付けを扱う折衷案

| 作者: Abel Avram フォローする 10 人のフォロワー , 翻訳者 能仁 信亮 フォローする 0 人のフォロワー 投稿日 2009年11月15日. 推定読書時間: 2 分 |

原文(投稿日:2009/11/12)へのリンク

Headspring SystemsのCTOであるJeffrey Palermo氏は、C#で動的な性質を扱う折衷案を提示した。メソッド全体を動的にすることを可能にしつつ、アセンブリを静的にたもつ方式だ。

Palermo氏は、最近行われた静的型付けvs動的型付けに関する議論について言及し、動的プログラミングは、ライブラリを利用するようになると次の理由から扱いづらくなると述べている。

ドキュメントが豊富で完全なもので無い限り、そのライブラリが何をサポートするかを本当に知ることはできません。オブジェクトを利用する際に、そのオブジェクトでは、どういったプロパティやメソッドが利用できるのかを記述したインターフェースの型もないのです。ドキュメントがすべてのAPIをカバーしていないのであれば、それがどう振る舞うかを調べるテストを書かないといけないのです。

彼が考える別の問題は次のようなものだ。

動的言語をつかっていると、プログラムを組むために、システムに関してより多くのことを頭の中にいれておかなければならないのです。どのオブジェクトがどのメソッドをオーバーライドしているのか、どのオブジェクトが新しい機能をもっているのかといったようなことです。

これらの問題はどれも、外部のライブラリを利用しなければならない際に問題となるが、自分のコードだけで完結している場合は、コード自身を所有しているので、それほど問題とならないだろう。

C# 4.0ではdynamic lookupが導入され、開発者は動的型付けのオブジェクトを宣言できるようになっている。この機能は、PythonやRubyといった動的言語から開発者が簡単にオブジェクトを扱えるようにしたり、IDispatch経由でアクセスするCOMオブジェクトや、HTMLやDOMのように変化する構造をもつオブジェクト、リフレクションで取得された.NETの型などを扱いやすくすることを意図されたものだった。動的な型をもつオブジェクトは、いくつかの制限付きで、動的言語で通常利用されるように使うことができる。

Palermo氏は、明示的に動的だと個別に宣言することなく、メソッドの中のすべてのオブジェクトを動的な型として扱えるdynamicキーワードをC#に導入するように提案している。これによって動的型付けを好む開発者はC#の中で自由に使える一方、安全のために言語をアセンブリの境界のレベルでは静的にたもつことが可能になる。

これは望ましい折衷案なのであろうか?

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT