Help an Old Programmer Learn New Tricks (VB6 -> VB.NET -> C#.NET)

About twelve years ago I taught myself VB3 in order to write an automated claims entry application (up to that point my background was strictly IBM midrange). A couple of years thereafter I found myself supporting VB applications pretty much full time, and I stayed current through VB6 SP5. Then, about the time the company was starting the transition to .NET, someone in the upper echelons decided that a better approach would be to contract out a conversion to Java; so my only real experience is with running some of the core modules through the migration tool, which I found of limited value — in at least one case the list of discrepancies was longer than the source code.

Eventually the company and I parted ways, and I find myself in a position similar to an alchemist trying to find a job in the chemical industry (as Heinlein put it, “Sirrah, I am an alchymist; hast need of art such as mine?”). So I’ve downloaded Visual Basic 2008 Express, and I’m ready to start retraining myself.

(And no, I’m not as deranged as the chartered accountant who thought he was qualified to be a lion tamer because he had a hat which had “Lion Tamer” emblazoned on it. Deluded I am, but I’m not yet so far gone as to imagine that this will make me a finished VB.NET developer. But I do feel pretty strongly that I need to be more current than I am now.)

Problem is, while I may be inflating my abilities, I think I’m a little beyond the point where I need to start by displaying “Hello, world!” on the console. I’ve tried searching for online materials, but what I’ve found seems to be tailored to a particular issue (such as the difference in text file I/O — valuable, to be sure, but pretty piecemeal). What I’d really like to find is a more-or-less comprehensive guide to the differences between the two (and particularly a reference to the foundation libraries that contain the methods which used to be intrinsic to VB); but so far I’ve found such to be pretty elusive. So as usual in such a situation, I throw myself on the good graces of the Dope.

Once I’ve gotten something of a handle on VB.NET, my next step will be to tackle C#.NET. If a similar comparison exists between VB6/VB.NET and C#.NET, that would be unutterably wonderful; but first things first.

As always, heartfelt thanks in advance for any guidance, suggestions, insights, etc., etc. And special thanks to the two of you who stuck with this ramble to the bitter end.

Try this web site. There is a lot there, some of which will be useful.

For C#/VB.NET, there is also www.dreamspark.com where MS has graciously provided academic versions of their development IDEs as well as training courses. They have starter kits, guided projects and the like.

But sometimes (like when I have to do QT 4.5) I just bit my lips and go through Hello World again. Or find yourself a small project to do - an address book usually covers enough of the basics and intermediates.

There are whole sites devoted to VB.NET tutorials, but this seems to be one of the most comprehensive that I’ve seen: http://www.homeandlearn.co.uk/NET/vbNET.html

Some of the many differences between VB6 and VB.NET are described here: Comparing VB.NET to Visual Basic 6

VB.NET is much, much more object-oriented and exposes a lot more code that was hidden in VB6, which can be a bit daunting but ultimately gives you far more control. Ultimately, I think the best way to learn might be to invest in a book, which will lead you through the basics in a structured way, giving you a base from which to explore additional features of interest.

For a comparison of C# and VB.NET, a good place to start is probably Wiki: Comparison of C Sharp and Visual Basic .NET - Wikipedia

Personally, I skipped the VB.NET step and went from VB6 to C# directly. When I started out, I’d spend a lot of time going to Google searching for stuff like <vb6 command> VB C#. Usually the first or second site listed would be an article describing the C# equivalent to <vb6 command>.

Are you learning VB.NET first to reduce the learning curve between VB6 and C#, or because you think it would be useful itself? If you’re trying to reduce the learning curve, I’d just dive in to C#. Personally, I found the “kinda the same, but still pretty different” relationship between VB 6 and VB.NET more frustrating than just learning C# right away. Of course YMMV.

Good luck either way!

Personally, I think that you should go directly to C#. It is a fairly easy language to learn. Microsoft offers Visual Studio Express for all of their languages, including C#, VB, etc. Even though the Express editions are presented as having “limitations”, the limitations are generally esoteric enough as to allow for serious development. From personal experience, I developed a major set of software for a state government entity using Visual Studio Express C#, and never ran into the limitations. (The limitations are generally in the area of add-on features, such as the presence of Crystal Reports, etc.)

Check out http://www.microsoft.com/express/ and click on the “Explore By Product” tab.

Seriously, if you want to improve your marketability or broaden your technical base, go with C#. From there, you will be able to make the leap to Java, if you ever have to. The languages are very similar.