DDJ: When you take all these features, and you put them all together, it's not that you can't do things the way that you've always done them, but when you start to use these new features the flavor of the language feels very different. To me, this is the biggest change to the language that I can think of. I think maybe even bigger than the change from Visual Basic 6 to Visual Basic .NET. Going to .NET changed all the underlying objects that you use, and VB itself changed some, but I feel like this is adding more to the language than the transition to .NET did.
AS: Yeah, I don't know if I would argue with that. Well, I wouldn't say that it "changes the language" because we're not changing the foundation of the language. We're introducing a new fundamental concept in the language that will change the way that you program with it. LINQ is two things. It's the language constructs that we talked about, and it's also the LINQ enabled APIs. We're not only changing the way that you program, we're also creating a whole new way to interact with APIs so that they're easily queryable. We're going to see more than DLINQ, and XLINQ. We're going to see more LINQ APIs coming out in the future. People are already doing them with their own code.
I think in terms of language constructs, the switch from VB6 to VB.NET let you harness the power of Windows frameworks. It brought Visual Basic to the level other modern programming languages. The ceiling was busted off of the language. That was the crux of the move to .NET. In the Visual Studio 2005 release, we made some pretty significant, though incremental, improvements to the language that were focused on productivity. Generics let you have strongly typed collections, and My let you use the framework without being overwhelmed. It let you get to the things that you need quickly.
The LINQ feature is something that adds a whole new power and productivity to the language.
DDJ: And so far, I've been pretty impressed with what I've seen. I've heard people ask for specific tweaks, but I'm not running into a lot of people who are saying, "This whole LINQ concept is a bad idea." It just seems that having query as a language construct makes sense.
AS: The feedback that we get is that Visual Basic is all about productivity, and the majority of our customers are writing applications which are forms over data. They want help in building those kinds of apps. Data language integration, making data access easier, has been the goal for a number of years. I think I started looking at this about five years ago. We've been looking at this on and off, but really on for the last two or so years. I think we've finally got it right.
DDJ: If it was an easy problem to solve, it would have been solved in 1972.
AS: It was, in other languages.
DDJ: If you look at other languages, languages that really became industry standards, none of them have query as a concept. Look at C, C++, Java, VB, C#, etc. These languages all access data through libraries, and query isn't part of the language. Why now?
AS: When you look at the popular languages, they've been silo'd. They're either general purpose and data is handled through libraries, or they're very specific. You could argue that SQL is a common language, it has querying, but it's all about the data and not the application.
DDJ: Amanda, thanks for taking time to chat. We're looking forward to seeing how the editor and debugging experiences progress.
AS: Yeah, it's fun to work on. Thanks for playing with the bits!