I do a lot of trading software development like risk engines, VaR, Monte Carlo simulators, portfolio management, trade selectors, A.I., etc. I've contracted for Value Line, Inc., Fox futures, Futures@net (built the risk engine), APS Electric energy trading department and others. So this is what I do for a living. I've used C++, Java, .Net, Pascal, x86, old C, and Visual Basic from VB DOS all the way through 6.0 and .Net., PowerBASIC with inline assembly, and other stuff. I've used it all extensively. Now I use VC++, VB6, ASP, SQL and Java everyday, and C++, Perl and Java under UNIX often.
This is my two cents about this subject... in regards to trading software development and these languages with required runtimes. Each language (except for a couple) have their own place and special purpose. Runtimes are required everywhere.
Everyone's favorite: VB4 through VB6.
Visual BASIC... Beginner's All-purpose Symbolic Instruction Code.
VB and VBA are very popular languages, and the reason everyone loves the language is because it is easy to use and Microsoft pushed it on us like crack cocaine. VB makes excellent front-end GUIs and database clients, but stinks with drawing and algorithms. I use VB6 for a front-end every day, but I don't care if you compile with P code and optimizations or not... VB IS SLOW when it comes to intense processing and graphics. You might not notice if you have a fast computer. Even though VB allows you to do sloppy coding with variants for everything and other nonsense, its an easy language to work with and it allows you to get what you want done, in a hurry. Usually, being in a hurry isn't the best thing when it comes to programming.
Every once in awhile you'll find existing VB or VBA code that needs to be speeded up but there's just too much to port.
Only in this rare occasion I'll whip out PowerBASIC. PowerBASIC uses VB syntax to the point that you can cut and paste your VB code into it, and almost compile. With PowerBASIC your VB application is speeded up over 2,300% right from the start. Then you can optimize with CPU registers and inline x86 Assembly. PowerBASIC can be as fast as C. OOP is almost out of the question.
C++ is no doubt a tough language to use. Its a lot more difficult to use than Java because you have to worry about memory management. But boy is C++ FAST at drawing and processing. If you know how to use it, it comes in handy every time.
75% of my coding is done in C++ to begin with, because I'm comfortable using it. Like the other guy said, its not a language that you want to learn just to write one program with.
Java is next on the list. Its slower than C++, faster than VB but it doesn't matter... Java is all about developing object oriented cross-platform applications, to run on a network usually. Sure you could use it to build a desktop application but its not well suited for this purpose. Its better for writing cross platform network applications and small hand held programs. For instance, I'm using J2ME (Micro Edition) right now to emulate a Nokia cell phone on my Windows 2000 development machine. With J2ME you can develop software that runs on Nokia 3G phones, PDAs, other small devices, etc. Its a great language and easy to use, also well supported.
.Net (C#, VB.Net, etc.):
It is highly unlikely that anyone using VB6 will enjoy using VB.Net. In fact, it may make a VB'er take to the bottle.
That is, VB.Net is actually a Java-influenced VM framework with BASIC syntax. It is very object oriented and in fact shares some of the architecture with Java. C# is about as useless as tits on a bore hog. And this goes with all .Net languages. The syntax is familiar, but the VM stems from the 1997 Microsoft vs. Sun Microsystems's lawsuit in regards to J++ and Sun's Java language. If there ever was a language that needed a CD FULL of runtimes, Virtual Machines, etc, its .Net. If you need cross platform programming, go with the real deal: Sun Java.
In conclusion:
1) VB is great for a GUI front-end and light applications
2) C++ is better for graphics and heavy duty processing
3) Java is nice for networks and small devices
Richard