からだのブログ

五体満足に生まれてきたことに感謝してブログの名前を「からだ」にしました。

からだのブログ header image 2

C#4

4月 18th, 2010 · No Comments · .net

C# 4 で変わった事。

印象深いのは dynamic キーワード。静的型付プログラミング言語である C# で、動的型付プログラミングっぽい記述を可能にする。

うーん、なんか違うんだよな。何かが。動的なプログラミング言語がちょっと前から人気者になってて、 CLI がそれをサポートするようになる。この流れは仕方ないかもしれない。そうなんだけど、問題はそこからで、「CLI でもサポートしてるし、 C# でもサポートしちゃえばよくね ?」みたいなノリを感じてしまって、どうにもいやだ。普通に溶け込みすぎてどうにも。

たぶん、GetType() とか InvokeMember() とかに変換されるだけで、実際の内部的には大した変化ではないのかもしらん。だけど、C# 3 までの、あのまどろっこしい記述によって、「場合によっては失敗しちゃうかもね、テヘッ」ってのをちゃんと意識できたという面がある。それによって、異質な対象(動的な型)に対してプログラミングをしているという意識も生まれたわけだ。

でもどう考えてもラクちんだから、 C# 4 ではそれを全部無くしてしまえと。そうなんだけど、今までの C# の変遷を振り返ると、

C#2 のジェネリックは型安全なコレクションクラス群を提供してくれました。ああ、みんなハッピー。

C#3 の Linq とそれをサポートするための var やら何やらは、リストの処理を関数型言語っぽくエレガントに記述する方法を提供してくれました。ああ、みんなハッピー。

C#4 の dynamic キーワードは、、、うーん、便利だけど、これって C# を使う様々な局面に共通するようなことか? 俺にはそう思えない。それだったら、IronPython で CLI 叩いてるほうがいいんじゃね? って思う。 C# を拡張する必要があったんかな、って。

そういえば、何かのドラフトだったか、blog だったかで見た dynamic { foo.bar(); } これならなんとなくよかったかも。 unsafe { } みたいに。何か特別なことをやっているというのがすぐにわかるから。って、拡張したこと自体がまずかったのか、その方法がまずかったのか、いまいちフォーカスしている部分がわからん内容になってしまったが。。。

あ、名前付きパラメータ、これはいいと思う。うん、こういうの。うん、いいと思うな、いいと思うよ! オーバーロードするときにうまくやらないと大変なことになりそうだけどw

Tags: