MIX 08 のあと急に本業が忙しくなってしまい更新が遅れてしまいました。
言い訳になりますが、MIXのような大きな発表のあとはFeedbackとバグレポート、またFeedback
を取り入れるための Design Changes が毎日10 件ほど。
デブサミ シリーズも半分終わりましたがあと5 Parts 残っています。。。
- Join (Part VI)
- Linq to SQL (Part VII)
- Linq Data Source (Part VIII)
- ASP.NET Dynamic (Part IX)
- Summary (Part X)
来週にでも、終わらせたいと思います。
で、今日は少しだけ脱線して、Intermission です。
前回までのシリーズで、C# 3.0 では宣言的にかけるようになったとか、シンタックスが綺麗になったと紹介した数々の新機能は、実は必要に応じてデザインした結果そうなったのが多数をしめています。Presentation や Blog ではデザインの段階から決めてそうなったような言い方をしますが、本当の言語のデザインは泥臭いものです。
微分と積分の関係はニュートンが両者がある意味で逆の関係にあることを見抜くまでは別の分野として研究されていたように、言語のデザインにおいても「発見と帰納」「仮説と演繹」の両方で成り立っています。もちろん、シッカリした方向性やヴィジョン的なものが根底にあるからこそ成り立つともいえます。
例えば、Part I にて紹介したローカル変数の型推論 var は Part V にでてきた匿名型 - Anonymous Typeをサポートするために取り入れた機能ですが、使ってみると便利なので、C# 3.0 の代表的な機能の一つとして紹介するのです。もう一つの例としては、Part II で紹介したオブジェクト イニシャライザです。 現時点でのLINQ はすべて Expression で表現できるものに対して使える構文です。 Expression と Statement の違いは
Statement
if (x) { x = false; } else { x = true; } // if statement
Expression
x = x ? false : true ; // conditional expression
のように、同じ事をするのにも Expression 的な書き方と Statement 的な書き方両方あります。C# 2.0 までは Expression 的に object を初期化する方法がなく、LINQ をサポートするために言語仕様を変更したところ、宣言的にかける事に気づきいたというのが本当のところです。
長々と、書いてしまいましたが、今日のメインポイントは言語設計は泥臭いということを伝えたかったのです。
次回は、Join (Part VI) です。Stay Tuned!