[pdftex] pdftex compression -- proposed addition to manual
M. Wroth
mark at astrid.upland.ca.us
Mon Aug 27 07:04:35 CEST 2001
At 06:45 PM 8/27/01 +1000, Greg Black wrote:
>Hans Hagen wrote:
>
>| At 03:12 PM 8/25/2001 +1000, Greg Black wrote:
>|
>| >More comments does not mean good comments. And excess comments
>| >usually indicate poor code; and far too often they get out of
>| >synch with the code, at which point they become a hindrance.
>|
>| It depends, in tex and mfont there are sections explaining the principles
>| behind breaking pars into lines, hyphenation, curve construction etc. Lit
>| prog at least makes sure that such background info ends up in the source
>| [with typeset formulas].
>
>No, LP does not ensure anything of the kind -- disciplined
>authors ensure the information ends up somewhere useful. If the
>information is best provided in typeset form, there's nothing to
>stop them from writing a suitable TeX document to accompany
>their code --- this is something I frequently do. But it's not
>something that just magically happens with LP.
Literate programming does not ensure that such documentation gets
written. Only -- as Greg points out -- positive action on the part of the
developers can do that.
In this context, "developer" has to mean "programmer", I think -- at least
I don't hear anyone volunteering to write documentation on the code as
others develop it.
Literate programming tools put the documentation next to the code, and
allow the code+documentation to be typeset (thus giving the documentation
more flexibility than comments alone). Proximity encourages writing the
documentation (although not requiring it). Providing an appropriate
environment for writing documentation (presumably TeX, for this project)
helps with the appearance of the result.
But at seventh and last, someone who understands the code has to make sure
its understandable and maintainable. Usually that involves both work in
the code itself (choice of variable names, etc, as Greg pointed out
earlier) and documentation. Literate programming provides a mechanism for
doing this, but doesn't enforce it.
Knuth claims that literate programming encourages authors to write the
appropriate documentation, as its lack is more obvious. My experience tends
to confirm this. But the word is "encourage". Not "require". Programmers
can, and sometimes do, ignore that encouragement. Writing good code is
hard work. Writing good code documentation is also hard work -- and it's a
different kind of work.
Only if the developers want to write clear, maintainable code will the
effort needed to make that happen be expended, regardless of the tools in use.
I believe casting the pdfTeX code in a literate programming form would make
it easier to write clear, maintainable code. Obviously there are
reasonable people who disagree. But the people whose opinions probably
count the most are the people actually writing the code (although I find LP
tools useful in "retro-documentation" as well :-).
Whether Knuth wrote good or bad code, and whether changing technology
affects the answer to that question is interesting, but perhaps off
topic. Whether Knuth is an example or not, I guarantee that it is possible
to write code that is poorly documented and difficult to understand even in
a literate programming tool. Neither the presence or absence of literate
programming will guarantee that the current authors will write good,
maintainable code.
I'd like to suggest a more concrete discussion of alternatives:
1. Move to a "language aware" LP tool such as CWEB or FWEB. This option
requires finding a tool that supports the programming language(s) in use;
both CWEB and FWEB support C and C++, which I gather are the primary
development languages. In principle, it doesn't require a special (unique
to the tool) markup syntax for the documentation, but the examples I am
familiar with do in fact use unique markup systems (largely inspired by the
markup in the original WEB tool).
2. Move to a "language independent" LP tool, such as Nuweb. This may or
may not require a unique markup; Nuweb does not (which is one of the
reasons I suggested it as an example). Nuweb documentation is ordinary
LaTeX, which I suspect everyone developing for pdfTeX is at least somewhat
familiar with.
3. Continuing as currently is always an option.
Mark B. Wroth
<mark at astrid.upland.ca.us>
More information about the pdftex
mailing list