This is definitely a Great Debate. If you’re looking for two solid facts in the world of computer programming, they are:
- everybody has a language of preference, often fanatically expressed, and
- every language has strong points and weak points but few are objectively “better” at anything, none are objectively “best” at everything.
[sub]3. Opal doesn’t code so why ask[/sub]
I use Perl, Java and VB, with a smattering of C. I grew up with BASIC and used Fortran, Pascal, and Lisp in their heydays. What I’ve learned is that it really doesn’t matter. Occasionally I hit a problem that would definitely be easier in one language than another, but usually the language choice is dictated by other constraints than “is it best for this problem type”.
That said, I’d recommend Java for the following reasons:
- It’s object-oriented and includes all the features a modern language should (inheritance, polymorphism, yada yada yada). That means it’s close enough to C++ to serve as a primer if you decide to move into really low-level coding.
- It has a tremendous library set that supports things like XML, messaging, etc. so you can do really useful things without slogging through the nuts and bolts.
- There is a ton of online help, tutorials, forums, etc. This is true of most languages, but I’ve seen a lot more free, high-quality resources for Java than for most others. In general, the Java community is less knowledgeable and less helpful than the Perl community, but they’re a pretty good second.
- It’s certainly powerful enough to handle your stock market example. Many large financial corporations use Java back-end systems. Java doesn’t measure up to C++ in most benchmarks of raw performance, but it’s no wimp.
Perl is a great language and one of my favs. Above I said I rarely had situations where one language was clearly advantageous. When I do, that language is usually Perl. However, it’s (almost) entirely a scripting language. If you want to do GUI apps, you can tie into various libraries, but it’s not as straightforward as setting up a GUI in Java. If you need to process text data, it’s fantastically flexible, but other languages have integrated regular expressions, so they’re gaining ground here. I lump Python, Tcl, Ruby and other languages in this category too. They’re different from Perl, but not vastly so (ooh, GD here we come).
VB is also a great language. It’s easier to learn than Java, especially if you have a BASIC background. It’s great for rapid prototyping of GUI apps. However, it’s not nearly as powerful as Java (strike two on the GD count). Also, it’s status is in flux due to the whole .NET initiative. Lastly, unlike Java and Perl, it’s not free. You have to buy the IDE from Microsoft.
C# is basically Microsoft’s evolution of Java (another GD, three down). Like Java, it’s C++ without the “hard stuff” and by most accounts they learned some lessons from Java. My main qualms about C# are whether you want to be tied that closely to Microsoft’s whim (see implication in previous paragraph about MS abandoning VB). I’m waiting awhile to see how it plays out.
C++ is a fantastically powerful language, and it’s definitely the choice for most hard problems like operating systems. However, with power comes complexity and C++ is not as easy to learn as others.
Delphi is another language that is used quite a bit for commercial apps. I’ve seen very good apps and code, but I don’t use it so I can’t really separate it from the crowd.
There are as many other options as there are people to sing their praises. In the long run, once you learn one language it will be easier to pick up another as you add tools you need.