Bias

I program in Visual Basic. For fun. I say this at the outset because it obviously impacts what I have to say that follows. However, I never send VB to do PHP/C/PERL/sh's job if I can help it.

What Is VB Good For?

I consider VB a heavy-weight scripting language for windows. Yes, I know it compiles. I know it's typed. On the other hand, its typing is (save for objects and user-defined data types) pretty weak. You can go from string to integer to double to single and back with no trouble. Objects can't usually go straight into a string, or vice versa, but that's no different than PHP.

That said - VB is a scripting language. It's fairly ad hoc, it has a whole shit-load of functionality bolted on the side, it's crazy and ideosyncratic. Kind of like PERL. Just as PERL is duct-tape for Linux, VB is duct-tape for Windows. You can whip up a utility program to, say, diddle your bits, or snuggle your snogs, in a few minutes. It'll have a GUI, it'll be fairly robust, and, most importantly, it'll work.

And, of course, VB is COM-ed, so you can access all the wonderful components your computer has installed. Unlike CPAN, not all of them are freely distributable, but you can usually do OK. Because VB is COM, you can use, write, and re-use components with ease (for the most part), and keep all the nasty code necessary to diddle the API locked up.

So, what is VB good for? Writing componentware - software that just ties a few components together - such as a GUI and a DB back-end, for instance. Or writing simple software that needs to do just one job well, like a utility to sort some images by size and maybe make a thumbnail page (though PHP would probably be better for that).

What Isn't VB Good For?

VB isn't good for a few things. Any server-side software is a bad place for it. ASP especially is just ugly, and writing servers in VB is asking for trouble. Anything that needs to be really fast and efficient - embedded software, for instance. VB can be used just about anywhere C++ can, for the most part, but it doesn't (and shouldn't) compete with C and the web scripting languages.