Subject: Re: Issues with literate programming DSSSL Script From: MARK.WROTH@xxxxxxxxxxx (Wroth, Mark) Date: Mon, 3 Jan 2000 08:19:04 -0800 |
Continuing the conversation on literate programming, Brandon Ibach asked (on Tue, 28 Dec 1999 17:33:25 -0600): Quoting Wroth, Mark <MARK.WROTH@xxxxxxxxxxx>: > If I correctly understand what Javadoc does, LaTeX has a mode like this also > (called 'doc'), intended for documenting LaTeX class and style files. But > unless I'm missing something, it does not have a mechanism for re-ordering > the input in the "tangle" phase (which is essentially non-existent with this > approach). With some languages this is not a serious problem (DSSSL, for > example). But I would have thought that it was an issue for Java. > I'm not that familiar with the formal details of literate programming, per se, so what, exactly, is the "tangle" phase all about? I can't imagine why you'd want a literate programming system to re-order anything in your code, particularly in Java. *shrug* - -Brandon :) and Frank A. Christoph <christo@xxxxxxxxxxxxxxxxxx> replied: I don't remember the syntax for it exactly, but for example if you want abstract out a subroutine, or present a series of datatype declarations when you would need "forward declarations": @<< build a whatsit and foo the bar >>= whatsit bar = buildMyWhatsit(); foo(bar); // foo that bastard! @ @<< main procedure >>= int main(void) { initialize(); << build a whatsit and foo the bar >> finalize(); } @ Most modern languages don't really need chunk reordering, (each block above is called a chunk; an ordering of chunks is called a ribbon) but Knuth was way ahead of his time, and needed to do real work with stone age tools. He also used WEB to do things like macros and source versioning (via so-called change files). Don't forget TeX was originally written in Pascal...! Prompting Brandon Ibach to reply Ah... so the reordering features of WEB have basically been replaced by a combination of features built into the languages, preprocessors, and the more elaborate version control systems, among other things, I suppose. It's been interesting to dig into TeX (I've been going through the TeXbook again) and think about what the state of the art was when Knuth created it. For that matter, what other major typesetting systems are there, nowadays? And what do they really have over TeX? Now for my two cents worth (delayed by being out of the office most of last week). Frank captured the basic idea (and I refuse to worry about the syntax :-), but I'm not sure I agree with his conclusion that "Most modern languages don't really need chunk reordering". If we accept the idea that the key element of literate programming is presentation for human comprehension rather than machine convenience, I think we wind up needing the ability to present parts of the code "out of order" with respect to the underlying programming language(s). I don't know any programming languages that are that flexible, although I'll readily grant that I'm not current on "modern languages". Returning somewhat to the purpose of this list, I put a reasonably complete version of the problem I was trying to solve and my solution to it onto the WWW last week. It can be found at http://ourworld.compuserve.com/homepages/markwroth/LitProg.htm (or more precisely, that page has links to both the Nuweb source and the PDF file that is the eventual produce of the "weave" branch. I did not post the DSSSL "tangle" file separately; if someone wants it, let me know. Comments and suggestions are welcome; I think I learned enough from this to start thinking about a DocBook extension incorporating these ideas (the basic idea being to let DocBook handle most of the "weave" branch :-). Happy new year to all, Mark DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Issues with literate programmin, Wroth, Mark | Thread | Jade and sideline flow object class, Walter Klang |
Re: Issues with literate programmin, Wroth, Mark | Date | Jade and sideline flow object class, Walter Klang |
Month |