The high point of my day was seeing Anders Hejlsberg go through his presentation (actually it's more or a real-time code writing demo, with few slides) on LINQ.  I had never seen him in person before this week, and the experience can only be called Shock and Awe.  I had read this stuff, talked about it for hours, seen other presentations, but getting it from the source was really eye opening.  If you are at PDC, I believe the talk is being repeated Thursday.  Find out when and go!

A few tidbits I got from seeing it all in person:  First, he was demoing the new type inference features of C# 3.0 and said something like "Notice that this looks like script, but is really strongly typed."  It really does seem like the best of both worlds - the programmer productivity of not having to fool with all that tedious type declaration if the compiler logically could figure out the type, but the safety, performance, intellisense, etc. advantages of having the system be able to automate some of the tedium of typing and checking code.  Also, Anders emphasized how this really is a much more declarative style of programming,  even if it is hosted in an imperative language.  This really could change the world -- taking concepts that are well-understood by SQL, XSLT, etc. programmers and making them accessible to people working in a conventional programming environment rather than a DBMS or XML.

The low point of the day for me :-)  was when Anders was describing how XLinq addressed the numerous things he doesn't like about DOM, and Dave Campbell (the SQL Engine General Manager, hence my boss's boss's boss) pointed to me and said "it's all HIS fault".  All kidding aside, I must say that it is humbling to see how much more elegant  something can be when designed by one person with the knowledge and authority to make decisions can be, compared to DOM and XQuery which were  basically designed by committee (remember Fred Brooks' chapter in the Mythical Man-Month about Conceptual Integrity).  To be fair to my poor fragile ego, XLinq does reflect a number of hard-learned lessons from DOM, and builds on 10 years of advances in basic language technology. Newton is widely quoted as saying "If I see farther it is because I stand on the shoulders of giants." In this case it seems to be a giant standing on a big pile of us dwarves.

While almost all the reaction I've heard to LINQ etc. has been positive, there are a few interesting notes of skepticism ... partly that anyone can make the DLinq and XLinq pieces work in a fully scalable manner) (Michael Rys has a nice discussion of this),  but also raising questions about whether it is really a Good Thing to give programmers who don't really understand the workings of DBMS systems the ability to go wild.  I talked with Esther Schindler about this basic topic today, and came away with the impression that she thinks(something like, putting words in her mouth) we might be handing a 16 year old the keys to the family Ferrari and expecting him not to go too fast. Maybe having people who understand the strengths and limitations of a technology be the only ones capable of using a technology is not such a bad thing? That basic point has come up in a number of conversations, which might be summarized "our DBAs will NEVER let us use this, it's too powerful".  I think those concerns are valid and interesting, but premature -- there is an IMMENSE amount of work to do before that will be a real problem. 

Also, there's the inevitable question of how LINQ / XLinq / DLinq relate to XQuery. Just as SQL isn't going away on the data tier (DLinq generates SQL), XQuery won't go away as a database query language even when a mature LINQ -> XQuery mapping and code generation / optimization component is built, maybe someday. There will always have to be escape hatches for power users who need the ability to fine tune queries to be fast, reliable, etc. As for the client side, someone asked in a comment on yeserday's post whether this affects the likelihood that we'll ever support XQuery in .NET itself. I replied:
First, XLinq is a statement of a vision, not a concrete product plan. The idea is to get feedback from outside the rather small group that has worked on it so far. For example, it would be interesting to hear from XQuery fans on what XQuery does that LINQ doesn't, other than run on multiple platforms of course. Ultimately, decisions such as this are BUSINESS decisions; no matter how geeked up we might be about LINQ/XLinq, if the market wants XQuery they're gonna get XQuery.
So, let us know what you think the market is going to say ....


http://msdn.microsoft.com/netframework/future/linq/