Asking which programming language is best sounds alot like asking:

Which is better, a wrench, a hammer, or a screw-driver?

The simple answer would of course be: Pick the tool as it suits the task.

I think this is going to explain them alot better:

C is well-suited to modular, functional design and development. It suits layered processing and can handle inline calls to assemblers. C serves as a good language in which to write operating systems, compilers, and device drivers. It's a good language in which to develop other languages. C source is compiled to executables for particular platforms, i.e., machine architecture, OS, etc.. The programs will, therefore, both start and run fast on the platforms for which the are compiled.

C++ is the OO extension of C. It is class-based object model. This makes C++ well-suited to any problem-space that decomposes naturally into objects. Since most desktop applications, games, and even enterprise systems can be successfully decomposed into an object model, C++ is good for these. As with C, C++ is compiled to executable form for the target platform.

VB can do most of what C++ can, but is designed to be "easier" to understand and apply. There are performance and scalability trade-offs in favor of ease of development and support. There is a general snobbishness about VB by lots of "real" programmers that VB is not a "serious" programming language. That's an incorrect view, but VB is not as widely used for major apps as is C++ as a result of this impression.

Java can operate in all of the problem spaces of C++, but was intended to be "write-once-run-anywhere." This capacity is due to the fact that Java source is compiled not to executables for specific platforms, but instead bytecodes that can be interpreted by a "virtual machine." A virtual machine is an interpreter written to convert bytecodes into executable form for a particular platform. Any platform that supports Java has one of more implementations of a virtual machine. Java "runs" in the VM not directly on the OS layer. This has the performance drawback that each new object instance must be interpreted from bytecodes, causing additional overhead that can make a Java seem slower to start. The great virtue of Java is that you don't have to worry about the platform to which the program will ported...that's the VM's concern (if you write "pure" Java).

I've written C and Java seriously. I've fiddled with C++. Never wrote a lick of VB, but have worked in shops that used it for "real" business apps.

In general any of these languages can be applied to do any task - they are all general purpose languages. Without a better feel for your interests in programming, it would be difficult (or merely indicate my personal biases) to commend one above the others.

That's my overview from the edge of the galaxy.

0 comments