Thursday, August 11, 2016

Mastery is being able to obtain a simple elegant answer even while interfacing with a complex system. Stability is virtuous !

These are pertinent pieces of articles of Dave's from I advise you to take Dave's articles one by one (see here). Inside Dave's articles you will find incredible things, things that you can't imagine are possible in a programming language. Wizards like Dave make us proud to be a part of the VB6 community. This is what Dave says in one of his articles (and my words stop here):

Here is another thought why i love vb6. It was made by wizards of C++, COM and Windows GUI programming. They made a simple general use language that made GUI things a breeze. They kept it light and easy to use which made development fast and light. The intellisense lists were not overloaded with tons of crap. If you needed more power, it integrated easily with C and the entire world of COM. I really believe in programming in layers. The gui aspects are complex, the world of COM is super complex. VB6 was so perfect at these. And COM was a great match with Windows GUI. Fast, native, and works really well. .NET is everything and the kitchen sink and its a bloated turd. Holy crap..its been 15 frigging years now I still cant stop ranting about this.


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., says Dave !


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 didn't 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, that's 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 don't 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 run-time 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.


No comments:

Post a Comment