Hejlsberg: C-Omega is a research project that explores language extensions in a couple domains. One is database integration, the other is XML. And C-Omega was effectively sort of conceived as, let's take C#, let's try and take SQL, let's try and take XML or XQuery and let's all sort of put them into one big bowl and stir and see what comes out of it, experimenting with integrated queries and so forth. And it's interesting in that it sort of shows an interesting amalgam of different programming languages and query languages and so forth. And we've learned a lot from that prototype, and we are now working to apply a lot of that knowledge in C# and our other programming languages. So one of the things that the C# team, specifically, we've been thinking about for the last almost two years now is really trying to make inroads on the deep impedance mismatch that we have, generally speaking, between programming languages and databases. When I ask programmers, in fact I tried to ask them yesterday at my talk, how many of you access data in your applications or talk to a SQL database? And at first, everybody laughs, and then they all raise their hands and they go, what a stupid question. But really, what I take away from that is that when you are learning to program in C#, you're actually not just learning to program in C#, you're also learning to program in SQL and you're also learning the APIs that tie together C# and SQL to form your full application. And when you look at those two domains, it is remarkable how different they are. SQL is based on relational algebra, so everything in SQL is a table with rows and columns. .Net, then C#, VB, it's all objects and hierarchies and inheritance ... and virtual methods. It's completely a different concept. The data types are different. In SQL, everything is nullable, things can be null. In our mainstream programming languages, things cannot be null. And now you've got to deal with the nulls. In SQL you write queries, and so I have a higher-level declarative way of expressing the set of data that you're interested in. [With] general purpose programming languages, you've got to write four loops and if statements and so forth. Often programmers sort of end up just being plumbers that tie together the domains, and the big problems they worry about are how to make the null go away and how to write the queries and strings and get the traffic over to the server and get the results back and so forth. So what we're looking at is really trying to much more deeply integrate the capabilities of query languages and data into the C# programming language. And I don't specifically mean SQL, and I emphatically don't mean just take SQL and slap it into C# and have SQL in there. But rather try to understand what is it expressively that you can do in SQL and add those same capabilities to C#.
InfoWorld: So there's not going to be a separate C-Omega product?
InfoWorld: Is any of the C-Omega technology going to be in Visual Studio 2005?
InfoWorld: It's beyond that, obviously?