Case insensitivity
Pekka Pessi
Pekka.Pessi at nokia.com
Sat Jul 21 14:52:10 EDT 2001
In message <cpvgkofyru.fsf at cj20424-a.reston1.va.home.com> Guido van Rossum <guido at python.org> writes:
>My own intuition and experience tells me that there seem to be two
>kinds of people: some folks think case-sensitively, others think
>case-insensitively. Myself, I am a case-sensitive person, but I can
>easily learn to work with case-insensitive systems. It's possible
>that most programmers have case-sensitive minds, but I think that most
>non-programmers probably have case-insensitive minds. And
>non-programmers are quite the majority.
Most non-programmers like to use identifiers in their native
language. Some people are happy with US-ASCII (like, Swahili,
and perhaps Dutch), most Europeans are content with ISO Latin 1,
but the vast majority would like to use Unicode. Currently
Python supports ISO Latin 1, but I think that Unicode is the
future. In my opinion, supporting Unicode is more valuable for
more people than case-insensitivity.
>*If* there is any hard scientific evidence that case-sensitivity is a
>hindrance to learning to program (for most people), that would confirm my
>hunch.
I have some experience of teching programming with AmigaBASIC by
Microsoft, which was both case-insensitive and had ISO-Latin-1
identifiers. So, one could write program like this:
äiti=32:isä=35
lapsi1=isä/7
lapsi2=äiti/4
LAPSI3=ABS(lapsi1-LAPSI2)+LAPSI2+ABS(ISÄ-ÄITI)
PRINT lapsi3
However, this would not work. The Microsoft programmers were not
clever enough to extend case-insensitivity to ISO-Latin-1
characters: LAPSI2 is same as lapsi2, LAPSI1 is same as lapsi1 -
but ISÄ is not the same thing as isä, nor ÄITI same as äiti.
Now *this* is nasty surprise.
*Broken* case-insensitivity is not a minor wart. Calling it
hindrance would be an understatement. It is a major pain.
However, implementing the case-insensitivity properly is a real
hurdle. With Latin1, one may argue that it is doable, but
actually you would have to known the language in which the
identifiers are written (because casing rules vary from language
to language). Doing that with Unicode is next to impossible.
Really.
>To me, the only real important question is, how can we introduce
>case-sensitivity for novices without breaking the millions of lines of
>existing Python code. One option could be: forget it, it's too late.
If you plan to do it *properly*, go for it. Otherwise, forget
it.
>Another: put the case-insensitivity in the tools.
That would be easier, and much more valuable (the tools could
fix typos and propose similar sounding indentifiers, as well).
Pekka
More information about the Python-list
mailing list