This post originated from an RSS feed registered with .NET Buzz
by Paul Vick.
Original Post: Drafting Edit and Continue
Feed Title: Panopticon Central
Feed URL: /error.aspx?aspxerrorpath=/rss.aspx
Feed Description: a blog on Visual Basic, .NET and other stuff
As I think the entire blog universe knows by now, C# is going to be adding Edit and Continue in their 2005 version. As I've saidmany times before, I think Edit and Continue is a great feature, so I'm happy to see another language on board with it. Of course, there's a selfish part of me that would have liked to see the C# team continue to ignore such a great feature and leave it completely to us, but what's good for the goose...
What's interesting about this, though, is that it points up one of the practical reasons why having three .NET languages at Microsoft is a Good Thing(tm). As evidenced by the fact that the C# team didn't originally plan to do Edit and Continue, if there had only ever been C# at Microsoft, Edit and Continue would probably never have happened. The CLR team only added the underlying support for Edit and Continue because VB insisted on it and then sat down with them and worked out how it was going to happen. Similarly, I don't know if generics would have ever happened if there had only ever been VB at Microsoft, even though I think it's going to be an excellent feature for our customers. Lacking the C++ history, it's something that we probably never would have pushed the CLR team to implement the way the C# team did.
It occurs to me that this is an extension of Rocky's excellent rant on programming languages, just flipped around. His point is that programmers who limit themselves to knowing just one language limit their ability to think about programming. I think the same goes for the Microsoft.
What I find really interesting is the way that the language teams end up drafting one another as we go forward. Drafting is the phenomenon mostly commonly used in cycling where a cyclist can maintain a higher speed with less energy when following in the backdraft of the cyclist ahead of him. (A better explanation can be found here.) A lot of cycling strategy involves members of the team riding ahead of other team members (say, Lance Armstrong) so that the following rider can conserve energy for the final push at the end of the race. Interestingly, drafting can also help the lead cyclist as well, although I lack sufficient physics knowledge to really explain that.
Anyway, the point of this whole digression is that a very similar thing happens inside of Microsoft as well. When the C# team decided to implement Edit and Continue, it was easier for them to do so than it had been for the VB team because the VB team had already worked out a lot of the details (and a lot of the kinks in the system) beforehand. Similarly, the C# team started implementing generics before VB did, so they ended up working out a lot of details for us ahead of time. In the end, each team takes advantage of the work the other team is doing to advance their own language more rapidly. It's a very virtuous cycle.
Of course, a lot of the people who don't like Edit and Continue are the same people who don't think that Microsoft shouldn't bother to have more than one language (read: C# is the "one true language"). So instead of drafting, they probably think of pollution instead. Ah well, to each their own...