In the old LOGO days we let children "Be the mouse" - first be a mouse: Step forward, turn right.... hello, you made a circle, funny, how comes.. - then design a script for actions in the classroom on paper and check it with your feet.
Taking the viewpoint of the mouse on the screen became easier this way.
The same seams to happen when people are asked to take resposibilty for a card, even being the card, during CRC-Cards-Design during a scenario-check meeting.
-----Original Message----- From: Alan Kay [mailto:Alan.Kay@squeakland.org] Sent: Wednesday, October 31, 2001 12:48 AM To: squeak-dev@lists.squeakfoundation.org Subject: RE: Lots of concurrency
Mtichel Resnick wrote an excellent little paper a few years ago http://www.media.mit.edu/~mres/papers/JLS/JLS-1.0.html "Beyond the Centralized Mindset" (his bibliography is at http://www.media.mit.edu/~mres/papers.html , and many of his papers are online).
One of his very interesting opinions about the problems he observed was that they didn't seem to be so much about "concurrency being hard", but that it was quite difficult for students of most ages (even high school students) to be able to take the point of view of one of the little particles and to think about what it could see and do. This "taking a different point of view other than your own" was a centerpiece of some of Piaget's work. In theory, this is supposed to get easier as you get older, but it also seems to be something that has to be learned, and many don't learn it. The students had a kind of god-like, from their POV, way of looking at the world -- much like programmers who start off with simple algorithms munging datastructures. This doesn't scale well. In good OOP, the programmer should take the POV of the object in its environment, and help the object become self-sufficient, productive and robust. This way of programming really opens the doors to concurrency.
Cheers,
Alan
------
At 11:17 PM +0100 10/30/01, G.J.Tielemans@dinkel.utwente.nl wrote:
Children and students live in this era:
- They can send each other emails, it is possible to send eamils to a list
- They can send each other SMS, it is possible to send an sms to a group
- They can chat in a chatbox, private or in a group
-----Original Message----- From: Ken Kahn [mailto:kenkahn@toontalk.com] Sent: dinsdag 30 oktober 2001 20:33 To: squeak-dev@lists.squeakfoundation.org Subject: Re: Lots of concurrency
Richard A. O'Keefe wrote:
The question I think is interesting is whether telling students to think in terms of objects TALKING to each other makes it harder for them to think of concurrent implementations. Would some other metaphor (perhaps sending couriers with messages, or thinking about a factory with things concurrently moving from machine to machine at the same time) make it easier for them to think of and understand concurrency?
Before settling upon a carrier pidgeon metaphor for communcation in ToonTalk I considered lots of other alternatives including a postal system with mail carriers and mail boxes, rivers where you can place floating messages to those downstream, wires, fax machines, email, and telephones. I never considered face-to-face talking since I took for granted that objects are spread out spatially. I think the answer to Richard's question is that the right choice of metaphor can significantly facilitate thinking and understanding concurrent programs.
Wires may be how messages are really passed within and between computers but wires are not an ideal metaphor. The messages are invisible. Wires cannot be sent along wires. Directionality isn't apparent. Wireless communication is even worse.
Talking or telephones aren't good because both parties need to be available at the same time. Many-to-1 communication by telephone is confusing. While phone numbers can be communicated over the phone that would lead to a model where numbers denote objects or communication channels. So can they be made up and dialed at random? Not good.
Even the postal system doesn't provide an ideal metaphor. If you want to send the receiving end of a communication channel to someone do you have to pick up your mail box and send it by mail to someone? And then does the postal system know that the mailbox has moved or do you need to think about forwarding addresses?
A bird that when given something flies to her nest and leaves it there and returns works out very well. You can give a bird a box that might contain other birds and nests - not too strange. The only strange thing is that a bird always finds her nest no matter where it has been moved to. But that doesn't seem to cause any confusion.
All I know about Ken Kahn's ToonTalk is what I've read in
this thread,
but it sounds as though uses a "physical" rather than "verbal" metaphor, so I think his observations are particularly
interesting here.
You all are welcome to try out ToonTalk. There is a free trial version and you are all welcome to try to beta version as well. It only runs on PC with Windows (or Macs emulating a PC with Windows - don't know about Linux emulators). Details at www.toontalk.com
Best,
-ken kahn
G.J.Tielemans@dinkel.utwente.nl (2001-10-31 10:35):
Taking the viewpoint of the mouse on the screen became easier this way.
The same seams to happen when people are asked to take resposibilty for a card, even being the card, during CRC-Cards-Design during a scenario-check meeting.
Looking forward to your description of stacking cards on top of each other .-)
s.
shhhh ... I can't hear my code!
G.J.Tielemans@dinkel.utwente.nl wrote:
In the old LOGO days we let children "Be the mouse"
- first be a mouse: Step forward, turn right.... hello, you made a
circle, funny, how comes..
- then design a script for actions in the classroom on paper and check
it with your feet.
Taking the viewpoint of the mouse on the screen became easier this way.
The same seams to happen when people are asked to take resposibilty for a card, even being the card, during CRC-Cards-Design during a scenario-check meeting.
The biggest gripe about my logo days is that I never was able to understand the big picture of what was going on. Sure, making the turtle act like a dope was easy as anything but it didn't give me any clue as to how this could possibly relate to writing real software. Most notably, there was a really cool shell called "superdos" (Which runs only on DOS 2.x and 3.x); How do I get that flaming turtle out of my sight and make stuff that is actually cool?
In a summer camp one time with Logo Writer I spent the entire time writing a patheticly stupid game. I turn around and someone else in the same room had designed a game that had actual rooms in it that could be navigated 3D-man style. The memory still drives me up the wall...
In highschool I was furrious at other kids who knew the mysteries of 32 bit programming and stuff where the computer lab (in 1995) was still running off of dual-flopy Zenith XTs... I really wanted to rip their lungs out...
I don't know what the hell I wasn't doing or wheather it was even my fault at all...
I have finally achieved an understanding of what goes on in my windows 3.11 machine that I feel that I would loose part of my soul if I ditched it in favor of Linux. (Linux sucks for countless other reasons too).
Sorry for bending your ear like this....
squeak-dev@lists.squeakfoundation.org