.NET goodness and suckage

Today was our last day of Visual Basic .NET training at work. We've been having two-hour sessions every Tuesday and Thursday for the past month, taught by an instructor at the local community college and a friend of his who works at a local consulting company doing mostly .NET development. It's been a lot of fun - they're both great guys and I learned a lot. It was also nice to have someone with a UNIX background to talk to.

As for .NET itself, I have mixed feelings. I'm excited about moving to VB.NET because the language is much improved over VB6 and it will undoubtedly be easier to work in. Actually, that's somewhat misleading - VB.NET is not really an "improved version" of VB6, so much as a completely new language with superficial similarities. It hs real object-orientation, different data type semantics, new operators, and a number of VB6 language features (control arrays, several intrinsic objects, the option base statement) are gone. They even changed the program termination semantics and removed "edit-and-continue" capability, which was the only really great feature in VB6. In fact, one article I read aptly referred to VB.NET as "ugly C#." From what I've seen, that sounds pretty accurate.

On the other hand, there are some things about .NET that still kind of suck. For one thing, the IDE kind of pisses me off. It has the "pop-out" side and bottom panels kind of like KDevelop and Quanta+, but there doesn't seem to be a quick and easy way to "un-pop" the panels. In KDevelop and Quanta+, you can click the panel button in the sidebar to close it, but in VS.NET 2002, that doesn't work - you just have to move the focus off the panel and wait for a second.

My main complaint for today, though, is the VB.NET upgrade wizard. This is the program Microsoft included with VS.NET that allows you to upgrade a VB6 program to VB.NET "automatically." Of course, when they say "automatically," what they really mean is that it converts the easy parts and leaves a whole bunch of "FIXME" style comments. Needless to say, if you're writing anything remotely interesting, the resulting code isn't likely to compile. And if it does compile, various changes in the run-time semantics mean that there's a chance it won't work properly.

And did I mention that the upgrade wizard doesn't like MSVDM? Yup, if you're using MSVDM, just try to change desktops while the wizard is running. On my system, it crashes the upgrade wizard. Of course, if the wizard was fast, this wouldn't be much of an issue. But it's not, so it is.

Just for kicks, I tried converting for one of my simpler CRUD applications from VB6 to VB.NET. After commenting out the non-working parts (they were mostly related to printing, so not critical for testing purposes), fixing a few bugs related to changes in scoping, and changing the program start up behavior, I was able to compile and run it without too much trouble. Of course, it was fairly slow (compared to the VB6 version), but it worked. The only problem was that the graphical form designer (which is half the reason to use Visual Studio in the first place) mangled all my forms, dropping all the controls on top of each other in the upper-left corner of the form. They still show up correctly when I run the program, but design mode is completely useless. I guess this isn't a problem is you never want to change the form layout again, but otherwise....

Anyway, it looks like .NET will be a pleasant change from VB6. ASP.NET in particular will be a nice improvement, if for no other reason than that you can now write your pages in C# rather than just VBScript. (OK, technically you could write ASP classic pages in VBScript or JScript and there are plug-ins to support Perl, Rexx, and Python, but those aren't exactly the norm.) Not that I'm going to get much chance to use C#, because everybody else here just does VB, but I guess now I have a good excuse to start looking into Mono.

You can reply to this entry by leaving a comment below. This entry accepts Pingbacks from other blogs.

Add your comments #

A comment body is required. No HTML code allowed. URLs starting with http:// or ftp:// will be automatically converted to hyperlinks.