What would you think if your were reading some composition and in the margins were written an explanation(s) of the text that you were reading? They would probably have to be pretty big margins. You'd be pretty annoyed wouldn't you? You'd have to ask "Why did you just say so in the first place?".
Lisp allow you to practice this approach more so than other languages. Mostly because you have wide freedom in coming up with identifier names. See Steele 2.3 Symbols for more info.
One practitioner of this approach that I know of is Brian Harvey. For a class that is roughly equivalent to 2360 that he teaches at UC Berkeley the lisp code that he hands out has NO comments in it. [ OK maybe his name and a copyright notice. And on rare occations a one or two line comment on some "hack" that necessitated by the programming environment. ] The lisp ( actually scheme ) code is accompanied with a "doc" file which explains the overall design of the solution, how to use the solution, and any functions that might be unclear.
I guess another variation of this approach would be the people who practice. Literate Programming. In Literate Programming you write the documentation and the code for some system at the same time. Examples of this are the TeX typesetting system , and Stanford GraphBase ( both written by Don Knuth. remember him from Lecture #1? ). They are both books and programs. From one source file you can generate either. It is might be considered a minimalist's approach since the program code generated has no comments in it. If there where a book describing everything you needed to know about a program why would you need comments? There is a literate programming FAQ file available.
The is a relatively standard approach to doing this in Lisp, too. I'll talk about it in the next section.
The style is outlined in the book "Lisp Style and Design" (by M. Miller and E. Benson ISBN 1-55558-044-0 ). Here's the extremely condensed version of chapter 5 of the book. [ Editorial comments by me appears in brackets ]
5.3 Useful Commentary
"...You need two types of comments in program files - overview comments
to introduce the file, and body commentary to explain the body of the
code within the file."
5.3.1 Overview Comments
Basically should include an overview of what the file does,
who wrote it, what the known bugs are, and an edit history.
[ For me GNU Emacs (ChangeLog) and RCS (rlog ) take care of the
edit history outside the file itself. But this type of stuff
should be at the top every file no matter what the language. ]
5.3.2 Body Commentary
" Four Semicolons(;;;;)
...denote a sub heading in the file...
Three Semicolons(;;;)
...denote a description of the succeeding function, macro, or
variable definition...
[I usually just most of the description into the "docstring"
of the function or variable.]
Two Semicolons(;;)
...denote a description of the succeeding expression...
One Semicolon(;)
...denotes an in-line comment that explains a particular element
of the expression on that line... Brevity is important for
inline comments"
They then go on to explain how to decompose you functions into separate files,
how to put together compilation and load files, package files , etc.
[ as your programs become bigger this latter stuff becomes more important.
working on a 20,000 line lisp program with several other programmers
and where there is no preset style guide is a nightmare. I haven't
worked on one of those yet, but I have a 5,000 line BASIC horror
story I could tell.... :-(
Basically the Four Semi's allow me to skip from subsection to subsection
rather quickly using my editor ( because they're unique )
Differentiating between comments inside of a function and outside of
a function is nice to have. ]
Most of my code tends to follow this style. (
an example file ... don't
look at the code just the format. )