Linux Today: Linux News On Internet Time.

LinuxJournal: Why Python? [Eric Raymond]

Apr 28, 2001, 20:07 (34 Talkback[s])
(Other stories by Eric Raymond)

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!"

Complete Story

Related Stories: