Now that LINQ is out the door, so to speak, I can start focusing my efforts on the next next technology here at Microsoft. Ever since I joined up with the C# team nearly two years ago I’ve been frustrated by my inability to wax poetic about all the goodness we were working on. I was sworn to secrecy. Mum was the word. Perhaps if you were paying attention to the work in C# 2.0 and C-Omega, you may have guessed what was to come. Looking back, it’s easy enough to recognize it in the design of Generics, Iterators and Anonymous methods. The existence of Nullables in there as well should have made it obvious. We were planning ahead for the big pay off, language integrated query.

 

You may be amazed that so much planning goes on in the features that we roll out version to version. Sometimes big ideas and far-reaching visions take many releases to come to fruition. You cannot always do them in one release. Sometimes you have to take a risk and dole them out piece by piece. This may cause a bit of confusion at first, when no one can truly understand why a particular feature was included and not others, or why one design was chosen. Yet once all the pieces are together you can finally make sense of it all, and then as if by magic it all just seems right.

 

Of course, this time is no different than the last. We planned ahead and baked in features into C# 3.0 that will lay the foundation for the next big thing. LINQ is only the start of the revolution. Yet, unlike last time, the features we added now make it rather obvious what is coming next. If you connect the dots in your mind and extrapolate just a bit you’ll see what I’m getting at. You’ll begin to notice that’s its not just about query in the language, or first order functions or everything else that seems to be borrowed from languages of yore. No, these pieces are just stepping stones for what is yet to come, something truly original; a next generation programming language.

 

The evidence is there right now, plain to see. The query expression exhibits it quite clearly. Yet, that’s just for starters. Eventually, the same degree of innovation will influence the rest of the language, and then you’ll have something quite different, a language the likes of which you have not seen before, one that is simple and elegant, yet secretly powerful: a YODA-like programming language.

 

You see, putting the ‘from’ ahead of the ‘select’ was not by accident. Soon the whole language will be re-arranged in an effort to make expressing intent easier and more logical.

 

Instead of the cryptic c-like syntax below:

 

 

public void Main(string[] args) {

   Console.WriteLine(“Hello World”);

}

 

 

We will now have eloquent YODA-like syntax:

 

 

(args of string many are they) Main is what they seek yet return they do not.

 

Brace you must

     Written it is, the Console. “Hello World”

 

 

I know it’s difficult to believe, as strange as it seems. Yet, sometime in the future, everyone will be writing software this way. Knowing this, it makes my work so much more invigorating. I can literally feel the electricity in the air around here. It’s like some queer energetic force.

 

But I digress

 

Matt