I think the area where languages vary the most is how they allow you to talk
about the *name* of something, rather than the object itself. And this varies
for names of globals, constants, classes, instance variables, local variables,
and methods. I believe that the degree to which these concepts are unified is
a measure of the quality of the language.
(And whether or not (in a dynamic language) accessing an undefined
variable leads to nil or an exception. In Ruby, undefined local access
produces this amusing message:
> undefined local variable or method
but an undefined instance variable produces nil. I think anything that
discourages people from using a proper Hash is very bad.)