> The coffee-cup-handle metaphor is certainly useful, but IMHO not quite as > spot-on as the sticky-note metaphor. > > -John Posner >
Excellent review John thanks. Below is the kind of thing a teacher could project. IDLE 1.2b2 >>> handle1 = ['coffee','sugar','cream'] >>> handle2 = handle1 >>> id(handle1) 13645944 >>> id(handle2) 13645944 >>> handle1.sort() # alphabetize in place >>> handle2 ['coffee', 'cream', 'sugar'] >>> handle3 = handle1 >>> handle3 is handle2 True So by this time with have a list in Memory with three handles (handle1, handle2, handle3). The idea of a cartoon mug with more than one handle seems "sticky" in the sense that students are unlikely to forget it easily. BTW, I just searched and found a real two-handled mug for sale in Ireland: http://www.assistireland.ie/index.asp?locID=1885&docID=1742 One reason I like this "handle" nomenclature is kids use "handles" for themselves, i.e. for chat rooms, other places where some notion of primitive identity is required (Second Life is especially popular these days). So there's already this builtin sense of "me" (myself) with multiple handles, multiple ways for others to get in touch with the same identity. I like the idea of making Memory a spatial affair i.e. instead of just using flat rectangles or circles to represent contents, we could use 3D-looking balloons or balls. Balloons with multiple strings is a good analogy (or just the one string). When no strings attach, the balloon simply floats off, out of sight out of mind (out of Memory). Cartoon animations of Garbage Collection: what should those look like? We need to connect here: a discussion of immutability. A list can be shaken and stirred without losing its identity. However, strings are considered immutables in Python, meaning if you fix a typo, you get back a new string, not a change in the original Memory container. Tuples are similar, in that you can't change the handles inside a tuple -- but you *can* change the Memory contents of what the handles point to, e.g.: >>> mytuple = (handle1, handle2, handle3) >>> mytuple[1] ['coffee', 'cream', 'sugar'] >>> handle3[2] = 'vanilla flavoring' >>> mytuple[1] ['coffee', 'cream', 'vanilla flavoring'] What's a good metaphor for explaining about intern? >>> help(intern) Help on built-in function intern in module __builtin__: intern(...) intern(string) -> string ``Intern'' the given string. This enters the string in the (global) table of interned strings whose purpose is to speed up dictionary lookups. Return the string itself or the previously interned string object with the same value. >>> Kirby _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig