青柳臣一 blog : .NET や C# がメインの blog

.NET や C# がメインの blog
投稿数 - 548, コメント - 259, トラックバック - 205

Microsoft Research から Cω (シー・オメガと読むらしい)の preview 版コンパイラがリリースされました。
ま、このこと自体はすでにいろいろなところで取り上げられてますね。
http://blogs.users.gr.jp/naka/archive/2004/07/15/3760.aspx
http://blogs.sqlpassj.org/yoneda/archive/2004/07/16/3380.aspx
とか。

Cω のまとめページはこちらみたいです。
http://research.microsoft.com/Comega/
これによると、どうやら Polyphonic C# と Xen(もとは X#)の両方を実装したコンパイラのようです。 

ダウンロードは http://research.microsoft.com/research/downloads/default.aspx の "Comega compiler preview" から行うことができます。

で、さっそくこの preview をダウンロードしてセットアップしてみました。
セットアップ後の様子を見てみると、

  • VS.NET 2003 に "Comega Projects" が追加される。(この PC には VS.NET 2002 も入ってますが、そちらには Cω プロジェクトは追加されませんでした。VS 2005 は入ってないのでわかりません)
  • Cω プロジェクトの拡張子は .cwproj。
  • Cω のソースの拡張子は .cw。
  • Cω のコマンドライン版のコンパイラは cwc.exe。
  • GAC に Cω のランタイムがいくつか追加される。
  • とりあえず、現時点では Cω の再配布用ランタイムは見当たらない。(なので、Cω なコードを実行するにはこの preview を入れておく必要があります)
  • この Cω は C# 2.0 コンパイラをベースにしているみたい。

こんな感じでした。
個人的には最後の項目が気になりました。Cω は C# にいくつかの機能を追加したものという位置付けのようです(今のところは)。となると、C# 1.x をベースにしているのか C# 2.0(Beta)をベースにしているのかで C# 自体の機能が違います。そこで、VS.NET 2003 の Cω プロジェクトで Generics や Anonymous Method を使ったコードがコンパイルできるのかどうか試してみました。試してみたのは以下のような単純なコードです。

using System;
 
public delegate void D<T>(T t);
 
public class A<T>
{
    private T val;
    
    public A(T t)
    {
        this.val = t;
    }
    
    public void Func(D<T> d)
    {
        d(this.val);
    }
}
 
public class Test {
    static void Main() {
        A<int> a = new A<int>(999);
        a.Func(delegate(int n) { Console.WriteLine(n.ToString()); });
    }
}

その結果、きちんとコンパイル・実行できました。なので、この Cω compiler preview は C# 2.0 をベースにしているようだ、と言えると思います。

で、よくよく考えてみたらこれってかなりうれしいかも。
この PC には、VS.NET 2002、2003 しか入ってませんし、当然 .NET Framework 自体も 1.0 と 1.1 しか入っていません。VS 2005 も .NET Framework 2.0 も入ってないんですよね。なのに Cω を使えば Generics や Anonymous Method が使えるようになっちゃいました。

投稿日時 : 2004年7月16日 14:50

トラックバックは下記のURLにpingを送信してください。
TrackBack URL: http://www.divakk.co.jp/blog/aoyagi/services/trackbacks/546.aspx

フィードバック

# re: Cω

>なのに Cω を使えば Generics や Anonymous Method が使えるようになっちゃいました。

それちょっと嬉しいかもw
比較的安全に、普段の開発環境で Generics して遊ぶことができますね ;-)
2004/07/16 16:00 | 渋木宏明(ひどり)

# re: Cω

あれ、Generics は、IL ベースで対応していたはず。
ということは、なぜに .NET 1.1 で動作するんだろう
2004/07/20 18:18 | 河端善博

# project-web by Meshi@myServer - Meshi Log : C??(??????????)(research.microsoft.com)

project-web by Meshi@myServer - Meshi Log : C??(??????????)(research.microsoft.com)
2004/08/18 0:11 | Pingback/TrackBack (トラックバック)

# [.NET][programing] Cω再び・・・

なんかいろんな人が気にしてるみたいで、 それを読んでたらまた気になって、再びCωについて調査することに。 今回は、論文にだけでなくプレビュー版をちゃんと使ってようと決心。 データベースアクセスがど ...

# re: Cω

TechEd 2004 Yokohama の INETA パネルセッションで、パネラーとして参加していただきありがとうございました。
短い時間でしたが、おもしろい方々の意見をききつつ、Cωプレビューができて、とても楽しい時間でした。
また、よろしくおねがいします
2004/09/13 22:37 | 河端善博

コメントの投稿

タイトル  
名前  
URL
コメント   
Protected by Clearscreen.SharpHIPこの絵に表示されている文字列を入力してください (半角で4文字です):