From my own point of view, people shouldn't be naming variables and classes with the same name anyway, but in vast, multi-person projects, that is going to be extremely difficult to maintain. It's like the need to slap someone round the head when I see them using the Java 'This' command.
I actually like cased languages, it gives a lot more flexibility on variable names (and yet, for some reason, I have a habit of defining Booleans as all caps), and makes the language more 'readable' from a purely aesthetic position.
I've always defined variables thusly:
thisIsAVariable - therefore, the first letter is always a lower case, all further words lineated with Caps.
whereas:
ThisIsAClass - using this, it means I can tell whether the program is dealing with an array, an object or a field at a glance.
For example, you see a line of code the reads:
if CheckList(14) then XXXX
now, without casing, you might be looking at a value being passed to a test method, or the 15th object in a variable array, by using the naming convention, you know that what you are dealing with in this case is a Method, whereas checklist(14) is the 15th item in the array checklist.