From time to time I come across concepts in programming that take a certain number of exposures to grasp. Things like: tail calls, futures, monads, coroutines, closures, call/cc.

The common theme is that they cannot be explained in terms of the concepts I already know, so have to somehow develop a new vocabulary for them. But even once I think I understand a given concept I am still not really sure if I do.

I am wondering if you know of any effective ways to illustrate or explain such concepts graphically. I'm no good at following a formal mathematical exposition so that unfortunately doesn't help at all.

  • 3
    $\begingroup$ For me the best way of understanding a new language feature is to implement a toy-language with that feature in an interpreter or compiler, with the former being much simple than the latter. $\endgroup$ – Martin Berger Apr 10 '13 at 16:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.