Tim Anderson's ITWriting

Why Visual Basic 6 was frozen

 

Want to reproduce this article?

If you would like to reproduce this article on your own publication or web site, please contact Tim Anderson .

picture of book

Microsoft and the abandonment of Visual Basic 6.

Visual Basic was the most popular programming language in the world, yet Microsoft froze its development in favour of a new and different VB. Here's why.

By Tim Anderson.

Why Visual Basic 6 was frozen

It sounds like perfection. Microsoft had perhaps the largest number of developers in the world hooked on a language which in turn was hooked to Windows. Yet Microsoft took this asset, of incalculable value, and apparently tossed it aside. Back in 2002, it announced that the language was to be replaced by something new, different and incompatible. That caused rumblings that continue today. Developers expressed emotions ranging from frustration to anger. They felt betrayed. What follows is the explanation.

To think this through, we need to hold in our minds three things.

First, there is the Windows API. By this I mean the low-level programming interface to Windows, as explained in books like Charles Petzold’s Programming Windows. It is primarily a C interface. Every Windows programming tool compiles code that calls the Windows API.

Second, there is COM, which stands for the Component Object Model. So what is COM? Essentially, it is a mechanism for linking software components together. It is a binary standard, so it works with compiled code at runtime. COM is a family of technologies. One of them is ActiveX controls as found in both Internet Explorer and Visual Basic. There is also COM automation, used in Microsoft Office and elsewhere to control one application from another. A third COM standard is OLE (Object Linking and Embedding), used when you insert an Excel spreadsheet into a Word document.

Third, there is .NET. The .NET Framework is Microsoft’s replacement for COM. I’ve already written about the rationale behind .NET; it’s a bit out of date, but mostly still applies. COM was replaced because it was failing. It is a tightly-coupled binary standard, which makes it frail for Internet applications. It is highly complex, which was one of the reasons developers were moving from VB to Java. It also has versioning problems, causing software failures.

By contrast, .NET has a loosely-coupled architecture, idea for Internet and mobile applications. It is also designed for ease of development, and has many security and versioning features that could not easily be added to COM.

It is hard to understate the significance of Microsoft’s shift from COM to .NET. I think we should assume that the company would not have done so if there had been a good alternative. If industry politics had allowed, It could have moved towards Java rather than .NET, but the move away from COM was necessary in order for the Microsoft platform to remain viable.

Today, with the family of technologies called Indigo, the extent of this move is becoming even more apparent. Indigo replaces COM+, the COM-base transaction server which is key to distributed Enterprise applications on Windows. Indigo is also the new standard for XML Web Services, message queuing, transaction management and remote objects, and even inter-process communications. Indigo is built on the second version of the .NET Framework.

So what has this got to do with Visual Basic? I assume that sometime around the year 2000, when the plans for .NET were coming together, Microsoft looked at Visual Basic 6.0 and wondered what to do about it. VB6 was first released in September 1998, so it was due for an update. At the time, VB6 was a popular product, but also the source of considerable discontent. Developers bemoaned its lack of full object-orientation and its many anomalies. Another issue was the VB roadblock. Some things that you could do in C++ or in Borland’s Delphi could not be done in VB, or could be done only by monstrous hacks.

The truth is, VB was never intended to be a complete development language. It was intended to be a language for high-level composition of low-level components, a glue language if you like. For this reason, VB created a highly successful third-party industry in components, mostly ActiveX controls. These components were built mainly using C++, but used mainly from VB. Without ActiveX, VB would have been severely underpowered.

VB gets its component abilities from COM. In fact, VB is built using COM. It is not just a good COM client or server; it is a COM product. The object-orientation in VB is that of COM objects, which is why it doesn't do inheritance (COM is based on interfaces). Create a class module in VB6, and look at its Instancing property. Would you like PublicNotCreatable or GlobalSingleUse? These strange terms are COM features. In other words the technology on which VB was built was the technology .NET was replacing. There was no way VB could easily be adapted to become a .NET language.

Clearly Microsoft had to implement a new Visual Basic. However, it made what in my view was the only feasible decision. The company created a brand new product, maintaining compatibility with VB6 only where it could be done without damaging the new language. In one or two cases it maintained broken features in VB6 for the sake of compatibility (the strange array dimensioning comes to mind), but in general it made the new stuff clean. The new product solved many of the issues that afflicted VB6. It removes most anomalies, supports full object orientation, removes the dependency on a single IDE (VB .NET has a command-line compiler), and largely removes the roadblock, putting VB on a par with any other .NET language.

