On 6/21/07, Smylers wrote:
Mark Overmeer writes:
 > The boundary between freedom and anacharchy is faint.
Indeed.  And I'd much rather we err on the side of anarchy.

I'd much rather we didn't err at all! Just because something isn't "perfect" doesn't mean it's an error, or that it's not worth trying.

[...] and inadvertently prevent somebody in the future from doing something really clever that none of us have yet thought of.

How does having some standards prevent anybody from doing anything? Nobody's proposing Perl Documentation Police who will come and kneecap you if you try to do something new and better.

 > And those have a good example in standard UNIX manual-pages.  So:
 there is a definitions for them, which most people have seen.
I am sceptical of your claim that most Cpan authors have seen any official definitions of sections in Unix manual pages.

He only said they'd seen good examples. Which, really, are a kind of standard. Even if all we did was to write down those standards somewhere so that people weren't required to absorb them by osmosis, that would be a good thing.

I agree. And programming languages develop in hard-to-predict ways, which is why Larry is putting lots of flexibility for things to be redefined into Perl 6, so it can grow and adapt in line with future developments. It would be good if Pod can keep up.

Great, so let's have lots of rules and standards for documentation -- we'll just make sure they include formal ways to accommodate future growth. Perl 6 is full of rules (it's software! all it is is a big list of rules!), but it's still wonderfully flexible. I want lots of doc-rules, but absolutely do I want them to be flexible too.

I just don't believe that _anybody_ can come up with rules that won't be bettered at some point in the future.

Maybe; that doesn't mean we can't start off with some "really good" rules today. Besides, insofar as that's true today, it will be just as true in the future, so we'd be perpetually waiting for tomorrow's Better Rules instead of actually doing something with today's Pretty Good Rules.

I've encountered Javadoc, and I really dislike it[*0]. The fact that a standard exists does not make it a good one.

Nope. But we're living in Javadoc's future, so let's learn from its limitations and make P6doc better.

[...]
      Exceptions: none
      Side Effects: none

Lots of structure and consistency, but in practical terms no additional information compared to my informal doc -- and the verbosity and repetition actually make it harder to spot the information you want.

Well, clutter like "Blah: none" seems to me to be more the fault of the doc-formatter for not hiding lines like that. But even though I naturally tend to the lazy side myself, you have to admit there is *some* info gained by requiring the "Blah: none" -- namely that there really is no blah (as opposed to, "There might be, but I forgot to say so.").

That makes me think of a practical example, though: Say you want to find all the functions in your code that do have side-effects. Being able to search for code that has an explicit "side-effects" tag with a standard value of "none" (or undef or whatever) would be really useful.

Actually, can't P6 tell whether code has side-effects or not? Which is still a case for having structured docs; Perl could parse your code and automatically insert a properly-formatted line to say so, competently situated in the right place inside the rest of the documentation you had to write manually. (And your local "style sheet" could determine whether you see that line only when there are side-effects, or only when there aren't, or never, or....)

The point isn't to have *only one* way to document your code; it's to have *at least one*, that is, at least one way to build the FAD (Fancy Advanced Documentation) tools of the future. I envision things like "perldoc Test::BigHugeModule --sub=is" (sure beats searching the page with ctrl-F "is"; and a pretty modest wish, I think). Or perhaps I'm in the debugger, looking at the value of $foo and wondering why it ==666 and whether that's a bad thing -- I could hit a key and display the docs for that arg. Or I type "bar(" and my text editor helpfully notices that I'm using the bar() function, asks Perl for the specs, and pops up a handy summary of each parameter; it could even see that bar() takes exactly one argument, of type Mammal::African, and that I have exactly one such variable in scope, $aardvark, and be ready to auto-complete it for me.

Actually, that last bit about detecting types in a signature or variable is already possible, because Perl has formal rules for specifying such things in your code; I'd like the same advantages conferred on the documentation as well. If you have a file with the text of the Magna Carta, a computer is not going to understand it. You can add a bit of structure, like headings and numbered lists, but we're a long way from software that can interpret mediaeval politics. We do, however, have computers that can interpret [and even compile =)] Perl... it has subs and classes and lexicals and globals (and comments, and POD!). What a shame it would be if all that structure and information that is already available could not be put to good use by documentation tools.


Anyway, in case I'm sounding too polarised I should acknowledge that I do agree with your underlying points about not overly restricting things. I want rules *and* flexibility, and I believe we can have both, just as Perl itself is very structured (more so than P5), but is at the same time extremely flexible (also more so than P5!). I do agree that docs should have as much freedom as code; I want them to have as much structure too.


-David

Reply via email to