On 3/18/2012 2:36, Steven D'Aprano wrote:
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.

Would you be so kind to give me your final definition of readability and /stick/ to it?
You keep changing it every time I point out a flaw in it.

Kiuhnm
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to