You're right, but the thing is, you can see the value most developers put in comments, in the quality and emphasis that programming languages put on comments. At best they're an afterthought, implementing what other languages have done before. I've never seen comments done "right" so I end up doing it myself.
I currently write in html, php, javascript, css, perl, sql, and command line script. Comments are supported differently in each. CSS is particularly awful, only supporting /* */ and including it in code-weight.
(mini-rant)
There are many types of comments.
To begin with, there's code-header comments - program name, change date, inputs and outputs, platform, etc. I used to program in COBOL and these were mandatory. In some languages this can be used to autodocument.
There are declarative comments - the kind you usually expect. They tell what a function or program section should do.
There are temporary notes and to do comments - "remember to change this so that it won't fail if we get a negative", etc. I use #! and #? for these (or /* #!yaddayadda */ if # isn't supported).
Then there's comment-out: places where I leave the previous code in for a while so I can see what I changed. If I can I put the # in the left column for these; wish there was a whole different symbol for it.
Finally, there's well-formed/best practices code as its own "self-documenting" - but that does not substitute for good comments.
(here's my blog rant)
http://www.obtainium.org/index.php?option=com_content&view=article&id=234:250&catid=7:programming&Itemid=2