After seeing yet another programming language comparison on Digg (of Java vs Python where Python won) I felt I had to say something. Please, for the sake of the sanity of intelligent programmers, stop trying to compare languages. With few exceptions, any intelligent developer worth his salt will tell you to use what is best suited for the project. Obviously that's not to say developers can't be against certain languages, like I dislike Python and Ruby (due to syntactical reasons), most languages have their place.
Real knowledge
The biggest problem with someone writing some silly article comparing languages is that nine times out of ten, they know one of the languages well and have barely touched the other and dislike it or have something generally against it. So they think, somehow, they are an expert on the subject and compare silly things like how many lines it takes to output "hello world" or some such nonsense. In most cases, exact line count is irrelevant anyway (obviously extreme differences are excluded, but you get my point.)
Simplicity != better
Another problem is most of these relative noobs tend to compare easiness with quality. For example, having dynamic variable types might make life easier in short scripts, but in large applications you'll wish for statically typed variables. Not to mention that many small bugs can be avoided because quality IDEs will warn you about type errors before you even get to testing the application. Heck, PHP is my language of choice and I wish it had statically typed variables (or at least the option.) Not to mention static types are faster then dynamics.
Verbosity
Verbosity is another silly thing to call a bad thing. It's purely up to personal preference. Sure, you might type a few more words here and there with a more verbose language, but if it makes more sense reading through trying to find that bug that's been bugging (not intended) you for hours when its 02:00 and you're tired as can be.
Syntax and language features
I'm really unsure how you can decide one of these as absolutely better then the other:
// Java
for (int i = 1; i < 10; i++) {
System.out.println(i);
}
# Python
for i in range(1,10):
print i
I fail to see how it's more then personal preference. Personally I'd go with the former, mostly because it's pretty much the standard way across countless languages (the loop of course.)
File separation
Most would say this is personal preference, but I disagree and I'm sure your co-workers would too when you're working on a project together and every time they try to submit changes they have to re-merge their code with yours (or wait until you unlock the file) because you went with everything in a single file. I suppose I could see that you should have the choice, but personally I feel a language forcing you to use a file for each class isn't a deal breaker (or giving you the choice a decision maker on whether to use a language or not.)
Multiple constructors
Hmm.. can you guess what I'm going to say? Personal preference. I can see both sides of this. I actually don't know which I like better. Multiple constructors can be annoying since you have to write a lot of duplicate code, but I usually overcome that with having the individual separate operations in the constructor and then an .init() to handle the common operations. A single constructor can be nice because you can assign everything to the arguments and since you'll need to do null/isset checks later anyways (and should) you don't need to deal with conditionals on whether to set them or not and you have one code base. On the other hand you have to deal with potentially large argument lists.
Conclusion
Pretty much no matter how you try to compare languages (unless you are running very specialized benchmarks), it comes up as pointless. Most aspects of programming languages are personal preference, and any attempt to compare the common things is silly and reeks of ignorance on the part of the person trying to compare them. Obviously there are very specialized features or methods that can potentially make languages better then others (not to mention speed or framework weight *cough*.NET*cough*), but for the majority of comparisons, this holds weight.



