September 28, 2005

Aftermatch thoughts on XLinq

I finally got some time (18 hours in a plane to Seattle :) to settle down my mind about XLinq. Erik Meijer's excellent article, which explains XLinq from functional programming point of view made me changing my mind on some issues I wrote earlier, some hands on experience and some ...

Dimitre Novatchev (father of XSLT functional programming) writes:

The fact that XLINQ is as it is reflects that it targets a completely different audience, who would never attempt to learn XPath :o)

You are a person, who doesn't really need XLINQ and the authors of XLINQ had totally different audience in mind.

Most of your remarks in the remaining "Bitter words" also reflect this fact.

Taking the fact of the completely different audience targeted by XLINQ, many of the "shortcomings" for an experienced XML professional will actually be regarded as useful features for innocent OOP-ers.
There is some truth in his words. But I don't want to be "completely different audience" actually, I like XLinq and I do believe it can make XML programming easier for masses. While tragetting innocent developers who are too lazy afraid to learn anything new might be a good idea, abandoning everybody else who actually love to learn and know how to use XML tools provided by Microsoft is definitely a bad strategy. To be successful XLinq must be powerful enough to compete (or even better - to complement) with native XML query/transformation technologies supported by Microsoft for years at least in common XML processing scenarios. Erik Saltwell put it really well:
The point is, LINQ is a general purpose language for querying and transforming data, so of course there will be cases where a domain-specific query language (like xslt) will be more powerful, more compact, or more expressive. Our hope though, is that for those common cases where you don't need the extra power, this will be (as one PDC-goer put it) 'the last weird query language you'll ever have to learn.'
Well, the recipe is known:
Simple things should be simple. Complex things should be possible.