Steven D'Aprano a écrit :
On Mon, 29 Sep 2008 18:27:22 +0200, Bruno Desthuilliers wrote:

Lawrence D'Oliveiro a écrit :
In message <[EMAIL PROTECTED]>, Ross Ridge wrote:

You need either use trial and error to find out, or look at the
source.
So what's wrong with using the source as documentation? :)
Don't know... Ok, having higher-level documentation  (the big picture,
and quick description of what and how for classes and functions) really
helps. But when it comes to nitty-gritty details, source code is the
best documentation ever, since it's always accurate and up to date.

FWIW, I'm often surprised by people asking questions about some
implementation detail of some open-source library or framework that are
very easily answered just looking at the source code. Reading the source
is 1/ the best way to really know how something is implemented and 2/
usually very instructive.

Reading the source code is good, but it's not a panacea.

Not what I implied.

There are at least four things wrong with the advice to read the source code:

My "advice to read the source code" was not meant as a *replacement* for documentation, but as a *complement* to it. What I meant is that you just can't document each and every detail of implementation.


(1) It's not always available.

(2) Even when the source is available, it is sometimes a legal trap to read it with respect to patents and copyright. E.g. some Microsoft so- called "open" licences (but not all) allow you to read the source, but if you do then everything you program in a related field from that point is legally contaminated and could be considered a derivative work of Microsoft's software.

I obviously implied that source was freely available and you had the right to read it. Else it just makes no sense.

(3) Source code not always understandable without significant effort.

That's why reading the source can have a great educational value, isn't it ?-)

Code can be obfuscated, either to hide the algorithm,

same problem as closed-source software - not concerned by this advice.

as an optimization, or simply because the coder is cleverer than you are. It might be in a language you don't understand (e.g. Python built-ins are written in C, not Python. I have to learn C to find out what exceptions sorted() can raise?).

Every developer should have at least basic knowledge of C. MHO of course.

That's why accurate documentation should be preferred in the first place.

Indeed. Did I say otherwise ? Now not all code has accurate documentation, and then you're happy to be able to access and possibly understand the source code. I'm not talking about an ideal world here.

(snip)

Yes, documentation can fall behind the source code, but once the code is stable and the documentation has caught up and is accurate, there's no reason to re-invent the wheel by slugging through the source just to find out something already documented.

Once again, that's not what I said.

(4) Even when the source code is available, legally unencumbered, in a language you understand and not too complicated for you to grasp, there's the combinatorial explosion: you may need to read and understand an arbitrarily large and complex chain of software merely to know what a single function can do.

Yes, this happens when hi-level documentation is lacking. At least you have a chance to gain some insight !-)

E.g. you want to know what exceptions function spam() can raise:

def spam(x):
    a = 1
    b = 2
    c = ham(x)
    return fried_eggs(a, b, c)

Now you need to understand ham() and fried_eggs(), but they aren't documented either. So you turn to their source code, and each of them call two functions, each of which call another two functions, each of which call *another* two functions...

And still you're a lucky guy if there's no callback, conditional import and / or polymorphic dispatch involved.


Steve, I may not have been clear, but I didn't meant that code shouldn't be documented. I was :

1/ answering to the question "So what's wrong with using the source as documentation?", my own personal answer being that it's something I often do, whether because I want to find out some detail not covered by the available documentation, whatever this available documention is worth

2/ digressing about the fact that, to my suprise, few developpers seem to *first* have a look at the source code when either documentation is lacking or they'd like to know more about some implementation detail. But FWIW, it seems that few developpers even bother reading the documentation at all :(


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to