Case sensitivity
David Mertz
mertz at gnosis.cx
Fri Feb 21 21:24:07 EST 2003
|Alex Martelli wrote:
|> Case sensitivity, while still small, is worse, because it
|> recurs EVERY time you use a large module for which you have
|> not fully memorized every case choice -- it keeps hurting your
|> productivity because you DO have to memorize, or check, every
|> such detail, forever.
Erik Max Francis <max at alcyone.com> wrote previously:
|Is the overhead between 1. remembering the thing's name and 2.
|remembering the way it's spelled taking into account conventions and
|case _all_ that significant?
I'm totally with Alex on this. The way I remember names is
semi-auditory; maybe because I spoke and heard before I wrote and
read.... or maybe because my distant ancestors did so (in an evolutioary
sense)... or maybe just because I'm the type of person who is like that.
I think that Alex' remarks over time indicate that he is the same sort
of person; we might not be the majority, but our type is certainly not
rare (i.e. verbal more than visual).
So when I want to use a module/class/function like... oh, say cStringIO,
I hear a little inner voice that says the name: "see-string-ay-oh".
Try reading some code over the telephone to someone, that's similar to
the how I imagine code. In fact, that very type of communication is
something I do a fair amount (or over a table, etc).
Actually, even before that, I probably think about the composite
meanings in the name: (1) I want to do input/output, and I know that
the abbreviation I/O, or i/o, or IO, is frequently used to refer to that
idea. And since a slash can't occur in a module name, it's probably
"IO" (or maybe "Io" if consistent CamelCase is used). (2) I know I want
to use string-like storage, as opposed to file-like storage.
Hmmm... would it be "string" or "String"? I have no real intuition to
guide me here... my hunch would be it would be lower case, like the
'string' module (which is wrong, of course). (3) I also know I want to
use the version that was coded in C rather than in pure-python. Hmmm...
would that be a "C" at the start? Well, no, it's a "c"... doesn't make
as much sense, but that's how it is (the pattern is also there in
cPickle, so maybe I remember that).
The truth is, I finally DO remember the right spelling for cStringIO
now... after having made errors in the spelling dozens of times (each
corrected relatively quickly by the Python compiler, plus a quick lookup
in the docs). But almost EVERY time I start playing with a new,
unfamiliar module/class/function I go through this very same process all
over again... and each time I come back to something I haven't used for
a while. Remembering the cases isn't the ONLY issue, by far. Lots of
different words, and combinations of words, might be used to describe a
given object. But most of the time in Python, some fairly
straightforward English words are used in the names of modules/classes/
functions; guessing the right term succeeds a fairly high percentage of
the time.
I'm not a beginner. I've programmed for more than two decades. I write
books and articles about programming. I've worked in a score of
different programming languages. But it is still a DAILY occurrences
that I trip up on casing issues when writing Python code. I expect that
it will continue to be a daily thing until I die, or stop using Python.
These little trip-ups hardly make Python bad, or really -difficult- to
use... but they certainly make it just a little bit less easy than it
would be with case-insensitivity.
Yours, David
--
_/_/_/ THIS MESSAGE WAS BROUGHT TO YOU BY: Postmodern Enterprises _/_/_/
_/_/ ~~~~~~~~~~~~~~~~~~~~[mertz at gnosis.cx]~~~~~~~~~~~~~~~~~~~~~ _/_/
_/_/ The opinions expressed here must be those of my employer... _/_/
_/_/_/_/_/_/_/_/_/_/ Surely you don't think that *I* believe them! _/_/
More information about the Python-list
mailing list