On a philosophical level, I've tried to answer this in the Rails Doctrine: http://rubyonrails.org/doctrine/. But on an aesthetic level, you'll have to read some code and play with multiple languages to get a sense of what's right for you. You can everything anything in anything, so it's not a functional barrier or choice any more. It's a philosophical, aesthetic, passionate one.