Specialized programming languages and their supporting environments have always been tightly coupled: SQL and the database; business rules and the rules engine. It's tempting to wish for an überlanguage or one syntax to rule them all, but what really matters is a common environment. At its 2005 Professional Developers Conference, Microsoft showed that it's finally putting all of its eggs into the .Net basket.
We create specialized languages for a very good reason: to map the domains in which they operate to the mental models of programmers working in those domains. Because every real software system involves many such domains -- for example, system administration, data management, business logic -- developers have to wear different hats and speak different syntaxes. But there's a larger issue. Our specialized languages live in different environments that don't cooperate.
Unifying environments is a greater challenge than unifying languages, yet Microsoft is making headway. Consider the three domains I mentioned above: systems, data, and business rules. Each is being brought into the .Net environment in a way that will enable powerful synergy.
In the realm of system administration, I've written before about Monad, the new shell that passes objects, rather than ASCII text, through a pipeline. Two major new initiatives in the realms of data and business rules were announced at the PDC. LINQ (language-integrated query), the brainchild of Turbo Pascal and C# inventor Anders Hejlsberg, aims to make data management a first-class citizen of the .Net environment. The Windows Workflow Foundation aims to do likewise for workflow, but that's a longer story for another column.
What matters here isn't the ability to operate in these domains using the same programming language; it's not having to jump through wormholes. Using LINQ, for example, a program can query the operating system for the names of running processes and can then join those names to historical data fetched from a database.
A traditional program would get the process list via shell commands and parse the returned text. Monad, which receives self-describing objects from Windows system services, can work more intelligently than that, and LINQ ups the ante even more. It receives the same set of objects from the OS and similar ones from the database. As it operates on the merged collection, it can natively blend SQL-like data management with other activities, including system administration and workflow.
LINQ is an extraordinary innovation that turns traditional query inside out. But the bigger story from PDC 2005 is that the .Net vision of unifying many balkanized disciplines within the Microsoft ecosystem is finally becoming a reality.