米Microsoft Corp.が2008年10月27~30日に米Los Angelesで開催している開発者向け会議「Professional Developers Conference 2008(PDC 2008)」で,.NET Frameworkにおける主要なプログラミング言語である「C#」の将来について,その父であるAnders Hejlsberg氏が説明した。
C#は最初の誕生からほぼ10年が経過した。2.0版でGenerics(汎化)の機能を入れ,3.0版で言語にデータベース検索機能を統合してきた。次の発展として,まずHejlsberg氏は言語の三つのトレンドを説明した。一つが動的な特性,次に関数型プログラミング機能,そして第3が並列プログラミングであると指摘した。これらのうち,「関数型プログラミング機能は既に取り入れている」(Hejlsberg氏)として,4.0版では主として動的な特性に力を入れると語った。
その背景には,Microsoft社のRIA(rich internet application)実行環境である「Silverlight 2.0」で導入した,「Dynamic Language Runtime」の存在がある(Tech-On!関連記事)。Silverlight向けのアプリケーション記述言語として,PythonやRubyといった動的なプログラミング言語に対応するため,.NET Frameworkの拡張として導入されたものだ。この機能を利用することにより,C#も動的な言語に発展する。
ただしPythonやRubyとは異なり,「あくまでも静的なデータ型付けは維持する」(Hejlsberg氏)。従って特定のデータに対して,動的な型変更を許すための修飾子である「dynamic」を導入する。いわば,「動的データ」というデータ型を静的に宣言するという感じだ。
これに伴い,.NET Framework以前のオブジェクト・モデルである「COM(component object model)」との互換性を強化する。COMは現在でも「Microsoft Office」と連携したプログラムを記述する際に使われているもの。COMのデータ型はもともと動的に変化することを前提として作られていたため,.NET Framework環境下で連携させるには多少記述が煩雑になる傾向があった。動的データ型を拡張する形でCOMオブジェクトを扱えるようにしている。
またコンパイラを.NET Framework上で実装し,プログラムから利用できるようにする。これにより,プログラムの一部にコンパイラを組み込むことができる。コンパイラを利用するためのインタフェースなども公開する。このような実装に変更するのは,DSL(ドメイン特化言語)やメタ・プログラミングなどに対応するためだ。「Rubyが最近流行するきっかけとなった『Ruby on Rails』を見てもわかるように,動的なプログラミング言語だから受けたわけではなく,メタ・プログラミングがしやすいから受け入れられた。そのための機能を取り入れる」(Hejlsberg氏)。