Comments in code are for maintainers. They point out parts which need fixing, lay out assertions on which the current piece of code relies, explain unusual constructs and point out side-effects upon other parts far away. Sometimes they refer to a bug ticket. A maintainer has the skills to understand the code without third party help, and comments which explain the code further than that are annoying and obscuring the fact to her.
All other comments on the code live in the documentation, and in the skill of teachers. See also the thread An Introduction to Literate Programming with perlWEB which also discusses the use of comments.