Need high level comparison VB2005 vs VB.NET vs VB6 vs C# vs C++ vs Java

Thanks in advance
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Mike TomlinsonMiddle School Assistant TeacherCommented:
I'll start the imminent flood of flames and comments on how we have all misrepresented the capabilities of each language and misinterpreted each others statements...

How high level do you want?  Some of these are apples and oranges do you want to compare these languages?  With respect to what?  Such a broad question topic...

VB6 is a partially OOP language that is no longer in Microsoft mainstream support and is considered by some to be "dead" to new programmers.  Very rapid development but sometimes can be hard to scale if the data to be modeled would be better suited to full OOP implementations.

VB.Net is NOT the next version of VB6.  The two are significantly different under the hood but the SYNTAX of VB.Net is similar to that of VB6.

VB.Net 2003 and C# 2003 are based on .Net 1.1 are full OOP languages
VB.Net 2005 and C# 2005 are based on .Net 2.0 (also full OOP languages)
There are some significant differences between .Net 1.1 and .Net 2.0

C++ is full OOP language often used with the Microsoft Foundation Classes (MFC) to make WinApps.  The combination is what is usually referred to as VC++.
There is a C++.Net "version" which allows you mix .Net syntax with native C++ syntax allowing the use of the .Net frameworks managed approach.

Java is a full OOP language that was not created/dominated by Microsoft.  This is a good or bad thing depending on who you ask...

VB6, VB.Net, C# and Java are considered "managed" languages.  This means that NATIVE code will track your objects and "garbage collect" them automatically for you when necessary.  These languages use "references" instead of "pointers".

C++ uses "pointers" not "references" and is "unmanaged".  You need to manually track your objects that you allocate and dispose (deallocate) of them yourself or you will create memory leaks on your system.

C++.Net allows you to mix "managed" and "unmanaged" code.

The other .Net languages technically allow "unmanaged" code but not thru native calls.  You get the unmanaged pointers from external sources (such as API calls, etc...)

Let the flood begin...
Carl TawnSystems and Integration DeveloperCommented:
Personally, I think that explanation pretty much covers everything.

Just one small correction - C++ can use pointers AND references.

And one small expansion - C++ and Java have the benefit of being cross-platform, meaning they can be compiled and executed on different operating systems.
VB6 is solely Windows based, .Net (at the moment) is predominantly Windows based but there are various implementations appearing on different platforms, although none of them fully replicate the framework yet.
AlexF777Author Commented:
may I ask your opinion, what language is better for what task

if you had a choice between VB2005, VB.NET, VB6, C#, C++ or Java which would
you use and why

Mike TomlinsonMiddle School Assistant TeacherCommented:
It's impossible to intelligently answer that question without first knowing WHAT you are programming.

There is no single language that can do everything ~better~ than any other language.

You need to pick the best language based on the requirements of the application taking into consideration things such as the target hardware/operating system....
Carl TawnSystems and Integration DeveloperCommented:
Totally agree with Idle_Mind, horses for courses and all that.

But putting my personal slant on it, basing this on a very simplified choice of a day to day tool for web/desktop apps (no specialised areas or platform dependence implied in any way shape or form), i'd go with C#.

This is based purely on personal preference, but heres a quick rundown on why:

VB         -     Legacy language, not officialy supported by MS anymore. Have to delve into the WinAPI for anything "out of the ordinary".
C++       -     Incredible powerful and fast, gives ultimate flexibility. However, difficult to learn and generally has a longer development time than with other languages.
Java       -     Uuugh, the less we say about Java the better.................only my personal opinion (although shared by a lot of people).
VB.Net    -    Is .Net but based on 1.0/1.1

VB 2005  vs C# - Both are, as of VS2005, based on .Net 2.0. Both offer fairly rapid development. Both will compile (in most cases) to the exact same MSIL.

My choice of C# over VB is purely based on a personal preference of the C++ like syntax.

As I said, this is just my humble opinion, and there will be plenty of people who disagree.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.