A small exchange regarding Python in our earlier link to the
latest release of CML (that’s a friendlier tool for kernel
configuration slated for inclusion in 2.5.1 or 2.5.2) jogged our
memories about an earlier essay we came across by none other than
the author of CML2 himself: Eric Raymond. LT missed it the first
time, so here’s a link now.
“The thought of implementing this in Perl did not thrill me. I
had seen GUI code in Perl, and it was a spiky mixture of Perl and
Tcl that looked even uglier than my own pure-Perl code. It was at
this point I remembered the bit I had set more than six months
earlier. This could be an opportunity to get some hands-on
experience with Python.”
“Of course, this brought me face to face once again with
Python’s pons asinorum, the significance of whitespace. This time,
however, I charged ahead and roughed out some code for a handful of
sample GUI elements. Oddly enough, Python’s use of whitespace
stopped feeling unnatural after about twenty minutes. I just
indented code, pretty much as I would have done in a C program
anyway, and it worked.”
“That was my first surprise. My second came a couple of hours
into the project, when I noticed (allowing for pauses needed to
look up new features in Programming Python) I was generating
working code nearly as fast as I could type. When I realized this,
I was quite startled. An important measure of effort in coding is
the frequency with which you write something that doesn’t actually
match your mental representation of the problem, and have to
backtrack on realizing that what you just typed won’t actually tell
the language to do what you’re thinking. An important measure of
good language design is how rapidly the percentage of missteps of
this kind falls as you gain experience with the language.”
“When you’re writing working code nearly as fast as you can type
and your misstep rate is near zero, it generally means you’ve
achieved mastery of the language. But that didn’t make sense,
because it was still day one and I was regularly pausing to look up
new language and library features!”