« Visual C++ 2008 has no support for Windows 9x | メイン | 機動戦士ガンダム00 #06: セブンソード »

Visual Basic/C# 2008 の目玉商品

今回の Visual Studio 2008 の多分、最大の目玉は LINQ です。LINQ というのは Visual Basic/C# 双方に適用される新規の構文です。LINQ の Visual Basic に関連するまとまったアーティクルは MSDN マガジン記載の 『Visual Studio "Orcas" でのクエリの性能を最大限に引き出す』 というアーティクルです。初期の仕様に基づいていますがアーティクルとしては十分に使えます。

関連したアーティクルでは『基本的な本能:拡張メソッド』, 『基本的な本能:ラムダ式』 も面白いです。それぞれ11月号、9月号の記事です。ただ、十分な分量がある記事なので暇な時に読むでいいかとおもいます。どちらも、LINQ を導入するために Visual Basic に追加された機能です。LINQ とは要するに SQL や XML への問い合わせを Visual Basic/C# で書く機能です。で、これを実現するために後付け的にクラスの機能を拡張する"拡張メソッド"と特殊な delegate という形でラムダ式が導入されたというところです。

ラムダ計算はメソッドの定義と実行を抽象化した計算体系です。これは理論としては 1930 年代に考案された比較的古参の話です。元々は関数型プログラミング言語の論理的な基盤です。実際、Microsoft Research の F# 言語の本である Foundations of F# でも pp24, 26 と比較的前のページで出てきます。

この拡張メソッドとラムダ式が取り入れられた経緯は 2007 年 6 月号の『C# 3.0: LINQ の進化の過程と C# のデザインへの影響』がよいアーティクルです。LINQ の Visual Basic でのサンプルは 101 LINQ Samples という MSDN のサンプル集がいいでしょう。C# のコードは先の MSDN マガジンのアーティクルも面白いです。

例えば、Visual Basic 2008 で db.Customers から ContactName と Phone を抽出する動作は 101 LINQ Samples の Select - Anonymous Type 1 のサンプルからこのように書けるとされています。

Dim q = From c In db.Customers Select c.ContactName, c.Phone

これを C# で書き換えるとこのようになるでしょう。

var q = from c in db.Customers select new { c.ContactName, c.Phone };

単純に言うと今までだと、ADO.NET とかを使ってぐだぐだと書いていた問い合わせを言語の枠内で書けます。で、それを実現するために拡張メソッドや型推論などが使われています。例えば、型推論がなければ特に C# で LINQ の問い合わせの中身の型がなんであるか頭を痛めることになるでしょう。この場合、型推論が効くので C# で q なる変数は object 型ではなく何らかの特定の型として取り扱われます。そうでないと鬼のようなキャストがあちこちで発生し大変見づらいコードになるでしょう。

Foundations of F# (Expert's Voice in .Net) Foundations of F# (Expert's Voice in .Net)
Robert Pickering

Apress 2007-05-28
売り上げランキング : 14833

Amazonで詳しく見る
by G-Tools
入門OCaml ~プログラミング基礎と実践理解~ 入門OCaml ~プログラミング基礎と実践理解~
OCaml-Nagoya

毎日コミュニケーションズ 2007-05-22
売り上げランキング : 131664

Amazonで詳しく見る
by G-Tools
Technorati のタグ:
このエントリーをはてなブックマークに追加 Save This Page to del.icio.us このエントリーをlivedoorクリップに追加 このエントリーをニフティクリップに追加 このエントリーをBuzzurlに追加このエントリーをBuzzurlに追加 このエントリーをFC2ブックマークへ追加 このエントリーをnewsingへ追加 このエントリーをYahoo!ブックマークに追加

トラックバック

このエントリーのトラックバックURL:
http://www.cworld2000.com/cgi-bin/mt/mt-tb.cgi/356

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年11月08日 13:45に投稿されたエントリーのページです。

ひとつ前の投稿は「Visual C++ 2008 has no support for Windows 9x」です。

次の投稿は「機動戦士ガンダム00 #06: セブンソード」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

検索

この Weblog について

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.35