Python is readable

Steven D'Aprano steve+comp.lang.python at pearwood.info
Sat Mar 17 21:36:30 EDT 2012


On Sat, 17 Mar 2012 20:59:34 +0100, Kiuhnm wrote:

> Ok, so length and readability are orthogonal properties. Could you
> please explain to me in which way
>      mov eax, 3
> should be less readable than
>      for i in x: print(i)
> ?

"mov eax, 3" requires more domain-specific knowledge. It operates at a 
very low level, that of memory locations and bytes, rather than at a 
level which most people can reason about efficiently.

English speakers would probably guess that "mov" was an abbreviation of 
"move", but what is being moved, and from where to where, for what 
purpose?

They're also likely to flounder on the analogy of "moving" bytes. When 
you move a book from here to there, you leave a space in the row of books 
where there is no longer a book. (You might choose to move a second book 
into that gap, but first there is a gap.) But when you move bytes, you 
don't leave a gap. There are always bytes at every valid address. The 
average non-programmer is likely to have the wrong data model to 
understand what "mov eax, 3" does.

In the second example, most English speakers would intuit that "print(i)" 
prints i, whatever i is. "for i in x" is more cryptic, but if it were 
written with less jargon-like names, such as "for item in list" or "for 
person in family" or similar, they would likely guess that it means to 
repeat the following instructions for each item in the set:

"For each person at the table, place a plate, knife and fork."

And even if the reader can't guess the meaning of the for-loop, it is a 
concept easy enough for most people to grasp given some explanations and 
examples. It's neither too low level (assembly language), nor too high 
level (monads, functors) but is at just the right level of abstraction 
versus concreteness for the average person to follow.


-- 
Steven



More information about the Python-list mailing list