From: Kuba Ober <ober.14@osu.edu>
To: caml-list@yquem.inria.fr
Subject: Re: ocamlbuild documentation (was Re: [Caml-list] Re: [ANN] OCaml Batteries Included, alpha 3)
Date: Mon, 9 Feb 2009 12:26:58 -0500 [thread overview]
Message-ID: <529134A7-94A7-4E0F-BB1E-93A0ADE0FD49@osu.edu> (raw)
In-Reply-To: <3F6E6CB5-4609-49CE-BCFB-AD609B4BDD78@erratique.ch>
> Le 9 févr. 09 à 15:04, Romain Bardou a écrit :
>
>> However, there ARE some examples in the part which talks about
>> "flag", where we clearly see an usage (After_rules).
>
> Which doesn't mean it cannot be used differently.
>
> Anyway it seems useless arguing further: we just don't have the same
> standards.
>
> The only thing I see is that there are still a lot of mentions to
> makefiles on this list and a lot of new projects don't use
> ocamlbuild while ocamlbuild is clearly a superior alternative. The
> only way I can explain this is by lack of good documentation.
I'd argue that make's documentation is no better. The TeXinfo pages
distributed with GNU make are useful as a reference, but if you don't
use make much it's a big pain. A good manual IMHO should essentially
have two parts: first is a narrative introduction of all features,
with good examples. Second is a reference section where each command/
setting/UI element is documented in detail.
I have to use make and similarly documented tools (say gnuplot) about
40% of any given 12 month period. I waste lots of time looking for
same information over and over... simply because it's *documented* but
in some hard-to-get-to corner of the hypertext tree. Even Octave's
manual, though more conventional in style, is still written in such a
way that there are no pointers to most common features if all you do
is look at the contents table...
OCaml's manual is, unfortunately, in the same class. For someone who
is not a devoted, full-time user, it's virtually useless. Unless you
know the term/keyword you're looking for, there's no way to find it
short of going through the whole thing page-by-page.
Such manuals are designed to adhere to some 'higher deity' "standards"
of organization, which make them useful to robots perhaps, but nut to
humans. There's utter lack of locality of reference. The authors also
somehow abhor saying things out like they are. Instead of "just saying
it", the sprinkle the information all over the place, in places you'd
least expect to find it.
Suppose I haven't used lists in OCaml much and would like to refresh
my memory. There's a sparse "introduction" to them in section 1.2.
List.map is "introduced" in 1.3; List.assoc in 1.6. The syntax of list
constants (ekhm, sorry, they are called list expressions) is basically
assumed. The list type syntax is given in 19.1. The list concatenation
operator is given in Module Pervasives documentation, in the "List
operations" section. Why the plural? -- beats me. And then there's the
List Module which gives the rest of it. There's no single place that
actually gives list syntax and explicitly says: dude, a list is
written as [ foo; bar; baz ]. Section 6.7 gives expression syntax,
which includes list expressions, but the *narrative* of list syntax is
given in -- of all places -- section 6.7.2 "operations on data
structures", under the heading "Variants". All in all, this is a good
WTF of a manual.
Lisp's hyperspec is, after some getting used to, a better "manual"
than OCaml's "manual" is. Even though a specification is typically
unfit for daily consumption, at least it's reasonably self-consistent,
so once you figure out how it's structured, you'll find things where
you expect to find them. This doesn't address the locality of
reference (there's hardly any) and similar maladies, but at least it
doesn't suffer from lack of self-consistency. It's a bad manual, but
at least everywhere it's bad just the same. OCaml's manual is bad in
many different ways, but not always, and not at the same time. This
actually make's it even worse...
Jon's "OCaml for Scientists" is written more in the way a manual would
be written, but Jon didn't intend to write a manual in the first
place, so I cannot blame him that the book isn't really useable as a
full-blown manual. It does its prescribed job just fine, though.
If there's a good manual I had first-hand experience with, it must be
the one that came with Borland's Turbo Pascal. It was entirely clear
and understandable back when I was in elementary school. This is in
spite of my English being pretty elementary too, back then. Not only
was all the information I ever needed in the manual, but it included
all the nitty-gritty details you needed to interface to Pascal code
from assembly, and the other way around. Down to the layout of
compiler-generated stuff (vtables, packing, etc). It was also included
in the on-line help system, and there the hypertext navigation
actually made it more accessible/navigable. Must be one of the very
few manuals which were originally written on paper, and then meshed
with hypertext while improving usability. I can only give Borland's
doc team from back then highest praise.
Writing good documentation takes skills which don't necessarily mesh
with skills of an accomplished software engineer. It's an added bonus
if a software engineer/scientist is a good documentation writer, but
that's very, very rare. There are many either excellent or pretty
decent open source tools that desperately need a manual written by
someone who knows how to do it. The authors are good at making the
tools, but their technical writing skills leave a lot to be desired.
I'm referencing stuff that I use: OCaml, make, autotools, Octave,
gnuplot, Maxima, ...
Cheers, Kuba
next prev parent reply other threads:[~2009-02-09 17:27 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-06 16:11 [ANN] OCaml Batteries Included, alpha 3 David Rajchenbach-Teller
2009-02-07 14:21 ` [Caml-list] " Mikkel Fahnøe Jørgensen
2009-02-07 14:43 ` Sylvain Le Gall
2009-02-07 14:58 ` [Caml-list] " Jon Harrop
2009-02-07 15:13 ` Sylvain Le Gall
2009-02-07 16:13 ` [Caml-list] " Matthieu Dubuget
2009-02-07 19:30 ` David Rajchenbach-Teller
2009-02-07 21:13 ` Matthieu Dubuget
2009-02-09 9:36 ` Romain Bardou
2009-02-09 15:56 ` David Teller
2009-02-07 15:46 ` Paolo Donadeo
2009-02-09 9:32 ` Romain Bardou
2009-02-09 10:30 ` ocamlbuild documentation (was Re: [Caml-list] Re: [ANN] OCaml Batteries Included, alpha 3) Daniel Bünzli
2009-02-09 11:51 ` Romain Bardou
2009-02-09 12:30 ` Daniel Bünzli
2009-02-09 12:52 ` Romain Bardou
2009-02-09 13:07 ` Daniel Bünzli
2009-02-09 13:22 ` Romain Bardou
2009-02-09 13:36 ` Daniel Bünzli
2009-02-09 13:59 ` Romain Bardou
2009-02-09 14:04 ` Romain Bardou
2009-02-09 14:37 ` Daniel Bünzli
2009-02-09 17:26 ` Kuba Ober [this message]
2009-02-09 18:28 ` Jon Harrop
2009-02-09 21:24 ` DooMeeR
2009-02-10 14:06 ` ocamlbuild documentation Jan Kybic
2009-02-10 14:27 ` [Caml-list] " Matthieu Dubuget
[not found] ` <87k57ywc0k.fsf@fel.cvut.cz>
2009-02-10 15:50 ` Matthieu Dubuget
2009-02-10 15:58 ` Daniel Bünzli
2009-02-09 18:38 ` ocamlbuild documentation (was Re: [Caml-list] Re: [ANN] OCaml Batteries Included, alpha 3) David Teller
2009-02-09 22:02 ` [Caml-list] Re: [ANN] OCaml Batteries Included, alpha 3 Peter Hawkins
2009-02-09 22:45 ` Mikkel Fahnøe Jørgensen
2009-02-09 22:55 ` Mikkel Fahnøe Jørgensen
2009-02-10 7:48 ` Stefano Zacchiroli
2009-02-10 13:22 ` Mikkel Fahnøe Jørgensen
2009-02-07 20:04 ` Daniel Bünzli
2009-02-08 17:22 ` [Caml-list] " Richard Jones
2009-02-09 8:57 ` David Allsopp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=529134A7-94A7-4E0F-BB1E-93A0ADE0FD49@osu.edu \
--to=ober.14@osu.edu \
--cc=caml-list@yquem.inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).