VSTS 2008 Release Brings LINQ to Fore
Microsoft’s Meijer wants to use LINQ to improve Web programming.
Microsoft software architect Erik Meijer dreams of a "democratized" Web in which programming in the cloud is accessible to the masses. But he also has a recurring nightmare: "What happens if [chief architect] Ray Ozzie comes knocking on my door and asks, 'What do you have for me to make programming services for the Web easy?'
"That's what keeps me up at night," Meijer said, speaking last month at the first U.S. edition of QCon, a relatively new conference series organized by a community of software developers and enterprise architects in San Francisco. Meijer's nocturnal nail biting has led him to consider strategies for stretching the .NET Framework to cover the cloud -- the milestone Ozzie set for Microsoft's team this past summer -- and make it possible to design, develop and debug complex distributed applications using an existing and unmodified .NET compiler, and to deploy those apps anywhere.
New Building Blocks
That's a tall order, but Meijer believes with the release to manufacturing of Visual Studio 2008 last month, developers finally have the building blocks that they can start working with in Language Integrated Query (LINQ), which makes its debut with Visual Studio 2008. Meijer is one of the creators of LINQ, Microsoft's long-awaited framework designed to add a native querying syntax like SQL to .NET programming languages (see the April 1 cover story, "Looking to LINQ"). The LINQ project has initially focused on Visual Basic .NET and C# languages. LINQ defines a basic pattern of "standard sequence operators," which are monadic primitives for filtering, transforming, joining, grouping and aggregating over arbitrary collections of arbitrary types.
"LINQ will be the biggest feature that causes people to upgrade and move to .NET 3.5," says John Case, Microsoft's general manager for developer and user experience platforms and tools (see this issue's Q&A with Case on p. 33). Meijer says LINQ addresses the "impedance mismatch" problem inherent in Web programming with a new approach. Instead of trying to unify all the disparate data models Web developers have to deal with (relational data, business objects, semi-structured data in the presentation layer), it looks for what's common among them and integrates that into a general-purpose programming language.
"There are two problems when you're doing Web programming," Meijer says. "The first is that you have to deal with all these different data types. On the back-end you have relational data; in the mid-tier you have business objects; and then you have semi-structured data in the presentation layer. And all of these things are pulled together in a primitive way using strings as the glue, and it's all very fragile and horrible."
A former college professor, Meijer works in Microsoft's SQL Server division. He's currently working with the Visual C# and Visual Basic language design teams on data integration in programming languages. He's one of the designers of the standard functional programming language Haskell98 and Cw (pronounced "C omega"), which is a free extension of C# designed to make data stores accessible with the same ease and type safety as strings and arrays. But he's probably best known for his work on LINQ.
Meijer admits to being a bit obsessed with this idea of "democratizing the cloud."
"I've been essentially on a 10-year quest to make programming the Web easier," he says.
Next on the LINQ agenda: simplifying the development of data-intensive, distributed apps. How? By "stretching" the current single-tier client-application design patterns to cover the cloud. Meijer expects to see this problem solved in the next few years in LINQ 2.0.