The compatibility problem

However there was a huge price to pay, and that was compatibility. Let’s think for a moment about what this means. Imagine you are a large organization which has used VB6 to build applications that play a key role in your business. There are hundreds of thousands of lines of VB6 code. The database architecture is based on ADO, the last COM-based database model. Now Microsoft says that VB6 is the end of the line. What do you do?

It's a bad scenario, and not uncommon. Microsoft’s official recommendation is either to port to .NET, or to freeze the existing application to maintenance only, and build new features in .NET using interop techniques to integrate the old with the new. Neither option is particularly attractive. Porting is a major effort, and your application developers have skills in VB6 and COM, not .NET. Interop is another idea, but often raises performance issues as well as tricky programming problems.

Microsoft does of course offer porting tools. Frankly, these have an impossible task. They can help a little, but there are many inherent problems. The main difficulty is not with the language, which converts reasonably well in most cases. The difficulty is with the class library, components, and GUI framework. The Visual Basic forms engine is nothing like the .NET Windows Forms library. ActiveX controls work to some extent in .NET, but they are sub-optimal and often cause problems. Worse still, advanced VB applications make considerable use of clever hacks and API calls which are bound to trip up any porting tool. Finally, COM has a totally different architecture to .NET. How is a porting tool ever going to re-architect your application successfully?

Mitigating factors

There can be mitigating factors. In general, applications which are mainly non-visual will either convert or interoperate more easily than visual applications. Applications which use best practice in terms of separating business logic from presentation code, and which use an object-oriented design, will be much easier to migrate or maintain than those which do not. However, even the best-written applications still have a problem.

COM is not altogether dead

Personally I like .NET. My general instinct when considering the future of a legacy VB application is to plan a new .NET or perhaps a Java application to replace it. However, that is not always realistic. There is another option, which is simply to continue with VB6. Some people are spooked by Microsoft withdrawing support. Here’s the latest official story. In summary, mainstream support ended in March 2005. Extended support, which is almost as good, runs until March 2008. However, the real support for VB6 is in the community and on the Web. By now, almost everything is known about the product. In addition, VB is (as we have seen) hugely extensible. You can call the Windows API; you can consume ActiveX controls; and you can create DLLs in other languages and call them from VB.

There is of course a theoretical risk that Longhorn or some other Windows release might break VB, locking developers to old versions of the operating system. However, this is vanishingly unlikely for the foreseeable future. Microsoft is not stupid. Why would it wreck adoption for a future Windows release by breaking VB apps?

Another factor is that Microsoft itself still uses VB. VBA remains the macro language of Microsoft Office. For that matter, Office is still primarily based on COM. This isn’t only because of legacy code. The .NET Framework does not have any equivalent to Object Linking and Embedding, which is used to great effect in Office. COM is not going away, not in Longhorn, nor in whatever comes after Longhorn.

Consider support for 16-bit applications as a parallel example. 16-bit applications still run in Windows XP, even DOS applications. However, they don’t run in 64-bit Windows. It was impractical to support three levels of Windows (16-bit, 32-bit, 64-bit) simultaneously. I’d expect that VB6 applications will still run for as long as 32-bit Windows is supported. I’d also expect that 32-bit Windows will have a much longer life than 16-bit Windows, since there are more applications out there, and the advantages of 64-bit over 32-bit are small for most users. Your VB6 applications will run for a long time yet.

I'm not suggesting that sticking with VB6 is an ideal solution. It is already dated in some areas, and will get increasingly so. For example, it is hard to support Windows XP Themes in a VB6 application. As Microsoft moves on with Avalon, Indigo, and other new Windows features, it will be difficult for VB6 developers to keep up. However, I doubt this is the main concern of organizations contemplating their VB6 applications. It is more likely that they just want their applications to work correctly.

What else could Microsoft have done?

This to me is the key question, neglected by many of those who feel let down by the abandonment of VB6. Clearly Microsoft could have stuck with COM and not done .NET. I don’t personally think that was a viable option; if Microsoft had done that, the migration away from Windows to Java and elsewhere would by now be huge. It could also have created a compatible VB7 as a separate stream of non-.NET development. This is actually what happened to FoxPro. The killer disadvantage is that this would have offered no migration path for VB developers who actually did want to use .NET. If Microsoft had done that, nobody would have taken its .NET strategy seriously. Or it could have done both VB7 and VB.NET. Confusion would reign. It might have worked as an appeasement strategy, but it would not make any difference to the underlying awful truth: the COM-based VB does not fit in the new .NET world.

