Foreword:

 In this series I am going to discuss some of the history,
strengths and techniques used in Visual Basic 6 development.

I will not cover basic techniques which can be found in abundance
across the net. Instead I will focus more on advanced topics which
are harder to find concise information on.

I have been using VB6 continuously since 2000, and I still find new
things about it as my knowledge of it deepens. My path with programming
advanced from web technologies, to VB6, to C, and now on to COM.

I do not feel like VB6 limits me in any way. I have achieved everything
I have wanted with it and it is brilliant at what it does.

After 16 years I am still working to understand the full software stack 
that VB is built on top of. I am not a fan of the modern programming 
landscape where technologies shift like the weather. My personality is
such that I wish to master the ins and outs of a technology and know
it right down to its roots. Even for VB6 this is a long slow process.

As more and more layers of technology are built on top of one another
and grow larger and larger I am not sure this intimate level of knowledge
is even possible anymore. (as in having direct experience with not just
theoretical knowledge of its operation)

Mastery is being able to obtain a simple elegant answer even while 
interfacing with a complex (or even chaotic) system. Stability is virtuous.


introduction:

VB6 was released in 1998. It is the 6th succession
of the language and was the final version as we know it.

VB.NET may be a variant of the basic language, but it is
not VB6 and is built on an entirely different design.

VB6 was once one of the most popular programming languages 
in the world. It was, and still is, a great general purpose programming 
language that made developing GUI windows apps fun and easy.

One of the real strengths of vb6, is that it wrapped extremely
complex functionality extremely well. With it developers
didnt have to worry about (or even know) all the crazy details of
what was going on behind the scenes. 

Seamlessly wrapping utter complexity, into a stable, intuitive
, efficient package that even pre teens could utilize is a 
mark of mastery. Make no mistake, the minds behind classic 
visual basic were wizards of Windows and COM.

Visual Basic 6 was also given good access to the underlying
Windows API to interact with the system at a lower level. This
mechanism allows it to easily interact with custom made
DLLs in other languages such as C. If you couldn’t do something
easily in VB6 language itself, you surely could add that capability
by integrating with a C dll. VB6 also has excellent access to COM
libraries. COM is a very complex technology in its raw form, but
in VB, its integration is seamless.


What happened?

My take on this is that MS decided that they wanted an academically
'proper' language. They also got bit by the Java hype, or felt they had
to keep up with it. First they tried to adapt Java with J++, but then 
they got sued and had to spin it off into C#. 

They wanted a framework that you could compile to intermediate code,
and then have run on any device regardless of processor. 

They also wanted a language that had the capability to support more 
advanced constructs such as polymorphism. VB6, being built on top of 
COM technology could not meet the language complexity requirements of 
what they envisioned so stop developing it. 

To my sensibilities, needless complexity is a detriment. Things should be
accomplished as simply and directly as possible. If you have a working system,
thats the end goal. The more complexity involved, the more ways things can go
sideways. Another real danger is, that people can get lost in the complexity
and end up creating things that are way over complex for what really has to
be accomplished. I just dont agree with it and have not found it useful.

Another point I will make here, is that the extra complexity adds allot of
noise. No longer is it a lite clean tool to use to solve problems. Now you have
to wade through loads of possibilities and options to accomplish a task.
I consider this a drain. 

One more thought, as .NET has grown and evolved, sometimes functions have been
removed or depreciated. Opening and compiling an old project may require changes.
You may have to recompile a project just because an old version of the runtime is
no longer supported or installed by default on your OS of choice. 

VB6 being frozen, I can open a 20yr old project and still compile it perfectly
fine without any changes and have it work.