C# 4.0とdynamic

 C#のコア部分は3.0でほぼ完成していて、4.0にはちょっとした地道な改良が乗るだけだ。それでも変化としては結構大掛かりで、Javaなら大もめにもめて結局乗らず、C++なら10年後にようやく仕様が完成するぐらいの改良はやってると思う。C#は言語設計が身軽でいい。Anders Hejlsbergが全権を掌握できているから可能なのだろう。それもこれも他社製品の方が自社製品より優れていることを認める潔さと、その設計者を引き抜いてきて開発環境製作の全権を委ねるド汚い腕力を持ったMSだから為せる業なのだろう。Visual C++よりDelphiが優れているというのがMSの公式見解であるということは多くのITドカタに知られるべき事実だ。

 4.0には動的オブジェクトを使える機能が乗るが、C#を真面目に使ってきた人間は通常のプログラミングには使わないだろう。静的型より動的型の方が便利に感じるのは型に対する思索が足りてないだけのことだ。しかし多分この思索の難易度は、

ポインタが理解できる(C言語を使える条件)<通常のロジックを再帰で書くことが出来、しかもその変態的行為に喜びを感じる(関数型言語を使える条件)<静的型が理解できる(C++,Java,C#が使える条件)

 関数型言語に対する適性よりもなお稀有だと思う。この静的型を理解できるというのが大規模実用プログラムの設計者になれるかどうかの境目で、クリアすれば年収ウン千万にもなるという能力だ。

 一般人はポインタも理解できないので、動的型言語は多くの人に使われる。

 言語は生き物だし、人の脳には適性がある。ポインタを理解できなくてもJavaC#はそれなりに使うことは出来る。そういう人々にとっては、おそらく、動的型の方が書きやすい。このdynamicという文字列がソースのそこら中を埋め尽くすのも自然な成り行きだろう。パンドラの箱というか玉手箱というか、絶対に開けてはいけない箱を開けてしまった感がある。

 この先にあるのはおそらく、名前を指定してのリフレクションがハッシュテーブルを使ったものになって高速化して、dynamicにinterfaceをつける事が可能になりIDEサポートを得る、ポインタを理解できない彼らのためのC#の改良、ということになる。Anders Hejlsbergがどういう舵取りをするのか、動的型をどこまで受け入れるのか、気になるところだ。