I think Microsoft made the right decision in freezing VB6. The right decision in this context does not mean painless. Microsoft was in a bad place, and so was VB; it was always going to end it tears.

Postscript on Borland's Delphi

It is interesting to compare what Borland has done with Delphi to the way in which Microsoft has handled VB. Unlike VB, Delphi was never a COM-based tool. It supported COM, but its primary dependency is the Windows API. Again unlike VB, Delphi has been fully object-oriented from its first version. Therefore, Borland had some options not available to Microsoft. It was feasible for Borland to create Delphi for .NET with reasonable compatibility.

However, looking at what has happened to Delphi you can see that this approach also has its problems. Like VB6, Delphi has its own GUI class library which is different from .NET Windows Forms. Borland addressed this with a kitchen sink approach. The company provided Windows Forms support in Delphi, but also ported the Delphi GUI library to .NET, as an alternative to Windows Forms (VCL.NET). Which way should Delphi developers jump? You can choose your incompatibility. Choose VCL.NET, and live on the margins of .NET with a niche GUI library instead of the standard item. Choose Windows Forms, and greatly increase the porting effort for Win32 Delphi applications. Neither is ideal.

Of course Borland has also continued to update the native code version of Delphi. This is still where Delphi is most compelling. It’s also apparent that while Microsoft is moving away from COM, it is not really moving away from the Windows API, which is still being extended in Longhorn. So native code Delphi still makes sense as a product, as does Microsoft’s native code compiler, Visual C++.

It is true then that Delphi developers have an easier ride to the future than those on VB6. That does not prove that Borland loves its developers more; rather, it says something about the technical differences between the products. Visual Basic is a special case.

Copyright Tim Anderson 2nd July 2005. All rights reserved.

Copyright ©2005 Tim Anderson


 
 
45 comments
Comment posted on 2008-07-18 02:48:14 by: caligula.
But I agree with Gordy. MS wants to dictate the future of the web... and it's pure bullshit. The web will evolve according to the needs of people.. and MS be damned.
Comment posted on 2008-07-18 01:59:00 by: caligula.
This dialogue seems totally pointless. Every comment assumes that every programmer has the same objective. Are you all a pack of white-shirted IT corporate morons who sit in a cubicle staring a god-damn monitor 8 hours a day? Working for the corporate monsters? Jesus.. how pathetic. If you are creative, you can play just as interesting music with a washboard as you can with a piano. Don't you think a creative programmer can develop just as useful applications in VB 6 as they can in .NET?
You people are pathetic.

Comment posted on 2008-07-17 21:08:46 by: John.
To all you VB6 attachments.
You were never real programmers in the 1st place.
.Net is the best thing that could have happened to the IT industry and the reasons speak for them self when you think like a real programmer and go look at what you can do with it.

So stop moaning and start doing B.A or some other boring job.

Comment posted on 2008-07-05 17:32:55 by: Scott M..
After 6 versions and 6 service packs for the 6th version, Microsoft didn't "abandon" anything.

In the software world you either adapt or become irrelevant. VB 6 was becomming irrelevant as Java and the web began to grow up around it.

It's really that simple.

What we have now is a modern, fully OO, and mature programming language that can compete at every level with any of the other OO languages out there. We have this available on a development platform that provides an infinite amout of additional features and performance to the programmer/user. Yet, there are those who complain that VB .NET is harder than VB 6. Duh?! That's because we are no longer working in a simplistic programming environment.

Comment posted on 2008-04-07 12:08:30 by: Srinath Sharma.
I am a great fan of Visual Basic 6.0 and it is very sad that microsoft has discontinued its development for the Visual basic 6. Rather Microsoft would have improved VB6 to VB7 with all the features of vb6 added with more functionalites.

Microsoft will loss its charm and they will have to pay for it. Microsoft have already started lossing its market and now they will shrink like TITANIC.
I request Microsoft " Bill Gates " for bringing back Viausl basic 6 to regains its charm and beauty of coding.

Srinath Sharma
INDIA

