Monthly Archives: October 2005

Oh, and, yeah, we shipped…!

Since it’s been a long while since I’ve been really closely involved with VB2005, this seems like a strangely anti-climatic announcement, but: we’ve shipped!

Visual Studio 2005 (Standard, Pro, and Express versions) and SQL Server 20005 are now available for download on MSDN if you’re a subscriber, otherwise you’ll have to wait until after the November 7th launch event.

For a good overview of the new features in Visual Basic 2005 check out Ken Getz’s article.  You can also find a collection of VB 2005 articles at our developer center.

Updated 10/27/05: Corrected MSDN link. Thanks Serge!

PDC videos online

You’ve probably seen this elsewhere, but… The PDC05 videos are now online and available to anyone who wants to watch them for (I believe) the next six months. You can catch my sessions there in case you missed the fun the first time around!

TLN308: Visual Basic: Future Directions in Language Innovation

PNL03: Scripting and Dynamic Languages on the CLR

PNL11: .NET Language Integrated Query End-to-End

Sometimes it’s the little victories that matter the most…

I think Rico’s spot on when he says that the real way you win the performance war is 5% at a time. Actually, I think he’s been overly optimistic — a lot of the time, it seems like you win the performance war 1% at a time. It’s much more like trench warfare than blitzkreig.

There’s also a larger idea at work here. Rico’s point is that in a mature product, you shouldn’t be able to come up with a huge performance win in most cases because, if you can, why didn’t somebody think of it before? The thing is, this applies to pretty much any aspect of a mature product. As we think about the future of Visual Basic, I can assure you that we all sit around dreaming of the revolutionary new feature that will return us to the days of explosive growth that the product experienced early in its life. And, hey, it’s always possible that we’re going to latch on to the next game-changing development methodology that will revolutionize how people write programs and causes an influx of another 30 million or so programmers. It just isn’t likely. After all, a lot of very smart people inside and outside of Microsoft have been looking at this problem for a very long time and so far we haven’t gotten radically beyond many of the fundamental ideas that made VB so hot a decade ago.

It’s also why I really don’t envy the guys working on Office. After all, if you’re a developer in Word, what are you doing? It’s not like there’s some new radical paradigm for text editing out there — we’ve wrung most of the major gains that are to be had out of WYSIWYG. Same goes for Excel — the spreadsheet metaphor has reached a high level of maturity. So what do you do besides dreaming up newer and newer ways to arrange your toolbars and menus? Collect your paycheck and go home?

This is where we get back to trench warfare. Even though, yes, a lot of the “big ideas” have been pretty mined out, it’s not like we’ve reached a state of perfection. Looking at Word and Excel and Visual Basic, there are still lots and lots and lots of little things that can be better. Refactoring isn’t going to revolutionize programming the way that a GUI builder did, but it’s still a nice, incremental improvement over what came before. It’s the 5% gain or the 1% gain instead of the 50% gain, and that’s in many ways just where we are as an industry.

Personally, I would love to be the guy who dreams up the next really big thing in the programming world, the one that’s going to put my name in the history books (or, at least, computer history books). And, who knows? Maybe I’ll win the lottery. It happens. But if that day never does come, I’d still be happy improving the lives of VB developers by 50% or 75% just by making those incremental improvements that makes their lives easier one step at a time. It might not be enough to get us another 30 million developers in one shot, but in the long run, who knows?

Mark your calendars: VB 9.0 chat

Just announced, we’ve got an upcoming chat on the VB 9.0 language enhancements we’ve been talking about:

Visual Basic 9.0 Language Enhancements

Description: Have you been hearing and reading about many of the exciting new features being planned for a future version of VB beyond the new version VB 2005? Would you like to get more details on what is planned for VB 9.0 directly from VB team members? Would you like to provide the VB team with feedback based on what you have seen coming in VB 9.0? Join the Visual Basic language design team to discuss some newly announced VB 9.0 features including Language Integrated Query (LINQ) and XML Literals that are expected significantly enhance the world of VB programming! If you’ve already read the whitepapers, played with the web preview releases at, or watched the video interviews on VB 9.0 – then this is your invitation to talk with Visual Basic team members on whatever’ is puzzling you and delighting you about future VB language features.

You can add it to your calendar here, hope to see you all there!

Forest vs. trees

I notice that Darryl Taft has a very interesting article today over on eWeek asking “Will VB 9 Win Over the VB 6 Faithful?”. I think the headline is a bit off, since the real question is “Will VB 2005 Win Over the VB 6 Faithful?” given VB 9.0’s status as almost-entirely-vaporware at this point. The answer to that question is “yes, definitely, in my opinion,” but time will tell. Only once we know what happens with VB 2005 will we really be able to start talking about how VB 9.0 will or won’t change that new status quo.

There was one section that caught my eye, though:

Will Microsoft’s play to win back developers be successful?

Joel Spolsky, founder of Fog Creek Software in NY, said he thinks Microsoft should keep things simple.

