...it depends...
Well yeah, of course it does. "Good" means nothing at all without "good at what".
Three of the key metrics are of course:
- speed
- memory consumption
- size of the code base
Here is a very nice website that let's you weight what you are interested in most to race your favourite languages against eachother.
I recommend that you spend some time to play with the parameters. What happens if you rate CPU time (performance) to be most important? Which language is a good choice if you want the smallest codebase?
Thanks to Miguel for the pointer on his blog and for his interpretations.
When you choose a language for your next software project you may want to think beyond three simple metrics that are easily measurable. Here are some more factors that need consideration:
- Potential user base for libraries that you write
- Availability of educated and experienced developers
- Strong IDE support
- Tool support (profilers, code coverage, obfuscators, build)
- Productivity (time needed to write one line)
- Readability (time needed to read one line)
- Safety (Does the compiler check as much as it can?)
- Advanced Concurrency Concepts (Actors, Software Transactional Memory)
- Elegance
- Reusability
- Availability of powerful (free) libraries
- Supported deployment platforms and operating systems
- Future (Who will develop and support the language ?)
- Availability of the language source code
- Extensibility of the language source code
My 2 cents: No language is perfect. Comparing to all other languages, the big picture of Java is quite good. Functional languages are likely to have a bright future in a more concurrent world [1]. Scala could give us the best of all worlds, if IDE integration were better and if there would be visible strong support by one of the big players (preferably Sun, IBM or Google).
[1] While travelling over the holidays I spent some time to read in books on Haskell, Erlang and Scala. Mind bending! Great fun!