Comment posted on 2008-01-28 11:27:15 by: Jack.
Programming capabilities in VB6 or VB.net or any other language is more the capability of the programmer than the programming tools. Good programmers can write good code in any language. However, writing a good application often depends on how fast the OS can process the data. Any good programmer can tell you how fast he can read 100,000 or more records. I am finding with the new VISTA OS that reading and writing a lot of records is up to 3 times slower. I have written the code in VB6, VB.net and C - - Microsoft tells me that I need to rewrite and optimize my code. The code in VB6 is 3 lines long - - it runs 3 times faster on my Professional XP as it does on my VISTA test machine. I am willing to send the code to anyone that is interested.
Because of this my main VB6 program that I support loads with in VISTA 3 minutes, compared to loading in 22 seconds on XP. A lot of companies are faced with this issue with no solution. Just try reading 1,000,000 records (sequential or random) in VISTA compared to XP. I'm sure you will get the same results. I have details on the basic cause for those that would like to email me.
Jack

Comment posted on 2008-01-28 11:07:19 by: Jack.
The simple truth is VB.net is a lot harder than VB6 - - Ending VB6 will cause a lot of programmers to loose their ability to make simple to complex programs. Writing code to read and write data to files is very complicated in VB.net, where in VB6 you can with one or two lines of code read, write, append files in both sequential and random files. Try converting a sequential file to a random file in VB.net and you will loose your mind, especially when you want to read the random file and you can't use lset commands.
By the way I've earned over $200,000 for the last 10 years writing VB6 code. I won't give it up.
Jack

Comment posted on 2008-01-15 00:40:22 by: Ken.
VB6 = Covered Wagon
VB.Net 2003 = Volkswagon
VB.Net 2005 = Corvette
VB.Net 2008 = Porshe

and
VB.Net 2011 = ?
c'mon get with the program




Comment posted on 2007-12-24 06:30:53 by: Steve B..
In VB6 I could use the Rich Text Box Control to make a simple help screen and use MS-Word to create the text. I tried to use the Rich Text Box Control in VB .Net. It did not work at all. So much for VB .Net being better.

Also since the new VB .Net syntax is so similar to C#, what is the point in learning VB .Net? It has been made redundant since it is close to C#. And since C# is so close to Java, why go with Mico$oft at all, Why waste the time. Mico$oft will just come out with a new version later and you will have to change again.

Remember it is not a bug, it is marketing feature.

Final Note, Micro$oft will not create a VB7, to do so would mean they made a mistake. Just like Coke Classic.

Blessed Are They That Expect Nothing! For They Shall Not Be Disappointed.

The old is not necessarily outdated and the new is not necessarily better. Admiral Hyman G. Rickover - Father of the Nuclear navy

Comment posted on 2007-12-21 07:46:38 by: Ross.
To correct a something:

"Hmmm, given they did exactly that by shipping C and C# in the same box, this would seem to be a totally baseless argument at best. At worst, it's condescension of a very ugly sort. "Pity the fools," huh?"

C and C# are very VERY different animals. C# is very similar to Java, but somewhat more powerful in that it has pointers and method pointers (delegates.) It's basically a cross between Java and C (structurally, not syntactically.) Syntactically, it is almost exactly the same as Java. C is not object oriented at all. It is a much lower level language. C is neither structurally nor syntactically similar to C#, except just the names of the loop structures, the line terminator, the block delimiter, and the comment delimiters.

Overall, I would have to agree with most of the article and the comment of Larry Smith. Personally, I learned to program in VB5, but today I highly prefer C# over VB6. VB6 was useful for RAD, but (in addition to being based on what is now an outdated architecture) it encouraged some pretty bad programming practices. Sure, there are a lot of people who wrote good VB6 code, but there are also a lot that wrote really bad VB6 code. C# (as well as Java) are much better about enforcing good programming practices.

My personal preferences for now are C# for GUI applications, C or C# for servers or other more complex applications, and classic ASP (VBS) for web stuff. ASP.NET does seem to have several advantages over classic ASP (especially the ability to use non-sandboxed programming languages and the .NET framework,) but I really hate automatically generated code, especially automatically generated code that also generates a couple of dozen XML configuration files. Way too much overhead for my taste.

As for the comments on having to install the .NET framework to run VB.NET (or other .NET code,) almost all Windows installs already have the .NET framework installed. The Framework is pushed out by Windows update whenever a new version is released or a service pack or other update is released. If you keep your Windows install up-to-date, you should already have an up-to-date install of the .NET Framework.

