I posted this in reply to a question about variable assignment on the ruby-lang mailing list:
> WHY is var line getting changed by operations on var base_name? Isn’t
> ‘base_name = line’ supposed to create a copy? ‘=’ in this case seems to
> be acting like an alias or something.One clear night a great zen master said, “A variable is like a finger,
pointing to the moon. The variable is not the moon; it is only a
sign, showing the way. Other fingers, of other masters, may point to
the moon as well; but they all point to one and the same moon.”An acolyte asked the master, “But master, what if I want TWO moons?”.
The master stood silently for a moment, and then uttered the single
syllable “dup!” and struck the acolyte sharply on the back of the head
with his staff. The acolyte fell to the ground, and staring up, saw
that there were now two moons floating somewhat shakily in the sky.At that moment, he was enlightened.
Shouldn’t the Zen master eschew violence?
Maybe instead he just inclines his head towards the reflecting pool, where the image of the moon is clearly visible…
Hardly. Some Zen schools are known for their their rather attention-getting means of keeping the mind focussed – while the monks meditate, other monks stroll the lines with sticks. And when they happen upon a monk who appears to have dozed off in his meditations, they solemnly bow to him, and then give him a good solid whack.
Zen also inspired the phrase “Zen slap”, for the literal or figurative slap in the face zen masters have been known to administer to students at just the right moment to further their path to enlightenment.
Not to mention that Zen originated in the Shaolin monasteries of China, the birthplace of kung-foo, before moving on to Japan.
P.S.
See http://c2.com/cgi/wiki?ZenSlap for more.