Anders Hejlsberg is one of Microsoft Corp.'s handful of distinguished engineers. He is known for having developed the Borland Turbo Pascal compiler and for having been chief architect of Borland's Delphi technology. Hejlsberg left Borland, where he last served as chief engineer, to join Microsoft in 1996. Since joining Microsoft, Hejlsberg's greatest claim to fame has been fathering the C# programming language. Originally code-named Cool, C# was designed to be Microsoft's Java killer.
Hejlsberg chatted with Microsoft Watch Editor Mary Jo Foley and eWEEK Senior Editor Darryl K. Taft at the recent Microsoft Tech Ed conference in Orlando, Fla., about the past, present and future of the C# programming language, among other programming-language-related topics.
In [Microsoft Vice President] Paul Flessner's keynote at Tech Ed, we heard about how Visual Studio, SQL Server and BizTalk Server are getting more and more tightly integrated. What are the implications of that increasingly tight integration for tools and languages?
For tools, it's that the cockpit you sit in gets more and more capabilities. My particular interest for the past couple of years has been to really think deeply about the big impedance mismatch we have between programming languages, C# in particular, and the database world, like SQL—or, for that matter, the XML world, like XQuery and those languages that exist there.
If we just take languages like C# and SQL, whenever I talk to the C# programming crowd—and I tried it in my session [at Tech Ed]—I ask them, "How many of you access a database in your applications"? They laugh and look at me funny, and then they all raise their hands.
So from that I take away that when you're learning to program in C#, you're actually not just learning to program in C#. You're also learning SQL. And you're also learning all the APIs that go along with bridging that gap. And you're learning a whole style of writing a distributed application. But interestingly, we've come to accept that that's just how it is. But it doesn't necessarily have to be that way. The two worlds are actually surprisingly unintegrated.
On the tools side, we're making tremendous progress on getting deeper integration between these two worlds. But I think on the language side, we also could make an enormous amount of progress.
So, there's so much stuff that we could do there to make these worlds better integrated. And that's what we've been thinking about deeply over the past couple of years. And I think you see some of the fruits of that thinking in the "Whidbey" release. Specifically, a feature like generics [which will be part of Whidbey, or Visual Studio 2005] is not only a great tool for programmers because it allows you to parameterize your types and have much more code sharing, and get better compile-time type safety and all of these things that are goodness. But it also strengthens the type system, or makes it more expressive. Source