Metamorphing Machine I rather be this walking metamorphosis
than having that old formed opinion about everything!

Haters gonna hate

VB6 is not an OOP language. It is capable of abstraction and encapsulation but lacks inheritance and polymorphism.
It does not have operator or method overload.
You cannot pass functions (or subs) as arguments in it.
What about pointers? Why it does not support pointers?

It does not help VB is verbose when compared to C-family languages, either.
Array literals are absent. Speaking of arrays, they can have any starting index, not just zero... What were they thinking, right?

It still defaults to passing arguments by reference, when every good-looking language these days prefers to pass them by value.
It has GoTo, for gawd's sake! 'Nuff said!

I could go on and on. If you dislike VB6, I'm sure you enjoyed the small listing above.
Any programming language has its warts. VB6 (★1991 / ✝2002), being the old language that it is, for sure has its shortcomings.
I could counter-argument all the items above, but that's not the point of this post.

Have you ever had an old friend who has their cranks and quirks and mannerisms that, over time, you managed to know so well that you just know how to handle them?
The problem is, when you introduce your friend to a third party, that party may not like them because of some of their cranks, quirks, or mannerisms.
That's part of the reason people loathe VB6.

Every VB6 non-feature will fuel the hate. Heck, every VB6-specific feature will do the same, too.

I was working on a legacy project the other day and stumbled upon this piece of code:

txtCustomer = rs!cx_name

Among other changes, I fixed it by replacing the exclamation mark with a dot.
It went into production and I can't even!
It took me DAYS to find the issue and put back the exclamation mark there.
WOAT!!

Haters will always gonna hate.
To give you an idea of how much VB - be it 6 or not - bugs people, read to what Anthony D. Green, former VB.NET person-in-charge at MS, has to say about it:

Whenever there is any discussion between VB.NET developers in any shared space, on a blog, on a mailing list, on Twitter, in a presentation, in a meeting room, there is almost invariably a C# community member who not only has an opinion on VB.NET and VB.NET developers but feels obligated to share it on equal footing and with equal weight to the members of the VB.NET community and the presumed, ingrained expectation that that opinion be respected.

Go read the whole piece. It is worth it.
But I digress. There's another reason people dislike VB, and it has to do with how insanely popular it was.

See, programming is for nerds (No, it's not, but indulge me, so I can make my case.)
Is one of the things we, nerds, are good at. It needs logical thinking, familiarity with Math, and is pretty cool.
Regular people don't belong here. It's not a 9 to 5 job. It's a passion. It's... a lifestyle.

But, once there is a programming language out there that's so easy to learn - it uses English words, what a novelty after all - anyone can start using it.
And, without formal training or even peer review, those people may start writing awful programs. And that's just what happened.
There are a lot of VB6 programs in the wild that are a nightmare to maintain. There's no denying that.
And that's another piece of the puzzle that took me too much to understand: When confronted with a poorly written legacy project in VB, one will blame the language.

If there's one thing I got from The Daily WTF is that no programming language is exempt from bad programmers.
Being the entitled jerks some of us are, we will point fingers and call it a day.

Fortunately, I learned how to not be that guy a long time ago.

Next week I'll share some VB6 best practices.

Andrej Biasic
2021-12-08