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 -- http://mail.python.org/mailman/listinfo/python-list