I found this as part of someone’s signature on Slashdot:
Object-oriented kittens have no ->microwave() method, but real world microwave ovens use a procedural model.
I sent it to a friend, who didn’t get it, so I had to write this explanation:
kitten->microwave() is another way of saying kitten.microwave(). In other words, microwave() is a “method” or function that the object “kitten” can perform.
So it’s saying that object-oriented kittens don’t have this capability – you can’t call the “microwave” function of a kitten.
Fortunately, real-world microwave ovens use the procedural model, so you can just write:
microwave(kitten)
I practically burst out laughing when I saw the original signature, and the end of my explanation set me into fits of laughter again. In retrospect, I guess the original joke contained quite a bit of subtlety that only a geek would understand – but I still think it’s funny. Ah, geek humor!