Sponsored Link •
Bill Venners: In your keynote, you gave ten reasons you love Python. Number ten was reduced clutter. What did you mean by reduced clutter?
Bruce Eckel: They say you can hold seven plus or minus two pieces of
information in your mind. I can't remember how to open files in Java. I've written
chapters on it. I've done it a bunch of times, but it's too many steps. And when I actually
analyze it, I realize these are just silly design decisions that they made. Even if they
insisted on using the Decorator pattern in
java.io, they should have had a
convenience constructor for opening files simply. Because we open files all the time, but
nobody can remember how. It is too much information to hold in your mind.
The other issue is the effect of an interruption. If you are really deep into doing something and you have an interruption, it's quite a number of minutes before you can get back into that deeply focused state. With programming, imagine you're flowing along. You're thinking, "I know this, and I know this, and I know this," and you are putting things together. And then all of a sudden you run into something like, "I have to open a file and read in the lines." All the clutter in the code you have to write to do that in Java can interrupt the flow of your work.
Another number that used to be bandied about is that programmers can produce an
average of ten working lines of code per day. Say I open up a file and read in all the lines.
In Java, I've probably already used up my ten working lines of code for that day. In
Python, I can do it in one line. I can say, "
for line in file('filename').readlines():," and
then I'm ready to process the lines. And I can remember that one liner off the top of my
head, so I can just really flow with that.
Python's minimal clutter also helps when I'm reading somebody else's code. I'm not tripping over verbose syntax and idioms. "Oh I see. Opening the file. Reading the lines." I can grok it. It's very similar to the design patterns in that you have a much denser form of communication. Also, because blocks are denoted by indentation in Python, indentation is uniform in Python programs. And indentation is meaningful to us as readers. So because we have consistent code formatting, I can read somebody else's code and I'm not constantly tripping over, "Oh, I see. They're putting their curly braces here or there." I don't have to think about that.