BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

Roslynの舞台裏

| 作者: Jeff Martin フォローする 19 人のフォロワー , 翻訳者 (株)ネクストスケープ フォローする 0 人のフォロワー 投稿日 2012年1月9日. 推定読書時間: 3 分 |

原文(投稿日:2011/12/07)へのリンク

 

MicrosoftのChannel 9で、Roslynプロジェクトの主要開発者へのインタビューが公開されている。 チームのねらいと取り組んでいる内容について、Karen Ng氏、Matt Warren氏、Peter Golde氏、Anders Hejlsberg氏が有益な情報を提供している。

独自のリファクタリングツールを作りたいと考えている開発者が、C#コンパイラ構築の難しさに制限されていることが、チーム内では分かっていた。Hejlsberg氏は「私は、多くの人が独自のリファクタリングを作りたい、または、そんなに難しくなかったら、やってみたいと考えていると思う。」と述べている。Roslynプロジェクトのねらいは、C#とVisual Basicの開発者にコンパイラと、コンパイラのプロセスを開放して、敷居を低くすることにある。

パフォーマンス

Roslynプロジェクトはマネージコード(C# か Visual Basic)で記述されているため、パフォーマンスが低下するのではないかとの質問がある。Hejlsberg氏 とNg氏は、 アセンブリがメモリ内に保持されるため、ASP.NETの開発ではRoslynがサーバで動くことでパフォーマンスの利点があると答えた。Golde氏は経験的に、Roslynがメモリに多くのデータを保持してコンパイルする時、幾つか(10~30)の小さなプロジェクトを含むソリューションではパフォーマンスが向上すると言っている。Warren氏は次のように付け加えている。 RoslynではないC#コンパイラはとても速いが、全体のパフォーマンスを比較するにはまだ早すぎる。これからテストや開発作業が続くためである。

Hejlsberg氏は、現在のC#コンパイラが主に1つのコアを使用するのに対し、Roslynのコンパイラは並列であることについて言及している。マルチコアで動作するコードについては、内部アーキテクチャの機能設計段階から考慮されていた。Hejlsberg氏は「今度はコンパイラをどのように実装するかについて検討している時に、(使っていた)関数プログラミングから多くのことを学んだ。」とコメントしている。その他の例として、Roslynは互いに並列にコンパイルされ、完全に独立しているC#のメソッド本体を利用できることが挙げられている。

リファクタリングを超えた利用

Ng氏は次のように指摘している。多くの開発者がC#やVBをサポートするパーサーを必要としている。また、C#を組み込みのスクリプト言語として使えることがアプリケーションのニーズとして存在している。Hejlsberg氏は、他の重要な領域はメタプログラミングであり、コンパイラがサービスを提供すれば、ユーザーとの対話において多くの可能性があると考えている。

Hejlsberg氏によれば、メタプログラミングは「プログラムを生成するプログラムである」と説明している。テンプレートプログラミングについて聞かれると、C++のテンプレートはC++とC++テンプレート仕様の2つの言語を含んでいるようだとHejlsberg氏は答えている。これと比べてRubyのような動的プログラミング言語では同じオブジェクトとメタ言語を使用している。Hejlsberg氏によると、Roslynでは新しい言語や特殊な言語を学ぶことなくC#拡張としてC#同様に動作する、と述べている。

C# と VBコンパイラの実態

また、Roslynプロジェクトは自社製品の使用を実施することで”ドッグフーディング”の量に貢献している。Golde氏は「C#でC#のコンパイラを書くことが面白いとはいえ、VBでVBのコンパイラを書き続けている。正直なところ私たちは内部で多くのVB開発を行っていない。これは最も大きなVBで書かれた”出荷コード”の一部である。」と述べている。さらにWarren氏は、以前2つのコンパイラ(C# と VB)はC言語で書かれており全てのコンパイラ開発者はC言語のエキスパートであったが、コンパイラを書く言語エキスパートは必要でなくなる。と述べている。Hejlsberg氏は、Roslynコンパイラのセルフホストは、Microsoft開発者が「自分で作る素晴らしいもの」により詳しくなる状況を導いていると述べている。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには 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でリプライする

ディスカッション
BT