Finally, as has been said by several other people, you should not ever just know one language. Different languages suit different problems. You should be familiar with several different programming languages of different types, if you want to be a good software engineer. For example, while it may be technically possible to write a web server in VB6, it would be the most convoluted mess of hacks you've ever seen and it would likely be horribly inefficient (especially due to VB6's lack of control over threading.) However, if you were writing a simple graphical text editor or some other simple GUI application, you could write a perfectly fine solution to it in VB6 (or C# or Java) in about 1/100 of the time it would take to write it in C (if not less.) While the C solution would probably run more efficiently, the difference would likely not be noticable at all to the user and the C#/VB6/Java version would probably be far more manageable.

Comment posted on 2007-12-13 05:36:52 by: ceh8c.
It is a shame that MS did not continue the VB6 line. If you're a dev on VB6 and you're forced to upgrade, many Vb6 devs 1st have to learn OOP... since the complexity of OOP in VB.NET and C# and Java is equivalent, the world moves in any direction (away from MS). .Net is also poorly integrated with Office and other COM applications, compared with VB6. Finally, the .NET runtime is a ball-and-chain. Try downloading the New York Times Reader. The .NET runtime takes 15-20 mins alone to install on most machines (after a ~20MB download); huge problem when you want to ship a light 3MB app. MS screwed up. OOP is a brilliant tool for larger scale software engineering but unnecessary in the RAD market, as evidenced by the overwhelming success of VB in the 90's. Read the account sometime of Microsoft's internal use of .NET in Longhorn (all the .NET code eventually had to be removed prior to Vista rebranding and launch and was rewritten in C ). Tragic.
Comment posted on 2007-12-05 10:45:38 by: Nissar.
I have quite a few VB6 applications still going strong and no intentions of porting it to .NET. I am quite aware that MS will never come up with a new version for VB6 - perhaps not even an SP for it. Who cares as long it works.
Comment posted on 2007-11-28 02:24:53 by: alan .
I too am stuck using visual 6.0 and would love to switch to .net language. But I tried to convert the project files using the .net conversion tool and good luck it dosen't work. I guess the world too would like to get rid of serial ports as well but there still being used. Just like credit cards where the world says embossing on card is dead and so is Magstripes but just open your wallet and see whats inside. Not everything runs on the network.
Comment posted on 2007-11-24 16:18:46 by: Mayflower.
VB6 offered cirect control over the Windows API without a framework. Windows native. That was what was so great about it. The .NET framework can be a hassle at some times, and the only way to develop Windows Native easily and quickly is with VB6. If COM could be re-invented, along with VB6, the world could be a better place.
Comment posted on 2007-11-19 05:20:01 by: Gordy.
You don't make billions of dollars by standing still. Microsoft hasn't released anything since 2003 that interests me - and I was a Microsoft fanatic for 20 years.
VB6, Windows XP, Office 2003 & SQL 7 formed the apex of Microsoft's creative talents. Everything since has been marketing and revenue based and almost completely useless for my purposes. I'm an Aerospace Engineer and I'm looking at leaving MS when they start breaking my code that's been running for decades. If I've got to re-write it, it won't be in .Net. It's sad really, but I'm not interested anymore...

Comment posted on 2007-11-12 20:58:58 by: Dany R.
I don't think it was stupid to use VB6, even though some people think that way here. I think they are stupid to think that way.

VB was the most use language in world and probably still is because of a huge number projects in 90s and early 2000.

In no way anyone should bet their career in ONE technology. It goes for C or Java too. I worked with VB6 but I also learned Java and .NET I can build web apps in ASP, Flex Ruby on Rails etc.

VB was good if you take advantage of its force. Coding simplicity. That gave you a lot more time to design and architect the application properly. Unfortunatly, a lot of people went straight to coding because it was simple. BIG mistake. That one think which created a lot of mess in many VB based apps.

What Microsoft should have done? Well they still could have make VB.net, but intead in re-inventing everything, they could have made a better effort to keep more of what VB6 was. You could still add all object oriented support by adding a few keywords and couple of things here and there. I feel that they've done more than that in VB.net.

I cannot say I am against it. I just think they went to other way to make sure everybody know that VB.net is a "real" language.

Comment posted on 2007-11-04 16:40:28 by: VBC Cam.
Jesus, when I read this article about VB I thought 'Suckers', because although I'm a BASIC man by heart, I've always written tricky-things like Windows Socket support in Visual C# and then linked the DLL I wrote in VC# to VB. This tatic has been in the family since 1991, when my uncle used C# to write Quick Libraries for VBDOS - He kept the source and found it was also compatible with VC 1.0, and so on...
Comment posted on 2007-10-27 17:56:04 by: MikeB.
Interesting array of opinions. I really wish that Microsoft at least had the aforementioned VB 7, but, oh well. Anyway- they may not have VB in .NET, but they sure as heck have Java, just not in name. C# seems AWFULLY similiar to java, in all but the libraries used (instead of java libraries, it has .NET), and change a few keywords, and BAM! C#. I suppose microsoft was partway through J .NET and was forced to withdraw it because of the Sun lawsuit. Now, why throw out all that fresh code?....
Comment posted on 2007-08-18 10:39:48 by: Phil.
I believe all this object-oriented nerd clutter is simply an MS marketing ploy. VB6 was too easy. They had to make it complicated to sell it to the OO-obsessives along with certification etc. Now I read that prefixing variables with type identifiers is discouraged in .NET as the preferred method is to hover a mouse over the variables! What if I want to print it out and read it in the bath??? Anybody got a waterproof, paper-reading mouse? You have to ask, "in 2007, why is programming more complicated than it was 10 years ago?" The answer is "money"...
Comment posted on 2007-07-09 02:45:01 by: Victor Ng.
Visual Basic is not a stupidity programming language as someone out there commented. Guys, we are talking about BASIC here, a simple, easy to use programming language, do we still know the meaning of this acronym? Are we still applying it? That's why it was called BASIC because it has to be "BEGINNERS ALL PURPOSE SYMBOLIC INSTRUCTION CODE". Now if you want it to be like a C-language you don't have to call it BASIC anymore. I hope all those arrogant comments would understand this.
Comment posted on 2007-06-19 19:09:38 by: Dan.
Tony, I still use Hungarian notation. Intellisense is nice but I don't like having to hover the mouse over the screen one variable at a time to see what their type is. It's a lot faster to use a naming convention that tells you on first sight.
Comment posted on 2007-06-19 17:08:24 by: TonyP.
I don't think anyone is trying to be snobbish. I think some of you are having a hard time accepting reality. I use to be a classic ASP (VBScript) programmer. I am thankful I made the switch when I did. I went from classic ASP to VB.Net 1.1 and then to C# 2.0. Moving from VB 6.0 to VB.Net is not hard at all. You just going to have to drop some bad habits.


For example, in VB 6.0 you did this

Dim blnValid As Boolean
blnValid = CBool(somevar)


in VB.Net or C#, you do this

Dim valid As Boolean
valid = Convert.ToBoolean(somevar)

Convert is part of the .Net frameword. You code to the framework and not the language. Notice I didn't use bln on the variable. Hungarian notation is discourage in the .Net world. Why? When you hover the mouse over the variable, it will tell you it's declaration. In this case, it will say

Dim valid As Boolean

The intellisense in .Net is far superior and will help you become more productive as a programmer.

Comment posted on 2007-06-16 08:08:36 by: Timothy Kondos.
Simple minds >>>

> Want an easy code for a small program you want to see it windows poped? Try Visual C or Visual Basic 6. The most painless way. :)
/// Example ///
A simple engineering calculator or a Phone Book manager

