I don't like the philosophy behind commenting code. It seems to imply that the code itself isn't understandable. And that is the fundamental problem.

Either:

  1. The author can't write understandable code.
  2. The reader isn't qualified enough to understand the code, and shouldn't be let anywhere near it .. comments or not.
  3. The language isn't expressive enough.

IMO, this is in order of commonality. All these are some kind of failure. Comments thus are a crutch for some kind of deeper failure in the code, organization doing the commenting, or programming language.

If comments were docile, I'd let it pass. But from the perspective of the machine, they aren't falsifiable. So:

  1. They can outright lie (maliciously even.. only code can be trusted) or get stale or just wrong over time.
  2. They can't be proven correct (see: unit tests for an informal but pretty effective way of testing the functionality of code, AFAIK no equivalent exists for comments).

I feel that adding the ability to comment code is up there with the "null" type in the fail department of programming languages, ie. one of the worst ideas to ever grace the programming profession.

Unfortunately, because comments are so easy to add to programming languages, they will continue on forever I'm sure.