++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

Roslyn

with 2 comments

MS、コンパイラをサービス化する「Roslyn」の詳細公開へ」 ← このタイトル・この内容を見て、絶対勘違いする人いるだろうなぁと思ってたら、やっぱりはてぶが素敵なことに。“Web” サービス化だと思われてる節が。

サービス化

サービスっていうと Web サービスのイメージが強いですよねぇ、そりゃ… あと、「as a Service」って付いてるクラウドの分類方法が多いですし… 違うんですけどもね。クラウド(直接は)関係ない。

Roslyn のいう as a Service ってのは、monolithic (一枚岩で分割不可能な巨大システム/アプリ)の対義語としてのサービス。「中身をブラックボックスにしない」、「処理単位ごとにプログラム的に参照可能」という意味。なので、Roslyn(というコードネームが付く以前)の旧称 Compiler as a Service は以下のような意味:

  • 「ソースコードを入れたら(中間なしでいきなり)バイナリが出て来る」というブラックボックス状態の解消
  • lexer, parser, analyzer とか、内部クラスの公開
  • Visual Studio (のコード補完、リファクタリングなど)と C#/VB コンパイラーとで起きてた2重開発の解消
  • コンパイラーの完全 .NET 化(C# コンパイラーを C# で、VB コンパイラーを VB で書き直すそうで)
    • 今までネイティブ実装で、ライブラリ的に使いにくかった
    • プラグインとして使うのもやりにくかった
    • Silverlight とか Azure で使うのもやりづらかった

Roslyn で何が変わるの?

内部構造の公開 & .NET 化 で何ができるかというと:

REPL

Read-Eval-Print Loop、要するに、いわゆるコンソール。C# や VB.NET で、1ラインずつ結果を確認しながらの実行が可能。

もう、「コンパイル型の言語だから面倒」とか言われる心配もなくなるわけです。

C#/VB のスクリプト言語化

ついに、VBA とおさらばの時か!

いわゆるマクロ言語的に、C# や VB をアプリケーションに組み込めます。

write-your-own リファクタリング

Visual Studio の IDE の方は、今、拡張マネージャーって機能を使って、自由に自作/サードパーティ製の拡張をインストール可能なわけです。

そういう IDE 拡張を使って、C# や VB のコード整形/静的コード解析がやりやすくなります。

広義にはクラウド化?

今まで、ネイティブ実装がネックになって、Silverlight 中や Azure 上で C# コードをコンパイルするのがかなり大変だったわけですが、それが可能になるはずです。

件の ZDNet の記事には “taking .Net to the cloud.” とか書かれてるわけですけども、多分、意味合いとしてはこういう意味(Silverlight や Azure にも乗せやすい)かなぁ… 別に Azure でなくても、レンタル サーバーなんかでも乗せやすさだいぶ違いそう。

部品化されているので、部分的な Web サービス化(リファクタリング サービスとか)もできるはずだけども。

言語内 DSL

Roslyn リリースからさらに1テンポ遅れてになるとは思うものの、C# や VB に言語内 DSL を埋め込める可能性も。

例えば、以下のような機能はビルド時コード生成を必要としていて(あんまり実行時にやりたくない/実際 IL 書き換えで実現してる)、Roslyn があると大分作るの楽になるはず:

  • MVVM パターンで煩雑になりがちな ViewModel の生成
  • Code-First 的な、POCO からのエンティティ クラス生成
  • 契約プログラミング(Code Contracts)

今でも、T4テンプレートみたいなものを使ってビルド時コード生成できるわけですが、あれをもうちょっと、C#/VB と親和性のある書き方で書けるようになりたいというのもあり。

Written by ufcpp

2011年7月22日 @ 15:36

カテゴリー: .NET, C#

コメント / トラックバック2件

Subscribe to comments with RSS.

  1. あとは F#-to-JS とかもやりたいですねー. 今だとロード時に頑張っている属性情報の解釈を手前にもってこれるのはよいなーと思います.

    morita

    2011年7月23日 at 00:10

  2. […] が何であるかについては ufcpp さんが既に書かれてた記事 があるのでそちらを見てもらうとして、Compiler […]


コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。