> Want an easy code for a high quality program you want to see it windows poped? Try .NET studio or ASPI.NET. The professional way. :)
/// Example ///
A database monster searcher

Comment posted on 2007-05-29 07:15:48 by: James Baxter.
Sure there are some minor differences between
VB6 and VB.net but tons of your VB experience
will still be the same and is still useful.

Any VB6 programmer who whines that it so difficult
to switch to VB.Net perhaps should consider a career
change instead.

Comment posted on 2007-05-24 09:21:45 by: Madhav.
Terrific article.

When we look at search statistics, Access and VB still command sizeable search traffic.

Visual Basic searhces are more comparable to Python.

According to a survey by computerworld, Visual basic is used by 62% of developers surveryed.
http://www.computerworld.com/developmenttopics/development/story/0,10801,100542,00.html

And we do keep selling our books from our sister concern Vkinfotek, Visual Basic books along with VB 2005 and SQL books.




Comment posted on 2006-10-06 07:12:12 by: Gary.
I want to buy a copy of vb6 pro with the hope of selling some software. Do es anyone know where I could buy a second-hand original or cheap new?
Gary
e-mail supplied

Comment posted on 2006-09-30 02:39:38 by: Anonymous.
I wrote all of the programs listed at www.nationalbridgeinventory.com in VB, including one which provides detailed data on every public bridge in the country, and another which provides graphical structural analysis of bridge-truck interactions. I purchased .NET a few years ago, but never had the time, need or inclination to learn a new programming language. They should continue to support VB for the many people like me, who need a simple language for everyday tasks.
Comment posted on 2006-09-30 02:28:53 by: White Tornado.
I'm not a programmer, just a lowly civil engineer. I've been programming in Basic since the days of DOS (20 years) and started VB programming with version 3. I'm very sorry to see the end of VB, as it was a language where non-professional programmers could quickly write very useful programs. I still make extensive use of VB5 in my professional work, including reasonably involved bridge engineering applications.
Comment posted on 2006-09-04 09:36:45 by: Triss.
Bill, what a stupid comment. Grow up.
Comment posted on 2006-06-12 02:20:39 by: Edgar Rodriguez.
Conclusion: Borland has better products, and ready for .NET and the worst sales department, and Microsoft hasn't the best products but has the best sales department in the world...

