I'm simultaneously reading Learning Python, Programming Ruby and Java in a Nutshell (though it's the first edition, not the third, but that's the only link I could find on their site. . . *sigh*). I'm in a sort of OOP Boot Camp. I've got folks at work telling me that Python is pretty cool, friends saying that Java is the one true way and a little voice in the back of my head that tells me "Ruby, it's the Perl of the new millenium."
I'm not a big fan of typed languages. . . This and garbage collection are the major reasons I use perl instead of C. Variables and functions being sprung to life fully formed from the head of Zeus is much easier for me than having to predeclare var types, function params and return values. . . If it's important enough and not patently obvious from the name sort_by_name that it's going to take an array of hashes (which all have a name key) and return an array of hashes all sorted by the name, then I'll put a nice comment above the code to spell this out for whoever happens to want to re-use my code after me. Besides, I've always thought making things easier for the user is what computers were supposed to do. From an aesthetic perspective, I don't like a language or compiler making me do work it should be able to do. Java annoys me because of this.
Python is nice, but has some irritants to it as well (all variables are class variables, not instance variables, unless declared inside a method. . . what's up with that!?!?!? I realise I can get around this with an __init__ method, but why do I need that?) I guess it just doesn't do things in the way I think it should (which isn't necessarily a bad thing if it does it better, but from what I see right now, it just does it differently). Oh well.
Ruby just seems right at the moment. The only bad thing about it is . . . it's new and is fewer places than Python. There isn't the wealth of software examples out there that there are for Java and Python (though I believe that will change).
Who will win. Who's language will reign supreme!?!?!?