Sometimes I struggle to understand aspects of a language or even programming principals and, whilst there are lots of great answers on Stack Overflow (and throughout the web), I find the best ones that help me understand are the analogies used.<p>Here are some that I have found most useful:<p>* Understanding (C++) pointers with a hotel room, a keycard, a book and a broken contract. - http://stackoverflow.com/a/6445794/1401034<p>* Branch prediction using a railway junction. - http://stackoverflow.com/a/11227902/1401034<p>* [Im]mutable objects in Python with pretty ASCII drawings. - http://mail.python.org/pipermail/tutor/2001-February/003787.html<p>What are your favorite analogies?