“My impression is that the developers who appreciated VB for its simplicity and easy learning curve have long since given up and aren’t going to be impressed by language ‘featuritis,’ and are certainly not going to be pleased by a raft of complex new language features to learn,” Spolsky said.

“Those who might be excited by something like LINQ are the exact kind of programmers who already switched to C#, or, increasingly, Python. I fear that by adding these complex new language features VB.Net stands to alienate what’s left of its core constituency who just want to get things done.”

This is the downside of announcing these features at the PDC, which is a über-geek conference, instead of someplace like TechEd, which is more of a conference for normal human beings (or at least as normal as programmers ever get). Yes, indeed — if you go and download our VB 9.0 introductory paper, you will be regaled with all kind of cool geeky language features like type inference and anonymous types and query comprehensions! All aimed at the kind of language wonks who are going to be going to the PDC and downloading such papers so they can dissect the semantics of each feature on their blogs. This is fine as far as it goes, but the problem with all this is that then people like Joel start to lose sight of the forest for the trees because they start to think that the average user is going to actually have to give a damn about all this wonky stuff to be able to get their work done.

The truth is that if you go back to the halcyon days of VB 6.0, you’ll find a phenomenal amount of complexity in the language. Just go read a book like this one and you’ll find out just how many complex features went into making simple things work in VB. And yet, all that complexity and featuritis was hidden under a fairly approachable and simple facade that allowed people to, as Joel puts it, “just get things done.” This is really no different. The practical upshot of LINQ is that you’ll be able to take objects that you already work with every day and easily write queries over them. That’s about it. You won’t have to understand the mechanics of anonymous types, lambda expressions, type inference, extension methods, or query comprehensions to make it work. You won’t even have to know what any of those things are. All you have to know is that you can type “Select” and write a query. Something, I might add, that most VB users already have to do in one way, shape or form already. In many ways, the additional semantic overhead for many users should be almost zero.

The only difference between now and VB 6.0 days is that in VB 6.0 days we didn’t go to the PDC and talk about how VB was going to support the new IFoo interface and the new IBar interface and extend ITypeInfo so that we could support this feature and change IDispatch so that we could support that feature. No, instead all those details were relegated (if discussed at all) to C++ sessions about new COM features and VB just didn’t bother to show up. Now, instead of saying “you’ve got to learn C++ if you want to understand how the nitty-gritty of this language works,” we’re just saying, “if you want to know, you’re all adults, here it is.” But, hey, if you don’t care about all the new whizzy language features — and, let’s face it, most non-language geeks shouldn’t — then don’t. LINQ will just work fine and your life only gets easier, not harder.

It’s that simple.

The Visual Basic Language, 2nd Edition?

Over the past several months, I’ve been getting questions as to whether I’m going to be updating my book, The Visual Basic .NET Language, for VB 2005. The unfortunate answer is: not at the moment.

The first problem is that the VB .NET book market has been quite soft over the past year or two. This is not entirely surprising — although uptake on VB .NET has been very good considering the fact that the shift from VB6 to VB 2002 or VB 2003 was significant, it’s been (as I’ve always said it would be) a long-term process. We’re seeing continuously growing momentum behind VB .NET, and VB 2005 is shaping up to be a very big release for VB, but the fact is that the gradual transition has temporarily weakened the market for VB .NET books. It probably also doesn’t help that a so much of people’s VB6 experience transfers into VB .NET, thus lessening the need for a whole new shelf of books. The end result is that Addison-Wesley is taking a wait-and-see attitude towards a new edition of the book. I expect that with the release of VB 2005, the market realities are going to shift, but we’ll just have to see.

The other problem is that even if AW was breaking down my door to get me to write a second edition, I’ve been so consumed by LINQ planning that I’m not really sure when I’d have the time. Just getting the language specification updated for VB 2005 has been difficult enough… But I’m sure that I could squeeze it in there somewhere…

The end result is that what’s out there in my book is all there’s going to be for a little while. I still think that the book holds up very well in the face of our VB 2005 updates — most of the things that need to be added to the book are pretty advanced features like generics and operator overloading, things that many people aren’t going to miss. And all the fundamental stuff still is extremely applicable to VB 2005. So I still think it’s a good buy. However, as time goes on, it’s inevitable that those holes will become more glaring, so I’ll continue to work with AW to see if we can’t get an update out there in the reasonably near future!

Framework Design Guidelines, highly recommended

I’m glad to see that Brad and Krzysztof’s Framework Design Guidelines book is finally now in stock on Amazon! Not coincidentally, I just received my own copy of it in the mail yesterday and I know it’s going to be one of the books that’s not going to make it to the shelf because I’ll be referring to it all the time… It’s a great resource for anyone who designing .NET libraries that other people have to use (i.e. most of us at one time or another) because it distills thousands and thousands of man-hours worth of experience writing .NET libraries at Microsoft into a single, straightforward book. And I’m not just saying this because I have some annotations in there…

And, you know, their book:


will make a great bookend with this other book:

Just a thought…