Keep in mind that Anders Hejlsberg was taken from Borland just the time he built Delphi and he put all he knew from the VCL into MFC and .NET...

Comment posted on 2006-06-07 00:29:04 by: Dave Atkin.
All very well to extoll the virtues of a new operating system or language but can anybody give a quick consise list of all the new things I will be able to do with .NET that I can't do now? Forget the pretty interfaces etc. The other point is that a lot of real people still use Windows 98SE how many will stay with Windows XP. Quite a lot I am sure as there is no real advantage in sending Microsoft money to gain nothing in return.
Comment posted on 2006-06-04 16:52:18 by: Tyrone Lee.
"It was clear from the beginning that VB6 was a poorly designed beast masked by its apparent simplicity. It wasn't simple, it was a complete mess under the hood."

But then again, so is Windows.. VB was a great language for rapid application development on an already inferior OS. The fact that the OS had memory leaks, limitted memory access etc.. has nothing to do with the way VB could create quick applications.

VB.NET is the worst language I've ever seen. It's OOP over kill. Commercial developers must also remember, the code written in .NET uses more objects than ever. Using objects does not constitute "copyrightable" code. So the code you generate is NOT something to you copyright & sell.

Latest versions of Visual Studio Magazine are already starting to "back-pedal" on the notion that .NET isn't powerful enough for *real* developers. The bottom line is, increase your skillset across a wide variety of languages and platforms.

VB, C/C ,& Java.. You should be able to program to native code languages, not be stuck in a slow BYTE COMPILED language with a 24 MB runtime. (Horrific!)

http://classicvb.org

Comment posted on 2006-04-21 09:58:51 by: Andrew Mayo.
Monstrous hacks, eh?. So you want to convert 4 bytes to an int or extract the low order byte. Well, how about this?

Option Explicit
Private Type ints4
byte1 As Byte
byte2 As Byte
byte3 As Byte
byte4 As Byte
End Type

Private Type int32
value As Long
End Type

Private Sub Command1_Click()
Dim ints As ints4
Dim longval As int32

ints.byte1 = 1
ints.byte2 = 2
ints.byte3 = 3
ints.byte4 = 4

LSet longval = ints
MsgBox Hex$(longval.value)
'or the other way round
longval.value = RGB(&H20, &H30, &H40)
LSet ints = longval
MsgBox Hex$(ints.byte1)
End Sub


Of course, you can't do that in .NET. LSET wasn't ported. Draw your own conclusions from that!.

Comment posted on 2006-04-08 10:32:19 by: Tim Anderson.
Re. command line compiler, sorry I wasn't clear. You can command-line compile with VB6 by running vb6.exe with arguments. It differs from the .NET vbc.exe compiler in several ways:

- vb6.exe is also the executable for the IDE, whereas vbc.exe is independent of the IDE

- vbc.ex is a free download, whereas vb6.exe is part of a paid-for product.

- the .NET Framework SDK has all the documentation you need to write vb.net applications without installing Visual Studio, whereas as far as I know the format of things like .frm and .vbp is not documented (though you can probably figure it out)

One of the consequences is that alternative IDEs exist for vb.net (aside from Visual Studio), whereas as far as I know there are none for VB5 or VB6.

Comment posted on 2006-04-08 08:27:55 by: bob.
"VB .NET has a command-line compiler"

...and this differs from VB5/VB6 in what way??

Comment posted on 2006-04-05 19:13:08 by: Karl E. Peterson.
"Or [Microsoft] could have done both VB7 and VB.NET. Confusion would reign."

Hmmm, given they did exactly that by shipping C and C# in the same box, this would seem to be a totally baseless argument at best. At worst, it's condescension of a very ugly sort. "Pity the fools," huh?

Citing Verity Snob as someone with a clue should have been reason enough to kill your credibilty, I suppose, but I doubt many followed that link. This nonsense is over the top.

http://classicvb.org!

Comment posted on 2006-04-02 09:11:01 by: Marco van de Voort.

You make an excellent case for having a different tools vendor than OS vendor.

The problem with them being the same is that you don't have a tools vendor. The tools line is much lower in income than the OS line, and will always suffer in strategy decisions.
... and so does your ability to maintain legacy apps.


Comment posted on 2006-03-30 10:01:03 by: Jim Irwin.
I am beginning studies in web development and my college is still teaching VB6 (along with C , java, etc.). One of the biggest problems with converting from VB6 to .Net is the cost of buying new licenses for your development suites--this can be quite hard for small start-up companies like mine.
Comment posted on 2006-03-22 20:45:49 by: Larry Smith.
Interesting and well written article. Overall, it's not so hard to make the switch to C#. I think that expressing code in C# is much cleaner and easier than in VB. I used VB for 6 years, and always cringed a little inside whenever I had to use a line extension character for a long statement.

Having made the jump to C# over 2 years ago now, I find it's actually difficult to "think" in VB terms anymore. Don't fear the change, just get in the water and swim.

Comment posted on 2006-03-16 21:59:42 by: AC.
below please do not type the [] for the test.cs or test.vb. They are just to show the start of some code.
Comment posted on 2006-03-16 21:57:22 by: AC.
VB .NET is not hard to switch to. If you are scared that this language will be frozen than consider this. Very simmaler code can be used in VB .NET and C#.

Here is an example

VB .NET (2.0)
[
Public Sub Main(String[] args)
' Write Hello
Console.Writeline("Hello")

' Write the first argument to the console
Console.Writeline(args[0])
End Sub
]

C# (2.0)
[
public void Main(string[] args)
{
// Write Hello
Console.Writeline("Hello");

// Write the first argument to the console
Console.Writeline(args[0]);
}
]

Very close. In fact the only difference is // is the C# comments instead of ', lines end in ; in C#, casing, and void is C# lingo for Sub.

Download the .NET Framework 2.0 SDK. Use the prompt to compile. For VB .NET type vbc test.vb and C# csc test.cs. The result will be the same. This is a simple example and huge projects may have huge differences. An example is in VB6 CStr(67) would convert 67 to a string, in VB .NET you would use System.Convert.ToString(67). This is for the Object Orented features.

Comment posted on 2006-02-17 17:04:25 by: Steve.
I agree with Bill's comment. I have dumped alot of energy into learning vb6, and now it is dumped. So now what...buy vb.net professional?.......I think I'm better off learning Java or C . VB6 was simple.....and now I'm gonna pay!
Comment posted on 2006-02-14 05:47:07 by: hh.
VB was the best language and very very nice for SIMPLE applications.Even microsoft initially had not thought that it would be so popular .

Comment posted on 2006-02-09 02:08:27 by: Tony.
I continue to used Visual Basic to implement a number of things in Windows. It is a great development tool for COM as stated in the article above. However, I complement my applications with ones written in Visual C 6.0. I have not migrated to the .NET platform (although I have used it just to experience it). My primary reason for not migrating yet is that I develop most of my applications using the MFC and ATL frameworks which have continued to be supported even in the latest versions of the Visual C products. I have heard that the updates are nice but I have yet to find something that I cannot code in C 6.0.
Comment posted on 2006-02-08 09:47:48 by: Bill.
You'll always pay for your folly.
Developers who jumped on the VB/COM bandwagon and bet their future career on VB6 made the wrong choice. It was clear from the beginning that VB6 was a poorly designed beast masked by its apparent simplicity. It wasn't simple, it was a complete mess under the hood. Just that most VB6 lovers (or should I say suckers) were just not smart enough to realize this, and now they are gonna pay for their stupidity.

You are welcome to comment on this page. For your guidance, HTML is not supported and URLs will be displayed as plain text. Add your comment here:

Your name: 

Your email (optional - will not be displayed or made public):

Type this code:    

Your comment