1-Jun-1998 15:59:54-GMT,1434;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id JAA16197 for ; Mon, 1 Jun 1998 09:59:42 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sun, 31 May 1998 12:06:19 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: LEO LP System Date: 31 May 1998 16:30:13 GMT Message-ID: <6ks0il$1ea$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On Sat, 30 May 1998, Hugh S. Myers wrote: > p.s. topic for thought...would LP be more widely used if it were part a > typical integrated editor/compiler? Dunno, but I'd be willing to bet against it :-( -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 3-Jun-1998 7:48:23-GMT,1441;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id BAA07650 for ; Wed, 3 Jun 1998 01:48:22 -0600 (MDT) Date: Wed, 3 Jun 1998 01:48:22 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from alphaserver01.atmlink.net by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 02:25:59 EST Received: from default (usr18-dialup10.mix1.Bloomington.MCI.net [166.55.23.74]) by alphaserver01.atmlink.net with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.1960.3) id L73WY6PH; Wed, 3 Jun 1998 00:25:19 -0700 X-MX-Warning: Warning -- Invalid "To" header. From: 65tr3w@aaaa.net Reply-To: LitProg@SHSU.edu, 65tr3w@aaaa.net Message-ID: Content-Type: TEXT/PLAIN charset=US-ASCII Hi Sir ! Starluck Casino, The Virtual Casino online. No Down Load, Las Vegas Style Games. Play For Real Money and Win Big $$$$$. Free Tour Blackjack, Video Poker, Slots, Keno, Lotto and Roulette. Just Click Below To Enter The Casino http://www.starluck.com/cgi-win/ad/merchants.exe/vendor.a093 (Gambling must be Legal at your area and you must be 21 or older to Play) Good Luck :0) 3-Jun-1998 11:05:03-GMT,1160;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id FAA11024 for ; Wed, 3 Jun 1998 05:05:02 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 04:13:26 EST From: Marc van Leeuwen Reply-To: LitProg@SHSU.edu, maavl@zenon.univ-poitiers.fr Subject: Re: LEO LP System Date: 3 Jun 1998 08:34:17 GMT Message-ID: <6l31q9$diu$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: LitProg@SHSU.edu Lee Wittenberg wrote: > Swaine also gives a pretty accurate (as far as it goes) description of > LP, describing Ream's technique as "literate outlining" (which I think > is a really good description of what ExcoWord does). Excuse my display of ignorance, but could you give a brief description of "outlining", and what it amounts to in the context of LP? Marc van Leeuwen 3-Jun-1998 15:56:38-GMT,2281;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id JAA17221 for ; Wed, 3 Jun 1998 09:56:36 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from mail.cs.tu-berlin.de by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 10:49:03 EST Received: from labitzke.isdn.cs.tu-berlin.de (labitzke.isdn.cs.tu-berlin.de [130.149.221.149]) by mail.cs.tu-berlin.de (8.8.8/8.8.8) with ESMTP id RAA14291 for ; Wed, 3 Jun 1998 17:45:03 +0200 (MET DST) Received: from localhost (localhost [[UNIX: localhost]]) by labitzke.isdn.cs.tu-berlin.de (8.8.8/8.8.8) with SMTP id RAA10766 for ; Wed, 3 Jun 1998 17:44:34 +0200 (CEST) Date: Wed, 3 Jun 1998 17:44:34 +0200 (CEST) From: Bjoern Labitzke Reply-To: LitProg@SHSU.edu, hermit@cs.tu-berlin.de To: Literate Programming mailing list Subject: LitProg and GUIs Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello... I am going to write my diploma in computer science. Noweb will be my tool of choice to split the existing code in some understandable web with comments and after that for extending the software. The existing code is C which I will use for further programming, too. But a main part of the development will be an user interface for a windowing system. Probably I can stick to XWindows, therefor allowing me either TCL/TK or lesstif for that part of programming. (Has KDE an own GUI-API?) Here my main problem starts: How am I going to handle the code for the GUI? I planned to use tools for creating the UI, but I don't want to have parts of the code independent of the main web. What are your experiences with that problem? Can you give me some advice where to find examples of comparable projects or related information? Many thanks in advance, Bjoern -- Bjoern Labitzke | E-Mail: hermit@cs.tu-berlin.de PGP-Key available | Use PGP! (Don't you use envelopes for your letters?) 3-Jun-1998 16:10:11-GMT,1575;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id KAA17617 for ; Wed, 3 Jun 1998 10:10:08 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from mail.cs.tu-berlin.de by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 11:04:08 EST Received: from labitzke.isdn.cs.tu-berlin.de (labitzke.isdn.cs.tu-berlin.de [130.149.221.149]) by mail.cs.tu-berlin.de (8.8.8/8.8.8) with ESMTP id SAA15745 for ; Wed, 3 Jun 1998 18:01:45 +0200 (MET DST) Received: from localhost (localhost [[UNIX: localhost]]) by labitzke.isdn.cs.tu-berlin.de (8.8.8/8.8.8) with SMTP id SAA10844 for ; Wed, 3 Jun 1998 18:00:46 +0200 (CEST) Date: Wed, 3 Jun 1998 18:00:46 +0200 (CEST) From: Bjoern Labitzke Reply-To: LitProg@SHSU.edu, hermit@cs.tu-berlin.de To: Literate Programming mailing list Subject: Outlining? Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Hello... Perhaps I just don't recognize this term or I really don't know it. What exactly is meant when you talk about outlining in conjunction with LP? TIA, Bjoern -- Bjoern Labitzke | E-Mail: hermit@cs.tu-berlin.de PGP-Key available | Use PGP! (Don't you use envelopes for your letters?) 3-Jun-1998 19:24:24-GMT,1502;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id NAA22706 for ; Wed, 3 Jun 1998 13:24:22 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 13:57:30 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: noweb and multiple sources Date: 3 Jun 1998 18:18:44 GMT Message-ID: <6l4424$1rb$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l3p4k$o79$1@murdoch.acc.Virginia.EDU>, Axel Thimm wrote: >Hello, > >I am using noweb for a larger programming task, and use multiple nw-files. >How must I use noweave, if I have chunks referencing each other across these >files (notangle works OK with multiple files)? The only way this would really work would be to put the multiple nw files on the same noweave command line. In general, I believe this is the Right Way to do it. It should not be difficult to add to noweb the equivalent of nodefs and -indexfrom. Any volunteers? >While I am at it, how could one handle this for simultaneous html output? l2h >does not understand \input commands (I think). Would it be difficult to make >l2h include the corresponding nw file at these points? Not very, no. Norman 4-Jun-1998 3:45:11-GMT,1247;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA02871 for ; Wed, 3 Jun 1998 21:45:10 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 22:41:20 EST From: ptjm@interlog.com (Patrick TJ McPhee) Reply-To: LitProg@SHSU.edu, ptjm@interlog.com Subject: Re: LEO LP System Date: 4 Jun 1998 03:00:14 GMT Message-ID: <6l52ju$gep$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l3p8a$ob2$1@murdoch.acc.Virginia.EDU>, Lee Wittenberg wrote: % Outlining works in a GUI environment only (I think -- it doesn't make % sense to me otherwise). No, there have been `folding' editors which work on ttys for many years. I had a rudimentary outlining macro for IBM's XEDIT (which ran on 3270 screens, sort-of the anti-GUI) ten years ago. There was some discussion of a literate outliner in this group about a year-and-a-half ago -- that may have been the LEO system. -- Patrick TJ McPhee East York Canada ptjm@interlog.com 4-Jun-1998 9:25:57-GMT,1750;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id DAA09383 for ; Thu, 4 Jun 1998 03:25:56 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 04:17:20 EST From: Matthias Neeracher Reply-To: LitProg@SHSU.edu, neeri@iis.ee.ethz.ch Subject: Re: LEO LP System Date: 04 Jun 1998 11:13:40 +0200 Message-ID: <86iumh1qd7.fsf@gwaihir.ee.ethz.ch> To: LitProg@SHSU.edu ptjm@interlog.com (Patrick TJ McPhee) writes: > In article <6l3p8a$ob2$1@murdoch.acc.Virginia.EDU>, > Lee Wittenberg wrote: > > % Outlining works in a GUI environment only (I think -- it doesn't make > % sense to me otherwise). > > No, there have been `folding' editors which work on ttys for many years. > I had a rudimentary outlining macro for IBM's XEDIT (which ran on > 3270 screens, sort-of the anti-GUI) ten years ago. There are also outlining modes for Emacs. > There was some discussion of a literate outliner in this group about > a year-and-a-half ago -- that may have been the LEO system. No, LEO is more recent; I think it was first anounced here in early 1998. I've looked at it a bit; it is rather interesting, but given that it currently only exists on MacOS, its use base is probably still quite small. Matthias -- Matthias Neeracher http://www.iis.ee.ethz.ch/~neeri "The fundamental act of friendship among programmers is the sharing of programs." -- Richard Stallman, _The Gnu Manifesto_ 4-Jun-1998 10:24:32-GMT,2554;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id EAA10516 for ; Thu, 4 Jun 1998 04:24:31 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 05:20:10 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: LitProg and GUIs Date: 3 Jun 1998 17:30:07 GMT Message-ID: <6l416v$t8p$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On Wed, 3 Jun 1998, Bjoern Labitzke wrote: > I am going to write my diploma in computer science. Noweb will be my tool > of choice to split the existing code in some understandable web with > comments and after that for extending the software. The existing code is C > which I will use for further programming, too. But a main part of the > development will be an user interface for a windowing system. Probably I > can stick to XWindows, therefor allowing me either TCL/TK or lesstif for > that part of programming. (Has KDE an own GUI-API?) > > Here my main problem starts: How am I going to handle the code for the > GUI? I planned to use tools for creating the UI, but I don't want to have > parts of the code independent of the main web. > > What are your experiences with that problem? Can you give me some advice > where to find examples of comparable projects or related information? What I usually do in this case (only when the GUI-builder generates readable source code, of course) is to "reverse tangle" the generated code into my web (I've used this technique with both Visual Basic and Delphi). Start with a chunk <>= containing all the generated code, and replace bits of code with chunk names as you figure out what they do. It takes a bit of work, but I think it's worth it in the long run. -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 4-Jun-1998 14:47:40-GMT,2554;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id IAA15294 for ; Thu, 4 Jun 1998 08:47:39 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 05:20:10 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: LitProg and GUIs Date: 3 Jun 1998 17:30:07 GMT Message-ID: <6l416v$t8p$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On Wed, 3 Jun 1998, Bjoern Labitzke wrote: > I am going to write my diploma in computer science. Noweb will be my tool > of choice to split the existing code in some understandable web with > comments and after that for extending the software. The existing code is C > which I will use for further programming, too. But a main part of the > development will be an user interface for a windowing system. Probably I > can stick to XWindows, therefor allowing me either TCL/TK or lesstif for > that part of programming. (Has KDE an own GUI-API?) > > Here my main problem starts: How am I going to handle the code for the > GUI? I planned to use tools for creating the UI, but I don't want to have > parts of the code independent of the main web. > > What are your experiences with that problem? Can you give me some advice > where to find examples of comparable projects or related information? What I usually do in this case (only when the GUI-builder generates readable source code, of course) is to "reverse tangle" the generated code into my web (I've used this technique with both Visual Basic and Delphi). Start with a chunk <>= containing all the generated code, and replace bits of code with chunk names as you figure out what they do. It takes a bit of work, but I think it's worth it in the long run. -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 4-Jun-1998 14:52:54-GMT,1247;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id IAA15418 for ; Thu, 4 Jun 1998 08:52:53 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 22:41:20 EST From: ptjm@interlog.com (Patrick TJ McPhee) Reply-To: LitProg@SHSU.edu, ptjm@interlog.com Subject: Re: LEO LP System Date: 4 Jun 1998 03:00:14 GMT Message-ID: <6l52ju$gep$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l3p8a$ob2$1@murdoch.acc.Virginia.EDU>, Lee Wittenberg wrote: % Outlining works in a GUI environment only (I think -- it doesn't make % sense to me otherwise). No, there have been `folding' editors which work on ttys for many years. I had a rudimentary outlining macro for IBM's XEDIT (which ran on 3270 screens, sort-of the anti-GUI) ten years ago. There was some discussion of a literate outliner in this group about a year-and-a-half ago -- that may have been the LEO system. -- Patrick TJ McPhee East York Canada ptjm@interlog.com 4-Jun-1998 17:34:22-GMT,1502;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id LAA19408 for ; Thu, 4 Jun 1998 11:34:21 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 03 Jun 1998 13:57:30 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: noweb and multiple sources Date: 3 Jun 1998 18:18:44 GMT Message-ID: <6l4424$1rb$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l3p4k$o79$1@murdoch.acc.Virginia.EDU>, Axel Thimm wrote: >Hello, > >I am using noweb for a larger programming task, and use multiple nw-files. >How must I use noweave, if I have chunks referencing each other across these >files (notangle works OK with multiple files)? The only way this would really work would be to put the multiple nw files on the same noweave command line. In general, I believe this is the Right Way to do it. It should not be difficult to add to noweb the equivalent of nodefs and -indexfrom. Any volunteers? >While I am at it, how could one handle this for simultaneous html output? l2h >does not understand \input commands (I think). Would it be difficult to make >l2h include the corresponding nw file at these points? Not very, no. Norman 4-Jun-1998 18:02:28-GMT,1750;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id MAA20078 for ; Thu, 4 Jun 1998 12:02:28 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 04:17:20 EST From: Matthias Neeracher Reply-To: LitProg@SHSU.edu, neeri@iis.ee.ethz.ch Subject: Re: LEO LP System Date: 04 Jun 1998 11:13:40 +0200 Message-ID: <86iumh1qd7.fsf@gwaihir.ee.ethz.ch> To: LitProg@SHSU.edu ptjm@interlog.com (Patrick TJ McPhee) writes: > In article <6l3p8a$ob2$1@murdoch.acc.Virginia.EDU>, > Lee Wittenberg wrote: > > % Outlining works in a GUI environment only (I think -- it doesn't make > % sense to me otherwise). > > No, there have been `folding' editors which work on ttys for many years. > I had a rudimentary outlining macro for IBM's XEDIT (which ran on > 3270 screens, sort-of the anti-GUI) ten years ago. There are also outlining modes for Emacs. > There was some discussion of a literate outliner in this group about > a year-and-a-half ago -- that may have been the LEO system. No, LEO is more recent; I think it was first anounced here in early 1998. I've looked at it a bit; it is rather interesting, but given that it currently only exists on MacOS, its use base is probably still quite small. Matthias -- Matthias Neeracher http://www.iis.ee.ethz.ch/~neeri "The fundamental act of friendship among programmers is the sharing of programs." -- Richard Stallman, _The Gnu Manifesto_ 4-Jun-1998 20:27:53-GMT,1686;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id OAA23446 for ; Thu, 4 Jun 1998 14:27:51 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 10:38:44 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: LEO LP System Date: 4 Jun 1998 14:12:49 GMT Message-ID: <6l6a11$2su$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On 4 Jun 1998, Patrick TJ McPhee wrote: > In article <6l3p8a$ob2$1@murdoch.acc.Virginia.EDU>, > Lee Wittenberg wrote: > > % Outlining works in a GUI environment only (I think -- it doesn't make > % sense to me otherwise). > > No, there have been `folding' editors which work on ttys for many years. > I had a rudimentary outlining macro for IBM's XEDIT (which ran on > 3270 screens, sort-of the anti-GUI) ten years ago. I stand corrected. ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 4-Jun-1998 20:35:29-GMT,958;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id OAA23640 for ; Thu, 4 Jun 1998 14:35:28 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 15:24:47 EST From: "Andryan" Reply-To: LitProg@SHSU.edu, andryan_n_k@hotmail.com Subject: Anyones here are really really expert in C++ ??? Date: Fri, 5 Jun 1998 03:41:11 +0800 Message-ID: <6l6tdk$mva$1@news.tm.net.my> To: LitProg@SHSU.edu Anyones here are really really expert in C++ and care to solve my assignments??? Just for relaxing and practising your knowledge in C++ For those who want to solve my assignments, pls msg me!!! Thank you... ------------- Andryan andryan_n_k@hotmail.com 4-Jun-1998 21:34:36-GMT,3301;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id PAA25039 for ; Thu, 4 Jun 1998 15:34:35 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 16:14:24 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: LEO LP System Date: 3 Jun 1998 15:14:18 GMT Message-ID: <6l3p8a$ob2$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On 3 Jun 1998, Marc van Leeuwen wrote: > Lee Wittenberg wrote: > > > Swaine also gives a pretty accurate (as far as it goes) description of > > LP, describing Ream's technique as "literate outlining" (which I think > > is a really good description of what ExcoWord does). > > Excuse my display of ignorance, but could you give a brief description > of "outlining", and what it amounts to in the context of LP? [Caveat: This explanation is based on my limited experience with ExcoWord as it was several years ago, and my understanding of Swaine's description of Ream's LEO system. I may be entirely wrong. It's been known to happen.] As I understand it you basically work top down, starting with the main program. I'll use Swaine's example: void print(void) { FTAG("print"); <<< Define print vars >> STATB(ftag); <<< Return if there is nothing to print >>> <<< Save the old port >>> ... } As you can see, it looks a lot like noweb. I assume that Ream used 3 angle brackets to avoid noweb's @<< problem when programming C code (although Java has a >>> operator, which may cause trouble). Outlining works in a GUI environment only (I think -- it doesn't make sense to me otherwise). If you double-click on a chunk name, the chunk will expand, probably in a second window, and you can edit that chunk separately. Of course, you can have chunks within chunks, etc. In a sense, outlining is a simple form of LP that enforces a strict top-down discipline and may not have text chunks (although it would be easy to allow then at the beginning of each code chunk, at the very least by allowing the programmer to typeset comments). I don't know if LEO or ExcoWord require a strict tree structure or if you can have multiple chunks with the same name expand (e.g., <> in a Java program I'm currently working on) to the same piece of code, but this restriction would be more due to the tool itself, rather than a natural requirement of the world-view. I reckon that about covers it. -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 4-Jun-1998 21:37:11-GMT,2000;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id PAA25107 for ; Thu, 4 Jun 1998 15:37:10 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 16:14:37 EST From: thimm@rige.physik.fu-berlin.de (Axel Thimm) Reply-To: LitProg@SHSU.edu, thimm@rige.physik.fu-berlin.de Subject: noweb and multiple sources Date: 3 Jun 1998 15:12:20 GMT Message-ID: <6l3p4k$o79$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit To: LitProg@SHSU.edu Hello, I am using noweb for a larger programming task, and use multiple nw-files. How must I use noweave, if I have chunks referencing each other across these files (notangle works OK with multiple files)? What I use ist the following: > nodefs main.nw > main.defs > nodefs et.nw > et.defs > nodefs appendix.nw > appendix.defs > sort -u main.defs et.defs appendix.defs | cpif all.defs > noweave -delay -indexfrom all.defs main.nw > main.tex > noweave -n -indexfrom all.defs et.nw > et.tex > noweave -n -indexfrom all.defs appendix.nw > appendix.tex > latex '\nonstopmode\input{main.tex}' > noindex main > bibtex main > latex '\nonstopmode\input{main.tex}' Where main.nw \inputs the other two nw-sources (the tex files to be correct). But chunks-referencing does not work across sources in my setup. What did I do wrong? While I am at it, how could one handle this for simultaneous html output? l2h does not understand \input commands (I think). Would it be difficult to make l2h include the corresponding nw file at these points? What are other people doing, who use multiple files? Thanks a lot for any help, Axel Thimm -- Axel Thimm Axel.Thimm@physik.fu-berlin.de Axel.Thimm@ifh.de 5-Jun-1998 3:00:58-GMT,3448;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA01297 for ; Thu, 4 Jun 1998 21:00:56 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 21:57:35 EST From: furlos@rpi.edu (Steve Furlong) Reply-To: LitProg@SHSU.edu, furlos@rpi.edu Subject: Re: LitProg and GUIs Date: 5 Jun 1998 02:24:51 GMT Message-ID: <6l7ktj$onp$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l6j6i$8c5$1@murdoch.acc.Virginia.EDU>, Lee Wittenberg/home/faculty/leew wrote: >On Thu, 4 Jun 1998, Chun Yin Hsu wrote: <> >> I understand that this "reverse tangle" is a manual procedure as you >> described --- if so, it seems very tedious to maintain <> >> whenever it is modified by the GUI-builder. > >Yes, it's a manual process, but it's much easier to maintain <> >when it has subsidiary chunks that have been annotated with text >chunks than it is to maintain the gui using the automatic building >tool (at least, that's been my experience). If you just leave ><> a single chunk that doesn't reference any other chunks (i.e. >don't bother to "reverse tangle"), then the maintenance would be worse, >but the text chunks describing the code and well-thought-out chunk >names are what make LP such an excellent maintenance tool, to my way >of thinking. > >> Is there any "automated" approach to "reverse tangle" <>? > >I don't know of any. And, since the chunk names need to describe what >the code itself is doing, and short of artificial intelligence, no >automated tool can do that, I suspect there aren't any. I whipped up something along these lines a few years ago. You have to manually untangle the file the first time, but then the utility is able to merge in changes produced by the environment, and indicate where human decisions are needed. Good news #1 is, it worked fairly well for code generated by Visual Basic 3 and Visual C++ (probably 1.5). Bad news #1 is, I wrote it for CLiP, which is used occasionally by me and never by anyone else, so far as I can tell. Bad news #2, it was definitely at the "proof of concept" stage and not ready for release even to hobbyists. Bad news #3, I lost the code. Good news #2, it was an AWK script and should be pretty easy to replicate if I ever find a few hours. (Says the man who has spent a good hour today farting around on the internet. Such is life.) >On the other hand, it *would* be possible to write a program that >takes another program and automatically replaces blocks of code >nested inside other chunks of code (as in loops and conditionals) with >default chunk names, which could then be massaged by a human into some >kind of understandable shape. For example, the C code Agreed. That was going to be my next step. >Not pretty, but it can be done automatically, and it is a place to >start. Someone has to write the tool, of course. Would you care to >volunteer? :-) It's on my list. A wise man would not take any great comfort from that assurance. Regards, and with a reminder that the road to Hell is paved with good intentions, Steve Furlong 5-Jun-1998 3:48:12-GMT,28835;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA02093 for ; Thu, 4 Jun 1998 21:48:10 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 22:35:21 EST Reply-To: LitProg@SHSU.edu, "Adeliae" From: "Adeliae" Subject: help Date: Thu, 4 Jun 1998 20:20:02 -0700 Message-ID: To: LitProg@SHSU.edu Hello, I am trying to put together a snapshot of our world as it is at the door of the 21st century. I would like you to be a part of this compilation because we all are what the 21st century will be made of. There is a form available to everybody at Http://www.geocities.com/Paris/Parc/4665/sendand.htm where you can send anything (art, text, poems, sounds, photos,anything...). If you decide to help me, I will send you, by email, the address of this "Portrait of the world at the door of the 21st century" as soon as it is published. Thank You for sharing, adeliae Http://www.geocities.com/Paris/Parc/4665/english.htm Eudyptes-crestatus@usa.net begin 666 adelie001.gif M1TE&.#EA#0)W`><```````@($! ``! (`! 8*1@0&!@ARDQ6BDQRE"A"E"C"EKE"E[K3$I,3$Q0C%"6C%" M:S%">S%CA#%KA#%SE#DY2CEKE$(A*4(I*4(Q,4(Q0D)"0D)"4D)"6D)26D)2 M:T):V-*8V-: M8V-:VMS>VMSA&M[E',Q,7-26GM" M0GM*2GMC:WM[G'N,I81".8Q*0HQ26HQC6HQS:XQSY2$C)24E)2Z6$ MC*6MM:6]O:6]SJV4E*V MW5[A'G5KL>#OO%^__E<&OY)Q]=28D!6!* $K+$&%<%12428_"QYMID9@4U M5$I4#:7??@44@&(`*J;(GU10D?;14#222&-C4!4P0(LLMDA BC\2@,"00RI@ M`0,67'!!DDLRH `"3R+P8XI4]M@CE55BJ>656[K8HI9>@BEFB@A@:<&09UI@ M9)H(J)FF`D:VR::;23+I@05W>J!GGGKB>8$'?^[I00DF8&#"H8BB@*@)BI[@ M* I!O#!$#D3D8.D++Z#@Z*$E"*KDG4BZV2:4HYYIY)-+?AIH"248BN@)_BB@ M,"D10Q!A:PZ37BK$"X?J>0&<9Q(I[+#$EEDLF6,F*V:9R!; K)EYXIGDG4JF MNJ0%=:;J)[5*2MLGMG=Z&^B>>'I PJ"L>G""">NRZZZC04#Z@J7T3OH"$9$& ML6D)YY*K+;:G!CMGFT8RP"V@&'1ZJ*&QGD"OK1#?6BFFBOJJ)JE#.FMLLQMK MO/&/1#JK[)C/@MFQF=F&J^VU_[*,[;3>FEMNGWF2X*>W,^_9*J&'MMLSH[!& M.NG0M.KZ@K[L\BLHM4AFG&RI3([K0:'OQBH$I1$G82L2N.:0J0E[KIEQ`L82 MJ_'9"11 =L@;ESSRV\E:2RVWUB9IY,HP_\GD_K0T@PLSH#;_*;6>G0Z:<*_K MKALOO5A#7&NE]O*Z+Z ,/"N EU-2N2.0&A_YY^&+PCHOKD1H77K$7K^PKJ_ MIATR"&B+/&3:(+@^]MDGPZT[E00H8'.V).!])+;79INJS8#NB;P%R\NL) D* MT'Q!OX-67[B>8+LK+^FUFHZ$K9->G6F[3I8\%)4"*(#^^2E>KF6;%QB*0>*0 M6OIX$DE\;SH15VL*]K4(6!L"0/ CV\%.9 4@X.P6.#O9Z2YS#TP1\9XW06[5 M*52A.AX#JN6\/P5/;\%+$@D8$#A?D0`#YB)<]72F+D+!"E9#>,'5M*8_\%4J M!XHR`=E2M*/-Z6@`_LQ27P&$B*64;&Y'/8K>ST3W,*WACX83DQSETG0V`L*. M61DCH-J&M<4!J@V!NPNC!*='PKQEJTYVHQ:3D$?&X#DO3]4*7@D].+WIH? $ M*M33"?>4.'T)@5:V>N+INB(LFV-D@*2UG,@F 11Q8JX@5.;]U" M$@"!9["\R>R7R!NAG4CPP1.>"X^LPN/2"%>"Q'EM5DC(7Q((^:LPH<]9:>-8 MVG:T2@9LT6-$9-:5+@"T(&P2:TXTG=?\!RA10?**4D)@V8@$.U2R# MY47<>3$!L%M;[1) MB>A$I5?Q-(!FP4R, &H??LL@ C76*? ";-;+E-H'3\% M3)AAP*K!.P$)'$76=ZTNA:+4$_W,>2\49)-D&A.2D KP`">=C:Y29< #C 4H M!Q3I`2;3W$A-X+5-UG!_.=#7ZI;T)(]Y48O9+.5*T92 1QJIL@H`Z@[?YC9^ M>A:J_7R95E>FRU0A:4U-,I?!S(4\<]S_JBZWG71Q#D*A>?*[:#H9P(' M5*ZSSB+ YCFG@-Z1:4IU91M@\:J RCF `-XD$I(6<('R8=-\ M.J*2!S2)W>P6S6N+->0K;?=%M@V0E9X;7H?+F['.`E=+[KME MM18)2ZM:AKH19]6:WEB;":OZ[2H(\4+:":ZGS$Z]578@:VR9$+G9"P#VI-Y, MKK,R\%M#2C4#"(@N_JG25M>TR?*E%D!!"@"IW1MR%U"D+&4"10;/!4Y0`1WN M;KZ4G7%O3S0684@"$:ZP#*/JW4S*6`C! M)N5VH,)%8H $"H !!FB@`![ @)K55^A*PM1AGJS4=L'6W39YS($=HQV<_JH] M[B1O,$ZNP]*SL@U:;LOI=[R$XP?IJ%78QE9F_66>6D]PM,>=[GNWPF'2/%#J M+ZYGB\=&L"2[74F ?A+MCF[C6?8SM-C2Y?*LJBK!N1V_.<^3""[-O&/" MJW%/E*:M=G4H,V_.6%>*)WNS.0&-@;E%1%=!P\MTTA15C@$H4( $`'V :CYI M`D2'@$G3NVL)/@N(#M/X#=?)J3^9+9OP=!;LW)2 MW>X6G%7;^Y0/O9E MR">>0PUFQV("[MO2>AX;2YC"9M8OD/B+0N)K_A6O"P0<3"SBIJ)9Y+Z0%<"M M"F 1D9[$@,H](,M0$BF@-8 !(6WP`4=Z0#49('$>HBESW(0"&D7_1(\/-[R>-VY<535+)4[N54475&@'=+OI)D&.!W=!-;P11X),!D M03 K3Q0%4J!]3S0I"1!^%X@`!E!\=!.5=S4Z5'R21#0Y _4I $4@`%*Q@% M44 $*G!E6+(Y.L%M_ECR9=X$)W<5/150`#N(`!@`6&A6`"K0?K]RA$-"<$_W M)"O@) TV<$ZB`1;0;4X3;!:0`E=36%]C`EDX8\S6A6329VJ"7GXG@:!(@ -"BD8J5H-N)E:VA";7ZW04=R6ER42+J#2 *02X/'`"(`?<\3 M<2ED9(#C1LL(/3*#;L3$*IA".MDG!=*X@MLH6';'3SN"2)D#)0B4`9X7_HPM MT )D!H22&%V0F$D)X $;((ED-@%V18TSUG!Q5P`9X &0.$1$93(I@"F9$B^U MMR2O-$]=E$!"`B5YEV0CI"1(XB1J0GSL=8&)!G;=UE#)%RAHN4<1MT=L^88> MQ%]VV$Q'@WU\J()2H$.(2)::,U<`V&!%"$2D\B0:H'X1IX1AUGY0-W#!:(XH MX%<14#D*P % B(D;D#;Q4V;$18Y2%2N0XB[_DU["UV&;B `=`(1I_K.$3^)6P8@"C]EA9!8EW@28 MP88`0#0UF](N'>=QJ12+:S<[:F*0OP=WIY(Q+8E 2W5 B"8`(' Y>M1=P^-H MTS(]>_)5#]5"$!6@N=5?YY),;*4_T4@$X00D+:5HURA.FW-T5-(`4])A/MB2 M3X(!;D5F0A(_&W!K3[)7;3(#"*"#3M)^F(AKOY5AH)F<8R4$B-*!`MEB+=9G M4B4G&R1,3?,DP;)G<(-H6I(XL#F@-)<\?#1;`.8H@Z*1@V>'CB(I]S--+W@^ M4Y(`ZG.(8-[,(0,(GCF:.>JG;RLYED,$)Y639<[R MF ,'DQ[0`7[5`=M9?]38@PR0`2@`>NW7=9CH`:L*A&8VA)!85\*6(B30*QRG M)*]T5UNH9T&%=6YR6CS5FBEB@<87KHCD/^MB8-#S.\0TFP9Z0BY46P*V+V\( M+N;23#^ *;0R826#`"C1(NYCB"W"C2*CC9_G+("F:LE5/L6Z:S#980G[(YX3 M787$`A?@`-:I`0_0"69[]:<=UCO>)XGV!X2TQJ$_A #4 MDTM'>D I%SN2-4]%PB9)M:]B])]%E#KL)*!H)#>$8U:1(D.8`I53ID=M6(*A MJF#(.98OQ2+]&K!4\E8(``%7&4!A-D0M<*(;4#D7@ )O"H0;< &KNH/Q@P%O M.JL9T&&^%6%B]V]U5:$\!$3E(CC8,BHHFW9*M6>T(SO%\IZ:"28O*ZL%<"M? MDV)7!7@&:ENH6C_W8BG].'3)(T?H@I<$, !G_O)#_'0Y4_*O[<,^4%52^48F M"W"B)"55"I"U&?!PEFMA/@F9>K68+WH!&8!F$C"&#) "['=<45>KL2M5'?AC M7"2N;5.W`\Q%JQF6"+P[E;(K6/@M9\E5H:HZGK8K,=0PK@B'@D,XWA2S\J03 M5W(Y*WD^[I,Y#:97G6>P:)8!OCJ$%] !4E6QZ6>4" *NR:C376<]25,<7*]!X2R;:-V6L1LK^- R&*!S"*N2HHEC*,Z]-9=PH1? M%P!1/,N\1(,ON[(IM4E,>H*TP88^#KFTWOLEVHLE]L>B5\8B'L !4#=ZD'@" M'S"9'N!775>L#M !_@S `0WWIPC0`IP7`9 XB4X2`%MK+-O+35$C;N:73TCJ M-KN+17O&A1^'R?J$);.G*:,*.&O"/-%#.'WT,/>RBD=CQ1B0`C/P6_37PY53K!=P MT Z7`,E\OBAPHA(`HA>P<+=&,#8))V4K>>PCFW6"=B&'I.X%SD^9T\_.(D+= M%3",VE.&FG(I5T]S=4 FC6U.'$9-&6I!P"E"NU6?\E#K(BDO`'2HDP/(!KWU M&*VNJ1,A_+U+ZR+&&,.$0`N#DB<$+5XH#7:Y5A"==(%\7NM3%OF]*;!;SNF_O9;Q/DC1N0LCR9H[GBD*7W$ M%9C):7VR*]VHG&,[);.?6+*>C%+/!\JIJH);4@HI/G<$$7,UDS-=*2G=/G2( MB6U$.M9#L0R)[0>F=>6K0[0")W")&"MK+(O')Z4D&, "P9@!*0#>,,EP&,!( MIDNG,[XGOIY MTFG75,PFUV_[17/'=J5T3[7S*M2:U_X51^/B0OV(*YS&??PS/@?8O2Z'B#IA MU*#UZF>L94*)%T1+&.YAQ_=WYUN[JF *=0AP`([\+$..:U_3*-7Z*YO5,9K,+(5V_DI1 MVRR1I4"TPTCO1&B/)&B",K(8@"?5[D;/LU5Z1#^K. 0\/\^QX@'T[;3EYXLZ M]MQ&+=U!7B4!5R1%(K]^U0+1E;HH\ $?`'J-J0`I$ /F*+J0.K].LL-TF@`8 M``&9%8P;M+'(OE*]\^,J:0$GL"0\US"-TH%G(LYMS5ZT+<[,!E1JDWNVPV)K M_7Y(NQ&JM%3=1N3%0,@/%0JV(F MD+H3X "]MP`#]P%UI0(J4-%$&4"3"*:7N%=/@L.B=]H;1#89`*8(2R4G@ 1# MHHJ8`BO!?5Y'"D'D[$#\#2;9!/BZJT@!9(L>_@B&6IYD,%],=:3%N\5S^C@T M%!,$?@5:TIUC_7ST1*_&1A]B2AIG=.K+H'<`.Y@V*I "'$#L[/>I%!!@O>/!I`H-IJ(*)XE0JE(1@J$Z;%O7@H<0)[E99:ST1Q,1N MLF?-ABU?EFS:MF#%KA6+'B%M`@H<=$3PH `!!@DBKY@!`P4@Z PH#BS3P+$+ M-E@P+P\T8" #O#K+P+\':%(L`\OJFR^L,>PP#;6'AL@*A:EZ\B !XD;JS3:1 M.L+0II-V*ZE&%F'$326:BH/.IXI0V&DZ$J#+2"CF+J@.)Z=,&Y($[:BB*@B* M3+1(I+78*F" L>(J*[XNL52+K;BR#*M,CC;JKX#->$J@(, NF(BRO##0_L@! M!PS2R0$,)&! @SR"2BC?)PH!].05.K6(7%EKE7K6FU2J8:FJBAE MBTKP\MGSUO-2VK+8D[9E]\R_N@O@9P+4D ##S*HJ\*[_-M( M0\ 8@ ##R"+@*# T"\JW@#*&3 &!%Z20-+47+#6N+QP];9,X!9AB.R<+"!() M)19IJXDE%77BR2**LBJ28XP\@,[(5H/B52@1-C:YA.VF,N$'BW PX8("`E#6 MYI:U9/9RS*$][^7].(6[/J(3N(\NR?K++U?+.,A(0, RT RO"/W#.B_4?QZ0 MZ8VR'&W7#!! `8HDPGXAAXI^!6Q%##%\F\BVV3;-IMQ@JFG'4FG:"6,4($+\ M;R>?"]FT)9?LVTDG@V44T)_8-3 MA!SPK3U9`&F2:8"\_DA"$P4TIH$ZD0RATA68_%BI`#APD@4*$(3A/20KE5+. M3NA"'! `!6\[00YRE+-"XV0D>@BAT4M40C$B)6P]R'KE$[7D%LY),7YFVHW0=H28O&BH0@U\# (*_B.9 M;5V !1@H'9I>9YF"#.1;O@QFU'J&$!(0P0,(.4'8Q&:B1;Y)D'EARJ^4D[*) M<(=*RNDF1DQSJ(_$:(1RS!M5(B(II1R'DZ3,(."0U*2A3[[50$*A#B'9 M&8D%+JF5%!SO4F\*IR)+`*N9L@BS.4"Z#,DO-4 MJB>)0M!5/K96)C,E=P0:GO @$;'FV9S-IFA6^-7/H;^=XI@6*)OZV(5I_2&L MA@J&NY'T4B &U!#V[%40Q0!V7G0:H$Y^1T%675--QP,D%. ML8)9B*2F*JV9:49,2-1;72R]IR4"V$J95:=&Q;]9-9\0,1!;V:9,/.E+XB+? M8I[W29%^OHWBS+KDU3(E"R8Y85?/H.-%MCXF48KIZ[9^-Y*UT:XD)"54J[)' MJ(WL9E/=_>#83,1(_K9EYZ;I38%E(Q(1F$[*@SV]2 N?USK*9@PB4LCORH(5 M+(*RMH>JC964PL.X']26H!U)3_PF/$4!C/6A9]%RF ?@98^,&20+3-&ZI&:[ M8O+$7B(I&(D]8+N[-! #$!")7DCR&GA2$$U9PTD*-HM.P4(VA0WQ24[9.RDD M^U@U4E8.\H;\JU=1!(=)E4+ZL*JX_^+SJ;*MRE:J8H(7J"S!%FABA&_I,E>J M>CU=_M))0! "&SBIQ%JE38N1^R8[688C3!MI!![V`,"86)@>1MHD&3 ")Q7Z MBZUD%0@5^3Q7J3!6+VCO0R35:&UBEB(^_=4)>))"2M^W*DC-KQ2D\()2_@=! MMD@TGU.=FAV &G@U5JG*E*O,:2PC=):]92C,7.U@D'0!#GF@`Q_H0(<^Y($/ M8@!"$!BYP!%FY&=/H\F;%1-,@G#<30(:"9TV@F' >& $/7#J`*>;-818P+$M MM!T*4V@B]:);!E% LKKW^) 5:+:GQSO>"BU"%6PG-5+JED(.O.-N\51UM4A< M\E2L,H0A0$2S[OXV5D>0J"@2/#U/%"M7S;,6$(PY!'J@0QC4T(8PA $,8%B# MP_=P!*>ZK29RY.Y&..2;?%4-I=FRU[SLA1?$9&0$/.C!"+I)$Y;#II,6ER_) M'$1O[9%HGGL<7N8CE002#6'0WZ;2CRJ+[G0G_D'=6!F"93D;K%+N%^JF/8%F M4<_N%TBIREB=SH*;:+\QJZ<\8 KSA(% !SA @0QYT(,=[. '.X#A#7SX0QZP M@)&>,="+;=J=]#35XF)GQ$YM'.F.6KPV#_# "CX@@7)2)))6%L XX,R5R(1B M1D2G]P28O63F=1X%/7:[1#E(+]8H)YK3J:S8-K Q/74C@JI+/2% `PO,[#-RD[`(@SAP`1B `2PH M@Q4$@SSX`S[P`R#P@(?I&7:Q"S1!';HHB+R8J[J(D)"JJ N@B_);@B7L`2%( MD;IH/R71B&T9H9I"_A'&R1AT&QX9&!Z=Z\* P3]!^S_PRC;32S=UPP(I0 (B M. *(L H3P $G*R)0D[*IP[_:8XT#8Y8:> ,C@(,R MF $3<( 1P(@,T($LL ,Q@#Y T(/QH"L@E!>#Z0ODLIL&PHS^*+8S83.2\( > M6((J6((>2+PIC$*@H$)8U BCH#QS8Z\DT($H( )=1$"PR;D=^Z#4`,9%RSE? M1#HL")O4TPJ+,)^G(R=\6R^M\#P2J3V*N+UC`<0(BZ*V^#RF8*"!;/*NM*H;N@"*F+,QY("2'*C(B%@!).B@G#.] M;3,ZD@081N-(G#O)-$1 2#\@#,8@#5F&_LD.($+@`(G#*_C\`!,IL/VC+F92@';M@F#0Z MD]CL"\%H`BN8@MU<@AW8@1 `@B/PKF2I&Z! #+Q[R^2X+W9#JA4(FYS+K_S2 M`;_<2^@\R>M,0RS(@BA @C:<3 "C*BR\BJRP/)O4L>*Y"G83@B&@3/=(#]X3 M"R][3SZ4GY9K( \@RC=XC),P"Y?(#BF@03]@S?:SRI'(%W=B2Z#AI8QKHS,Q M12HP@]VL@BE0@AV@`1'@P/-8B;G@HL&QG>1$KXF@R*S 2+]40+#A0FT[.H[, M2V.\3I24`CU:P%([HN^!NNX@0V%$SYFT26G,`0U B ``/C_<$OJJ)M/"@6\0`<\ ,H M*(,1.(DS"P$+P- ^\ ,_" )H^QS1"(V9(*Y?HZL6$[_K8XF@N ,\0 ,MT((= MN($02$HV3=41^(F[@T4/M8SLZ"<50J\\7;22+,9>;-%!A5'!U$ZP(0*LF(JL MHJH3R,.*'$DBB%0>[3S,JCJ8LJ!44Z@JHJ)!Q*()$PT2``,RB((R4(DS_ON( M5$4"&]R#)VU-_)!5:/,K@A"=M=&KNF )#PB"A+N#+0A6$ `![^K73A(W!6++ MMBPO>[)3YU5&2 M.3F.#UV4A00^(`CA(1#B(@S(X.(?S`RQ(%"T="1/ `@"T"!6QR@8EB/$C M,8X`))PP`37 @[/%`SEP`RT0@1'@6I$H)7&=,T%JRU9I()%IBG'KB9L24UXDG-;UR00'A:.E+K4"HA@P)]=PQP(#?CX MP+)RW\RU7'J5WRE%_MT\R ,R"(,XP(,^X(,\8%U8!0X'\"F+L!-,J9XMVD$> MW)81>((X.-M>G> S2#Q6::7LL*,7* &U^6#K8("ER(OYLR> 8ARY)#U,\UMU M8V$81H+0[30%+2H'V@LXN'-3LM-XLB-E#S@*) MR#JK,@%IC!0DL%[ U<6 N4 &E)0CZ#=1YC('`[YHL1GXL3"D+0`J=5IA_D9: M@=5:EJBI9VW$EKB;VV0)BS&!-)@#-=;E.7 #QT'"##/%.)9CNDV>CH47Z2@W MY]T;_$OA!/33048ZP,QF[<5F[1Q@JS G4$-/X=E)(W8H M;GQ73JTP/U24>>[#G)[G+J7'( 2@I+" $HJ>'6EE7BF!*U"#.7#J-#Y;.9 # M*GB!)[R;AXQCSU.G@K$`,Y(.9;[;NZT(QA'#Z*W6:H91PCUD&48RI(I)UM L M\65AF&WAE]I9()X4%%"6;5PHHUV/;FR?^;R9:4':N)CGWI@/!MJ?,19"1C1, M`WK:D#FY)A!+*N""+N "-Y@#J=YL+SB"R(&,_F+#"7&U0*V&R,VP#*%PD-1N M9ON;B(I<@:2*"+RT7BS .;I>:VS6[4E9SQRHNDL[`KOLZ!C=3NT5S/Y;0$I) M[HW4)KX<`LP#7$.-@N)^<$%NM!&A\!S@.IV.L&8YXE:#W^M&4F49D^SN#3KJ MD/YQ`!O3FQ-'DDXB;QXPRQV04"Y `ZEV`S5X@LCY)HL;"G;SO#4\BLV8VW"" MHT.CBN7T8Y(]NNI]_E&U+F[MU&W %1[-RSS^:W""YC*/6*% MNDQ![&N:9M_XY1+U!> ;T:O;Z$KC4*2+\);(,3D2:-,:N($:,$LEF *#Y((T M^((K$(+ NT\448H7@"DD0 (H> '+Z!6FN&,K'#<^MD7\0[*;"V27C5F1UFTR M.%0)CU'^8]QK=7"8=?('9^$.2G B:%?@PMR#*M*O[\?LWJ/]46KPS[LT(@A#L60G G(C)@,1/H1!V".$8#X&SAV MQ%O");B"(I@.Q2@M/-6*[4 "0Z=RXQGAU*:SI>#OGJ@D/#VMN@080$W 0HU9 MDLX"3I_YD3;4F_]TP+3R""=UW2;I2!X>X8F4?O-)AM)PYQY:LA,X# ]XTJR< MIV_=`E4K=G$;\[JO;TX!H&*2.&3%KD?%(%@DNO@62U+)BK# -82"*$C[^P:E MI5@*.IF_G^+C#,LA[W;YYNNYT",_[*!@#G\=YP(1D%WL9 MFF&HZ"X++\.2F)%U;BQLA<)N7/^-K8W3@?:K_DNAC,;J+'8Q#6:[@1\H@B"0 M>$=LY=/X`2=X`BBX`N]X@15(^QB%@A6 CM.NT\@@`3I!-&=FSCUMW,#<7B>O M>4XO@S(@`YKW^9AU=W=W\+PW?KKV: A)0@\0`1_X@28P@B*X`4=DDB!P`C4`@R\H`D,'B"%( MD$218A#*"08D&%Q8>($AB0L/,6#P4!&#"10F7J!(D>-C$B)$DD@A65 *EBQ2 MLK#,0B9+&9@P8[Y\V9)EE"PY5Z9,R7+,S9L[5>K,4*# @*,"D"8=(& `5*A, M"RQ=ZE2JU*=,FV)%_NJ5JM>D1\<>%3N6P%@$!1(4((" 0 ($"!182* ``0.& M"O9FS%C1@X7 %CQX$#&B"!0H3XS@*#%B!) K:N:DN3+DQ64D4*2,X8Q0(<.& M"C$H]-#P(D8,)U"L_BAR9!*3!E'R9)E2S,PR9$$"QA87.$$$SUPD<84G$ M``:G74#8"1AI]()'.1"Q0FQ$&'02%BOEY%)NO>GFFTR_C0'4<$%A<5P;_L%% M<9P4$)3UE55/64=54@)T5R188EUU'5+A13>>6>2!=5YY:"A1Y MD-$))J1@`@X^W$""#R:40-@()SP1!19?0-$$%0C.H883EPTA$&=2L,$2%!$Y M)"@#II%VP47SH;#H"SFD@(2(241!TFP]L2B3;C/QU@9OO.W6$E TYN33CBS5 M=.EQ60"E@U+933G>=@+(2B22574WE9)133>=E%^1IU:5:"&07ET67&"7!:%] MB0)ACN90GPE%./%#$4:\8,(().#0Q)M?7/&$'&O@ZQ(AQQE/%&%E"4L%"\&V:(**(6 M8901OCFL,!(4E!J4XDU8[!8P;S M[*G:!U_*(G"?TH2I2U@X(#)9%WA"#FF8X5\=ALG11PW&)NELQ2VWL&YQ MRUU\V@ZWA 6-< =<_K#:F1H5)5A"RAJEWG\?J2NN298%`I,AAXR>RO!%3A'0 M)NQ.Q NQ%;29$"(2,00103@!Q1542,&$8E ,_008U `&)"@-,YO)`ASJ$ <% MYJ@$+\/ 0MS5$(N0@"+JVP@*7&.YX*5H>'0[VZ>25Q.YP2UA!@NA303F*2G@ M36,#.)*0!.<4K33)5R]LRI%N-97O4&]\) .67.B2@,AYH 2J"9/\"D*$2;E/ M"IMY7_^\]04G7.$*.AE#%*! P#WIZ06:&0,9X&"'/M@!=ED8P@ELYRX26*10 M%C%BF% `HMZ-Q$3]0@ES?)*I%T7/)7$CWMD4!C _"BPWOP&A%- B'HK-_FHZ M1KJ8X*J2%:X4"8=A#X/1VEKR*6T2TE.>XJ,"R"-)IFAGAED!G/=X!24H=4R=OU+< M>8;U'I==#5&K.8&(D)"$-TGA"034#$?6A *)6 `!@@%,8$B RUOF\@6ZA (8 MZY"'/>S!#WN 0QLB)$&'F"9K]5)-UV C-CPRAR7/"T[": *<')UMA($\E?': M@-$X9$%B>;,A=AS)E>U9DG#@^Q$/C_)3H!K._BWR7!E[DG6A^> ,GR)RZ!.& M($HDQ"Q,;,Q0EA@@EZ,4E 3_S.40@# $'.P)HF+<0Q_(F(?8D>$%5Q7-6RFR MM=6$4B3\*DA*_I5"0BX'I:?*5(Q,JK#G@; ,L2N#`PX7*ZD@Y5:-!(_&, D^ M'19@J#SLH>&NI*6Y>" !%2(B^M3G5"@0P5% B$(.PG0"*'C@! 1E0+("8U"# M>E$@6QSKGLCZ(#U4M ]^2"OL'X7OA060L'*BD*DCV,<"0KUA)N,91,?UMV47 M0 %#,* "]*4/9RA84Q%+P!%#68 $!H7ME42 `RTF!@H"P<$6!P*%-NC!#X ` MQ!]^ZX<_].$-9!A#@!%57 :K!B.K08%4(\4O&?N$;<4K`]ER(FE+]153P-&N M3)Q7V-C)X#EJ04O&""?#=4XE! Q `AQX&PB8!*(D62@H9GM5T"LI@'$&_H5/ MO%S+X#5E) ,ER( )//!E^6PH3!)Q;5X"`UL+B. $3FPS%+PPD&DGY@UUR',@ M_G!G/OO!#W6 ': C1"<9FQ=$Z;0FH+EKFYZ M7(:,FD=*(ZM5=&XU'02(`-44M4,<$O[=.!"!P283#Q A/N6[H$>I\*E(UHX= M[-8&F]#SPKC+8LL`$2AD"&FM`QO8`%%HI]S:']8V( )Q9SS_E@YQ>(D1L5;! MUGI(Q?EZ+DK(UNCGW7$VHTIRC6!PB$ZVP>A?B6K+Y _B')*+X7]KA'`1;)_GB&[MFA>7%@0U-K[;P>4CO8 M5I ,?_@[GO]0!V .'I@?CKG,90X(.^^Y#WR@@Q[:$*@32TY]S)3?2()G&VD6 M=FS,D704.G/%DGHPT]*L]\++,%Y-'L4M_K9A9!Q#1*+8%#V:UQ38B?H%79VH2#FU MN>ZI>!##Y 8,)( B!4!;5(G)E,S(7%):E)D4^-8><)U%^8$=3)1%V0$=$(%6 M/5QE#0"P: E_&51<_E@9>UB?U1B+U6S(&KV=:]438"R$!4#0"< !XL5<^ F" M#H(?^>5@S,T<^F6;'_ !']2!'Y2!%'1([GA(:V!>YC%:2>V1;A0$_QE$%1+% MBH0>*EF*C00%(&548B'@6K0%6C#.XMR4>#B9DY$,"4A!G>T!!E9@'TR4!*Z: M%)B9\$E<`1Q?)R& \EF?L1 &1&1-S'#(VU40@\V@N.6%H)Q %OQ=#^Y@#N9@ M^=V@S/W=WW6;!=;!&)# SG4(F(22B$@!T,D8-WU3&42!*IZ$B\$)%!:'I&W> MC52:"<$$>"46XI",RKA%>J1AR8S L?2A7)R M=D!12V>G2'C;UW@!.Y!_AEX M`)9LU1XV#EW0A>-Z MB!3@8@*285MH"#W-:5%`1-"?$ERR5\2Y(!5KAN,"8SEB%17ZI\J>J6\42%8^M]P(&0U MP00,B,?BE.%YV,5P %"E)O/O0;]CJ5 GI(JJD0LQN+F*0P9)%+K M&6 O#LM;<-):W,6Q_KSE!9@`A3R$!YCY@& M;-UDA7P<9F8$F/V%?+B6WF7 !2 !.L:GD:;C?,XG4EXB,DI4=H;)YK3&S(B$ M#$!3'EU3[-R2@O[.$N6?0.(5Z*6(*^8$%$3:;M*8;; %<1*GK4WDL2@`>KXI M76" D+[?"<2!S*DH=08FS6FB;UU@'$A!"7@G(':G0F"9?&"<>?*<"=2INXS& MH #E"WR=D:XCDK9C:")>)?X@X'E8'O0!&JE&1HBBY3SH_PU,'-"/2# 1$_U. M5P)/V&215SJH;;*B3@Q/!A" (B7 `W 27-0%7-0:?#5J7&A5:'0)CX[!_ITI MGI[.W.'-8[E:$7]01S0`1I9'EVY!BER4(&BXIXXESY%@8.XS^^$ M1$D@ZY&.7V>NJU$.9;91 MXO;,).RC-QJ<(" M#W3IIDKE_F+BN\+NN>G60. M=-2@9",C#B*'.*Z(N Z>JBM]AN8.0F+Y^>QH>M\?J"\.RBO[_IUOY0$=L $2 MW,L^"FBE_%]NV-; LAGL8NTJQFZ)U-%KU)' "JBD0!<61,Q;9%:O(H 48(@% MI,! H>?D;$@&O L+_L(,$M"!T/;@44)OT2K>#U9O%AQ!#N `&[71SD$.!3$N M2\1.45)N^;6O#J*C4 JESW:F?<)CS/$!R=H9'^S!&ZQ?%,01XU*E/I5BT G6 MU.J39L2NU0XL[+XN5R:P2#B7@JXJ;.AN%#A'`L*%>JP,K[*=D#8?HAR*D(*< MEV `&^ @T9:O#2>>)9(P$,N<021!XPI8@%45$+"$'T1B#U-N#V]?^+4O^^9P MT!9M(=MQS/U66KU!G^W!&?6%*'F$,S71NJ4$"+'N$S2L*#?LX[:NV+YNK,XF M%Q_P%EL.UI($"L1%`IJM7#" ?F7(!K>1`T'.&V,-HK1NNJ8K49JO4=XM_@F/ M\!%RYF%E`7S*9VA.;FF:G][N\ @C)0XFY;SR65KQP1&W013\\:*OLA:W+A%@0-JBA:Y2Y+L(J:-X0!1H%08\P QV MZV>Q(!+H@3-7:J5VID(W]#-+KOHJ\@@KU;T6SK_@MZWU:XK8M'D4]'OU& M@1%P#3ZAFXF8[MAP84RT[ILT+)RX=!8-L/[QW\,:;(G8+BO3 MQ1#M!<@Z/WT5CM @W\AUK M:LENVQ[0@5B_P1ODZS*5%EJ31"G"V! D1DRS_C,[8U%G2-JLEG)LA UMCH0. M^$X.,("NXG/KM<5Q-I_;->1@R !/^V%[M,=688CRVO)#>)8"V#+%#?1@C$$?3+9T?R:[ M$O,<%W(/"^4T\Z!%+_+=5G0.&W-2XAF'U1PIW;,2RKD[D6GBH'^Z%L"6 !_0U>V2 M!3P`\M7R#]5RF97 &PBSA%-WA=,QNSZR"*\O-6ON(B/E?=KQAGMXX($8'%Y4 M'IPSE(XN*R]:- V3$>C3:T,!&+19+-;V&C3/&$23Q"Y/*Y9$!@!U`CA >A!Z M>D!C7FA H;3+Y"PW3UO)K.1H@BYBT:@2:-G*FS6ZNB2ZL*C?\/8),1^T M@;T#Q65N#FLXB_R4KKH9!/W(V1.\R1,D`>L._!,!.\)HX9\7*!<6Q+$3@%\K M. $8N@*<@),KP NH@ +T]@.XEPQ(Q '(!=>+_J%<*%*W)]08Q($>R'%4L_R6 M3R+>TW$CB_H(*^D-([+-F]^8F[E^_@%%B;7D20C'Z2.MI]M("<&<*@B)460C_Q6 MS87)JV(=T/VF4[?>PWPU:[9%8W?WS>>[^VR'BR9U\!D[!/VATW---? JV)G- ^\S719DDV!9@&6K0=[4#Q#J,"B% H& MM+UGQ7)>>)8#,, #+'=FG4&0@0R]4= M_;#NXV=F%CAC3GC 8"(GSYX_@Q*5(O4(DJ96H1XA\B(IDJ]9MXZY*@4Y=2G7 ML6?1CF5K@L4(\K)58/>"@PL(+GC0T-=$V@R#`Q-(X-U[8ON$!S]V;($$_I0W M?33*[#*#(M*L0(E0,@VTC#82J#1!/DJMH9,N$@FBC@1BZ8\-`8&##SW:@*,- M,EXX8;?=4#@A1:!2("('HI(H[CBKHAHBAR!>" ()XZB3;JNMD'OJ*.RPP$ZK M*%! @ `E\\L"1 2O(#$#KZH*.- M,FB"H@3=>--)Q1=RP#2'%8:2PCDHI/!*"BB.&.(%3%]0RJH>J4..B!606.$I MY[(32XH<&%C2K26UO."!^>!ZX#P30*%$&YVS"LBCDA@JJDZ-F@X[!QI;\BVUC"T/ M`0_4M "!!SR@:SPQQUN+`0T(^S@PM@(+H.66'6.,/RC&B$W<;0G$LS-P,SLP M08@H%(W"T\:U<%!V1Q(HT=8:I2V./-H8XX5\+SBQ4A45UC0'**#P2JRFGA"B MQ"#>'&((L+Z"BM,781R2NBR2,-:Q^=*"2P+T'D OK<9*D*)O\!CPX $"ZE(3 ML607.Y.!EPDXD\UJ_D]H0P]$.:MSSI[UW+S.`_/_IH MHX\W:CHA:ZTSZ*W?'%3XNJFNPH8B*GYS.B&('!JVSM.A;"1^*"&--\%873T` M##VVWBNA# 8>P+@$*>_*((%D%6"V``\<"" N\/#+8.;)J25AB#98DI/.GGW6 MW$"?`(L,:UV-!E98K>=S+P MG;YI0$Q&+ `.:_:8[^Q'!&\:0P'EIR=M(21<0/L6H-+%O]2(9G1>Q.)KV)4Z MES0J#W4H0Q[*,(;T-% W<-07U\"VN]X1`4`L@,,07PBP(R@ #ON5,#&R-,F0)#%WR: MB4U)) $#7H S.74K:'1JY?S.I<71F>Z*#2W4_A (VKGR%5'ET9KY.8(0A[,@Y'X25((FWE*(DP8:C7)(#Y&(>$VA M!A?((UUVT]/O8 `%4**9LNCR.'P^A@$G>-P-U20M!$A.9&WBCV0H]#.#SFF5 MFU/E9PY5$Z(-X=M"?$51_Y$KSA7HKW+/& M>4-?3!T@C+NAV<2!#5E@\:5+1E>[$HLY. J"J7)4J1*<0'@O4&F@B6 $J0@! M*%-Y$:/!NR0+]*T`KT5?NZ^'`!1D+0/;QK(*U.0`!Z2E61=(@7_=B0'Z*A;4 MB),64A ^( MRC =\G#1-H#8+\H-<7/MZH%H"H_;PMM:3G"4_J-'7[O1CP8*42)]W[5H:3X7 M.(!@[M)8&%Q "MXD# -"W8*\>&!O[I1!7@ZW7VFICS"*<^3C[GF7)DLN;Y-S MTXYFBSD&:4O7NP87@L3EX$#Y+\*V/)V$'YIW9<]F#WVP0Q\^+#MDM;RY;+0Y MSBW%FR#PIMMFPZ[:4L4<&TE%!U%Y3V/4XCVYR'LN)D# ":XG@V:EA066M0L# M9-#.%&# D_L<Z!>X4:ET<;*S:#,[.BJW2 M*A#J8._RH,,XS6QP!-N8X[!**)[$ MXP"(#%CR*3!8K[(6XP*D3F9DA@`PH *Z[KX(8 $"``#6Z>D"X/]RI0NAC "K MS"W < `"`,K.< `B)PRGZBYLT-N&0*6*``=.``> ``BD8 F P J,``B8X Z! MP D"L0^'``@*L0^!H __, ^7@ F*X!$A\1&9X N '>H )/K$'?, '<. 422 54Y&!2( _^NO)!@``H P`9#$+`: +_V]F["/6 M$,,"XF-]XD-)A)$`<-$,`T `LM 699$6U? 6E5$9F1$:NY 6J9$:H;$:DW$9 MES$,N;$;TY -"8 _(",R) ^[RA'2'H_%( _;L L'7N 4Z9#;4O&95)$5+< # M[K$56_$"[K$?^9$_@LP"!!(&JVH_'$-7A@P7K9$9HS$:S7 ALS$-DQ$7*;(B MBY$:8Q$`!* :.?(:.?(C0?(C8W$D&3(CL]$D1](,T3 ,UQ#*(F?A'(,M:,VU M9K(F[X+61(8$'$.JR OS,*\G(S HA=(GA9(`$!8##/7K#-.P&DT2(P$@( `` !.P`` ` end 5-Jun-1998 3:00:58-GMT,3448;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA01297 for ; Thu, 4 Jun 1998 21:00:56 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 21:57:35 EST From: furlos@rpi.edu (Steve Furlong) Reply-To: LitProg@SHSU.edu, furlos@rpi.edu Subject: Re: LitProg and GUIs Date: 5 Jun 1998 02:24:51 GMT Message-ID: <6l7ktj$onp$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l6j6i$8c5$1@murdoch.acc.Virginia.EDU>, Lee Wittenberg/home/faculty/leew wrote: >On Thu, 4 Jun 1998, Chun Yin Hsu wrote: <> >> I understand that this "reverse tangle" is a manual procedure as you >> described --- if so, it seems very tedious to maintain <> >> whenever it is modified by the GUI-builder. > >Yes, it's a manual process, but it's much easier to maintain <> >when it has subsidiary chunks that have been annotated with text >chunks than it is to maintain the gui using the automatic building >tool (at least, that's been my experience). If you just leave ><> a single chunk that doesn't reference any other chunks (i.e. >don't bother to "reverse tangle"), then the maintenance would be worse, >but the text chunks describing the code and well-thought-out chunk >names are what make LP such an excellent maintenance tool, to my way >of thinking. > >> Is there any "automated" approach to "reverse tangle" <>? > >I don't know of any. And, since the chunk names need to describe what >the code itself is doing, and short of artificial intelligence, no >automated tool can do that, I suspect there aren't any. I whipped up something along these lines a few years ago. You have to manually untangle the file the first time, but then the utility is able to merge in changes produced by the environment, and indicate where human decisions are needed. Good news #1 is, it worked fairly well for code generated by Visual Basic 3 and Visual C++ (probably 1.5). Bad news #1 is, I wrote it for CLiP, which is used occasionally by me and never by anyone else, so far as I can tell. Bad news #2, it was definitely at the "proof of concept" stage and not ready for release even to hobbyists. Bad news #3, I lost the code. Good news #2, it was an AWK script and should be pretty easy to replicate if I ever find a few hours. (Says the man who has spent a good hour today farting around on the internet. Such is life.) >On the other hand, it *would* be possible to write a program that >takes another program and automatically replaces blocks of code >nested inside other chunks of code (as in loops and conditionals) with >default chunk names, which could then be massaged by a human into some >kind of understandable shape. For example, the C code Agreed. That was going to be my next step. >Not pretty, but it can be done automatically, and it is a place to >start. Someone has to write the tool, of course. Would you care to >volunteer? :-) It's on my list. A wise man would not take any great comfort from that assurance. Regards, and with a reminder that the road to Hell is paved with good intentions, Steve Furlong 5-Jun-1998 3:48:12-GMT,28835;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA02093 for ; Thu, 4 Jun 1998 21:48:10 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 22:35:21 EST Reply-To: LitProg@SHSU.edu, "Adeliae" From: "Adeliae" Subject: help Date: Thu, 4 Jun 1998 20:20:02 -0700 Message-ID: To: LitProg@SHSU.edu Hello, I am trying to put together a snapshot of our world as it is at the door of the 21st century. I would like you to be a part of this compilation because we all are what the 21st century will be made of. There is a form available to everybody at Http://www.geocities.com/Paris/Parc/4665/sendand.htm where you can send anything (art, text, poems, sounds, photos,anything...). If you decide to help me, I will send you, by email, the address of this "Portrait of the world at the door of the 21st century" as soon as it is published. Thank You for sharing, adeliae Http://www.geocities.com/Paris/Parc/4665/english.htm Eudyptes-crestatus@usa.net begin 666 adelie001.gif M1TE&.#EA#0)W`><```````@($! ``! (`! 8*1@0&!@ARDQ6BDQRE"A"E"C"EKE"E[K3$I,3$Q0C%"6C%" M:S%">S%CA#%KA#%SE#DY2CEKE$(A*4(I*4(Q,4(Q0D)"0D)"4D)"6D)26D)2 M:T):V-*8V-: M8V-:VMS>VMSA&M[E',Q,7-26GM" M0GM*2GMC:WM[G'N,I81".8Q*0HQ26HQC6HQS:XQSY2$C)24E)2Z6$ MC*6MM:6]O:6]SJV4E*V MW5[A'G5KL>#OO%^__E<&OY)Q]=28D!6!* $K+$&%<%12428_"QYMID9@4U M5$I4#:7??@44@&(`*J;(GU10D?;14#222&-C4!4P0(LLMDA BC\2@,"00RI@ M`0,67'!!DDLRH `"3R+P8XI4]M@CE55BJ>656[K8HI9>@BEFB@A@:<&09UI@ M9)H(J)FF`D:VR::;23+I@05W>J!GGGKB>8$'?^[I00DF8&#"H8BB@*@)BI[@ M* I!O#!$#D3D8.D++Z#@Z*$E"*KDG4BZV2:4HYYIY)-+?AIH"248BN@)_BB@ M,"D10Q!A:PZ37BK$"X?J>0&<9Q(I[+#$EEDLF6,F*V:9R!; K)EYXIGDG4JF MNJ0%=:;J)[5*2MLGMG=Z&^B>>'I PJ"L>G""">NRZZZC04#Z@J7T3OH"$9$& ML6D)YY*K+;:G!CMGFT8RP"V@&'1ZJ*&QGD"OK1#?6BFFBOJJ)JE#.FMLLQMK MO/&/1#JK[)C/@MFQF=F&J^VU_[*,[;3>FEMNGWF2X*>W,^_9*J&'MMLSH[!& M.NG0M.KZ@K[L\BLHM4AFG&RI3([K0:'OQBH$I1$G82L2N.:0J0E[KIEQ`L82 MJ_'9"11 =L@;ESSRV\E:2RVWUB9IY,HP_\GD_K0T@PLSH#;_*;6>G0Z:<*_K MKALOO5A#7&NE]O*Z+Z ,/"N EU-2N2.0&A_YY^&+PCHOKD1H77K$7K^PKJ_ MIATR"&B+/&3:(+@^]MDGPZT[E00H8'.V).!])+;79INJS8#NB;P%R\NL) D* MT'Q!OX-67[B>8+LK+^FUFHZ$K9->G6F[3I8\%)4"*(#^^2E>KF6;%QB*0>*0 M6OIX$DE\;SH15VL*]K4(6!L"0/ CV\%.9 4@X.P6.#O9Z2YS#TP1\9XW06[5 M*52A.AX#JN6\/P5/;\%+$@D8$#A?D0`#YB)<]72F+D+!"E9#>,'5M*8_\%4J M!XHR`=E2M*/-Z6@`_LQ27P&$B*64;&Y'/8K>ST3W,*WACX83DQSETG0V`L*. M61DCH-J&M<4!J@V!NPNC!*='PKQEJTYVHQ:3D$?&X#DO3]4*7@D].+WIH? $ M*M33"?>4.'T)@5:V>N+INB(LFV-D@*2UG,@F 11Q8JX@5.;]U" M$@"!9["\R>R7R!NAG4CPP1.>"X^LPN/2"%>"Q'EM5DC(7Q((^:LPH<]9:>-8 MVG:T2@9LT6-$9-:5+@"T(&P2:TXTG=?\!RA10?**4D)@V8@$.U2R# MY47<>3$!L%M;[1) MB>A$I5?Q-(!FP4R, &H??LL@ C76*? ";-;+E-H'3\% M3)AAP*K!.P$)'$76=ZTNA:+4$_W,>2\49)-D&A.2D KP`">=C:Y29< #C 4H M!Q3I`2;3W$A-X+5-UG!_.=#7ZI;T)(]Y48O9+.5*T92 1QJIL@H`Z@[?YC9^ M>A:J_7R95E>FRU0A:4U-,I?!S(4\<]S_JBZWG71Q#D*A>?*[:#H9P(' M5*ZSSB+ YCFG@-Z1:4IU91M@\:J RCF `-XD$I(6<('R8=-\ M.J*2!S2)W>P6S6N+->0K;?=%M@V0E9X;7H?+F['.`E=+[KME MM18)2ZM:AKH19]6:WEB;":OZ[2H(\4+:":ZGS$Z]578@:VR9$+G9"P#VI-Y, MKK,R\%M#2C4#"(@N_JG25M>TR?*E%D!!"@"IW1MR%U"D+&4"10;/!4Y0`1WN M;KZ4G7%O3S0684@"$:ZP#*/JW4S*6`C! M)N5VH,)%8H $"H !!FB@`![ @)K55^A*PM1AGJS4=L'6W39YS($=HQV<_JH] M[B1O,$ZNP]*SL@U:;LOI=[R$XP?IJ%78QE9F_66>6D]PM,>=[GNWPF'2/%#J M+ZYGB\=&L"2[74F ?A+MCF[C6?8SM-C2Y?*LJBK!N1V_.<^3""[-O&/" MJW%/E*:M=G4H,V_.6%>*)WNS.0&-@;E%1%=!P\MTTA15C@$H4( $`'V :CYI M`D2'@$G3NVL)/@N(#M/X#=?)J3^9+9OP=!;LW)2 MW>X6G%7;^Y0/O9E MR">>0PUFQV("[MO2>AX;2YC"9M8OD/B+0N)K_A6O"P0<3"SBIJ)9Y+Z0%<"M M"F 1D9[$@,H](,M0$BF@-8 !(6WP`4=Z0#49('$>HBESW(0"&D7_1(\/-[R>-VY<535+)4[N54475&@'=+OI)D&.!W=!-;P11X),!D M03 K3Q0%4J!]3S0I"1!^%X@`!E!\=!.5=S4Z5'R21#0Y _4I $4@`%*Q@% M44 $*G!E6+(Y.L%M_ECR9=X$)W<5/150`#N(`!@`6&A6`"K0?K]RA$-"<$_W M)"O@) TV<$ZB`1;0;4X3;!:0`E=36%]C`EDX8\S6A6329VJ"7GXG@:!(@ -"BD8J5H-N)E:VA";7ZW04=R6ER42+J#2 *02X/'`"(`?<\3 M<2ED9(#C1LL(/3*#;L3$*IA".MDG!=*X@MLH6';'3SN"2)D#)0B4`9X7_HPM MT )D!H22&%V0F$D)X $;((ED-@%V18TSUG!Q5P`9X &0.$1$93(I@"F9$B^U MMR2O-$]=E$!"`B5YEV0CI"1(XB1J0GSL=8&)!G;=UE#)%RAHN4<1MT=L^88> MQ%]VV$Q'@WU\J()2H$.(2)::,U<`V&!%"$2D\B0:H'X1IX1AUGY0-W#!:(XH MX%<14#D*P % B(D;D#;Q4V;$18Y2%2N0XB[_DU["UV&;B `=`(1I_K.$3^)6P8@"C]EA9!8EW@28 MP88`0#0UF](N'>=QJ12+:S<[:F*0OP=WIY(Q+8E 2W5 B"8`(' Y>M1=P^-H MTS(]>_)5#]5"$!6@N=5?YY),;*4_T4@$X00D+:5HURA.FW-T5-(`4])A/MB2 M3X(!;D5F0A(_&W!K3[)7;3(#"*"#3M)^F(AKOY5AH)F<8R4$B-*!`MEB+=9G M4B4G&R1,3?,DP;)G<(-H6I(XL#F@-)<\?#1;`.8H@Z*1@V>'CB(I]S--+W@^ M4Y(`ZG.(8-[,(0,(GCF:.>JG;RLYED,$)Y639<[R MF ,'DQ[0`7[5`=M9?]38@PR0`2@`>NW7=9CH`:L*A&8VA)!85\*6(B30*QRG M)*]T5UNH9T&%=6YR6CS5FBEB@<87KHCD/^MB8-#S.\0TFP9Z0BY46P*V+V\( M+N;23#^ *;0R826#`"C1(NYCB"W"C2*CC9_G+("F:LE5/L6Z:S#980G[(YX3 M787$`A?@`-:I`0_0"69[]:<=UCO>)XGV!X2TQJ$_A #4 MDTM'>D I%SN2-4]%PB9)M:]B])]%E#KL)*!H)#>$8U:1(D.8`I53ID=M6(*A MJF#(.98OQ2+]&K!4\E8(``%7&4!A-D0M<*(;4#D7@ )O"H0;< &KNH/Q@P%O M.JL9T&&^%6%B]V]U5:$\!$3E(CC8,BHHFW9*M6>T(SO%\IZ:"28O*ZL%<"M? MDV)7!7@&:ENH6C_W8BG].'3)(T?H@I<$, !G_O)#_'0Y4_*O[<,^4%52^48F M"W"B)"55"I"U&?!PEFMA/@F9>K68+WH!&8!F$C"&#) "['=<45>KL2M5'?AC M7"2N;5.W`\Q%JQF6"+P[E;(K6/@M9\E5H:HZGK8K,=0PK@B'@D,XWA2S\J03 M5W(Y*WD^[I,Y#:97G6>P:)8!OCJ$%] !4E6QZ6>4" *NR:C376<]25,<7*]!X2R;:-V6L1LK^- R&*!S"*N2HHEC*,Z]-9=PH1? M%P!1/,N\1(,ON[(IM4E,>H*TP88^#KFTWOLEVHLE]L>B5\8B'L !4#=ZD'@" M'S"9'N!775>L#M !_@S `0WWIPC0`IP7`9 XB4X2`%MK+-O+35$C;N:73TCJ M-KN+17O&A1^'R?J$);.G*:,*.&O"/-%#.'WT,/>RBD=CQ1B0`C/P6_37PY53K!=P MT Z7`,E\OBAPHA(`HA>P<+=&,#8))V4K>>PCFW6"=B&'I.X%SD^9T\_.(D+= M%3",VE.&FG(I5T]S=4 FC6U.'$9-&6I!P"E"NU6?\E#K(BDO`'2HDP/(!KWU M&*VNJ1,A_+U+ZR+&&,.$0`N#DB<$+5XH#7:Y5A"==(%\7NM3%OF]*;!;SNF_O9;Q/DC1N0LCR9H[GBD*7W$ M%9C):7VR*]VHG&,[);.?6+*>C%+/!\JIJH);4@HI/G<$$7,UDS-=*2G=/G2( MB6U$.M9#L0R)[0>F=>6K0[0")W")&"MK+(O')Z4D&, "P9@!*0#>,,EP&,!( MIDNG,[XGOIY MTFG75,PFUV_[17/'=J5T3[7S*M2:U_X51^/B0OV(*YS&??PS/@?8O2Z'B#IA MU*#UZF>L94*)%T1+&.YAQ_=WYUN[JF *=0AP`([\+$..:U_3*-7Z*YO5,9K,+(5V_DI1 MVRR1I4"TPTCO1&B/)&B",K(8@"?5[D;/LU5Z1#^K. 0\/\^QX@'T[;3EYXLZ M]MQ&+=U!7B4!5R1%(K]^U0+1E;HH\ $?`'J-J0`I$ /F*+J0.K].LL-TF@`8 M``&9%8P;M+'(OE*]\^,J:0$GL"0\US"-TH%G(LYMS5ZT+<[,!E1JDWNVPV)K M_7Y(NQ&JM%3=1N3%0,@/%0JV(F MD+H3X "]MP`#]P%UI0(J4-%$&4"3"*:7N%=/@L.B=]H;1#89`*8(2R4G@ 1# MHHJ8`BO!?5Y'"D'D[$#\#2;9!/BZJT@!9(L>_@B&6IYD,%],=:3%N\5S^C@T M%!,$?@5:TIUC_7ST1*_&1A]B2AIG=.K+H'<`.Y@V*I "'$#L[/>I%!!@O>/!I`H-IJ(*)XE0JE(1@J$Z;%O7@H<0)[E99:ST1Q,1N MLF?-ABU?EFS:MF#%KA6+'B%M`@H<=$3PH `!!@DBKY@!`P4@Z PH#BS3P+$+ M-E@P+P\T8" #O#K+P+\':%(L`\OJFR^L,>PP#;6'AL@*A:EZ\B !XD;JS3:1 M.L+0II-V*ZE&%F'$326:BH/.IXI0V&DZ$J#+2"CF+J@.)Z=,&Y($[:BB*@B* M3+1(I+78*F" L>(J*[XNL52+K;BR#*M,CC;JKX#->$J@(, NF(BRO##0_L@! M!PS2R0$,)&! @SR"2BC?)PH!].05.K6(7%EKE7K6FU2J8:FJBAE MBTKP\MGSUO-2VK+8D[9E]\R_N@O@9P+4D ##S*HJ\*[_-M( M0\ 8@ ##R"+@*# T"\JW@#*&3 &!%Z20-+47+#6N+QP];9,X!9AB.R<+"!() M)19IJXDE%77BR2**LBJ28XP\@,[(5H/B52@1-C:YA.VF,N$'BW PX8("`E#6 MYI:U9/9RS*$][^7].(6[/J(3N(\NR?K++U?+.,A(0, RT RO"/W#.B_4?QZ0 MZ8VR'&W7#!! `8HDPGXAAXI^!6Q%##%\F\BVV3;-IMQ@JFG'4FG:"6,4($+\ M;R>?"]FT)9?LVTDG@V44T)_8-3 MA!SPK3U9`&F2:8"\_DA"$P4TIH$ZD0RATA68_%BI`#APD@4*$(3A/20KE5+. M3NA"'! `!6\[00YRE+-"XV0D>@BAT4M40C$B)6P]R'KE$[7D%LY),7YFVHW0=H28O&BH0@U\# (*_B.9 M;5V !1@H'9I>9YF"#.1;O@QFU'J&$!(0P0,(.4'8Q&:B1;Y)D'EARJ^4D[*) M<(=*RNDF1DQSJ(_$:(1RS!M5(B(II1R'DZ3,(."0U*2A3[[50$*A#B'9 M&8D%+JF5%!SO4F\*IR)+`*N9L@BS.4"Z#,DO-4 MJB>)0M!5/K96)C,E=P0:GO @$;'FV9S-IFA6^-7/H;^=XI@6*)OZV(5I_2&L MA@J&NY'T4B &U!#V[%40Q0!V7G0:H$Y^1T%675--QP,D%. ML8)9B*2F*JV9:49,2-1;72R]IR4"V$J95:=&Q;]9-9\0,1!;V:9,/.E+XB+? M8I[W29%^OHWBS+KDU3(E"R8Y85?/H.-%MCXF48KIZ[9^-Y*UT:XD)"54J[)' MJ(WL9E/=_>#83,1(_K9EYZ;I38%E(Q(1F$[*@SV]2 N?USK*9@PB4LCORH(5 M+(*RMH>JC964PL.X']26H!U)3_PF/$4!C/6A9]%RF ?@98^,&20+3-&ZI&:[ M8O+$7B(I&(D]8+N[-! #$!")7DCR&GA2$$U9PTD*-HM.P4(VA0WQ24[9.RDD M^U@U4E8.\H;\JU=1!(=)E4+ZL*JX_^+SJ;*MRE:J8H(7J"S!%FABA&_I,E>J M>CU=_M))0! "&SBIQ%JE38N1^R8[688C3!MI!![V`,"86)@>1MHD&3 ")Q7Z MBZUD%0@5^3Q7J3!6+VCO0R35:&UBEB(^_=4)>))"2M^W*DC-KQ2D\()2_@=! MMD@TGU.=FAV &G@U5JG*E*O,:2PC=):]92C,7.U@D'0!#GF@`Q_H0(<^Y($/ M8@!"$!BYP!%FY&=/H\F;%1-,@G#<30(:"9TV@F' >& $/7#J`*>;-818P+$M MM!T*4V@B]:);!E% LKKW^) 5:+:GQSO>"BU"%6PG-5+JED(.O.-N\51UM4A< M\E2L,H0A0$2S[OXV5D>0J"@2/#U/%"M7S;,6$(PY!'J@0QC4T(8PA $,8%B# MP_=P!*>ZK29RY.Y&..2;?%4-I=FRU[SLA1?$9&0$/.C!"+I)$Y;#II,6ER_) M'$1O[9%HGGL<7N8CE002#6'0WZ;2CRJ+[G0G_D'=6!F"93D;K%+N%^JF/8%F M4<_N%TBIREB=SH*;:+\QJZ<\8 KSA(% !SA @0QYT(,=[. '.X#A#7SX0QZP M@)&>,="+;=J=]#35XF)GQ$YM'.F.6KPV#_# "CX@@7)2)))6%L XX,R5R(1B M1D2G]P28O63F=1X%/7:[1#E(+]8H)YK3J:S8-K Q/74C@JI+/2% `PO,[#-RD[`(@SAP`1B `2PH M@Q4$@SSX`S[P`R#P@(?I&7:Q"S1!';HHB+R8J[J(D)"JJ N@B_);@B7L`2%( MD;IH/R71B&T9H9I"_A'&R1AT&QX9&!Z=Z\* P3]!^S_PRC;32S=UPP(I0 (B M. *(L H3P $G*R)0D[*IP[_:8XT#8Y8:> ,C@(,R MF $3<( 1P(@,T($LL ,Q@#Y T(/QH"L@E!>#Z0ODLIL&PHS^*+8S83.2\( > M6((J6((>2+PIC$*@H$)8U BCH#QS8Z\DT($H( )=1$"PR;D=^Z#4`,9%RSE? M1#HL")O4TPJ+,)^G(R=\6R^M\#P2J3V*N+UC`<0(BZ*V^#RF8*"!;/*NM*H;N@"*F+,QY("2'*C(B%@!).B@G#.] M;3,ZD@081N-(G#O)-$1 2#\@#,8@#5F&_LD.($+@`(G#*_C\`!,IL/VC+F92@';M@F#0Z MD]CL"\%H`BN8@MU<@AW8@1 `@B/PKF2I&Z! #+Q[R^2X+W9#JA4(FYS+K_S2 M`;_<2^@\R>M,0RS(@BA @C:<3 "C*BR\BJRP/)O4L>*Y"G83@B&@3/=(#]X3 M"R][3SZ4GY9K( \@RC=XC),P"Y?(#BF@03]@S?:SRI'(%W=B2Z#AI8QKHS,Q M12HP@]VL@BE0@AV@`1'@P/-8B;G@HL&QG>1$KXF@R*S 2+]40+#A0FT[.H[, M2V.\3I24`CU:P%([HN^!NNX@0V%$SYFT26G,`0U B ``/C_<$OJJ)M/"@6\0`<\ ,H M*(,1.(DS"P$+P- ^\ ,_" )H^QS1"(V9(*Y?HZL6$[_K8XF@N ,\0 ,MT((= MN($02$HV3=41^(F[@T4/M8SLZ"<50J\\7;22+,9>;-%!A5'!U$ZP(0*LF(JL MHJH3R,.*'$DBB%0>[3S,JCJ8LJ!44Z@JHJ)!Q*()$PT2``,RB((R4(DS_ON( M5$4"&]R#)VU-_)!5:/,K@A"=M=&KNF )#PB"A+N#+0A6$ `![^K73A(W!6++ MMBPO>[)3YU5&2 M.3F.#UV4A00^(`CA(1#B(@S(X.(?S`RQ(%"T="1/ `@"T"!6QR@8EB/$C M,8X`))PP`37 @[/%`SEP`RT0@1'@6I$H)7&=,T%JRU9I()%IBG'KB9L24UXDG-;UR00'A:.E+K4"HA@P)]=PQP(#?CX MP+)RW\RU7'J5WRE%_MT\R ,R"(,XP(,^X(,\8%U8!0X'\"F+L!-,J9XMVD$> MW)81>((X.-M>G> S2#Q6::7LL*,7* &U^6#K8("ER(OYLR> 8ARY)#U,\UMU M8V$81H+0[30%+2H'V@LXN'-3LM-XLB-E#S@*) MR#JK,@%IC!0DL%[ U<6 N4 &E)0CZ#=1YC('`[YHL1GXL3"D+0`J=5IA_D9: M@=5:EJBI9VW$EKB;VV0)BS&!-)@#-=;E.7 #QT'"##/%.)9CNDV>CH47Z2@W MY]T;_$OA!/33048ZP,QF[<5F[1Q@JS G4$-/X=E)(W8H M;GQ73JTP/U24>>[#G)[G+J7'( 2@I+" $HJ>'6EE7BF!*U"#.7#J-#Y;.9 # M*GB!)[R;AXQCSU.G@K$`,Y(.9;[;NZT(QA'#Z*W6:H91PCUD&48RI(I)UM L M\65AF&WAE]I9()X4%%"6;5PHHUV/;FR?^;R9:4':N)CGWI@/!MJ?,19"1C1, M`WK:D#FY)A!+*N""+N "-Y@#J=YL+SB"R(&,_F+#"7&U0*V&R,VP#*%PD-1N M9ON;B(I<@:2*"+RT7BS .;I>:VS6[4E9SQRHNDL[`KOLZ!C=3NT5S/Y;0$I) M[HW4)KX<`LP#7$.-@N)^<$%NM!&A\!S@.IV.L&8YXE:#W^M&4F49D^SN#3KJ MD/YQ`!O3FQ-'DDXB;QXPRQV04"Y `ZEV`S5X@LCY)HL;"G;SO#4\BLV8VW"" MHT.CBN7T8Y(]NNI]_E&U+F[MU&W %1[-RSS^:W""YC*/6*% MNDQ![&N:9M_XY1+U!> ;T:O;Z$KC4*2+\);(,3D2:-,:N($:,$LEF *#Y((T M^((K$(+ NT\448H7@"DD0 (H> '+Z!6FN&,K'#<^MD7\0[*;"V27C5F1UFTR M.%0)CU'^8]QK=7"8=?('9^$.2G B:%?@PMR#*M*O[\?LWJ/]46KPS[LT(@A#L60G G(C)@,1/H1!V".$8#X&SAV MQ%O");B"(I@.Q2@M/-6*[4 "0Z=RXQGAU*:SI>#OGJ@D/#VMN@080$W 0HU9 MDLX"3I_YD3;4F_]TP+3R""=UW2;I2!X>X8F4?O-)AM)PYQY:LA,X# ]XTJR< MIV_=`E4K=G$;\[JO;TX!H&*2.&3%KD?%(%@DNO@62U+)BK# -82"*$C[^P:E MI5@*.IF_G^+C#,LA[W;YYNNYT",_[*!@#G\=YP(1D%WL9 MFF&HZ"X++\.2F)%U;BQLA<)N7/^-K8W3@?:K_DNAC,;J+'8Q#6:[@1\H@B"0 M>$=LY=/X`2=X`BBX`N]X@15(^QB%@A6 CM.NT\@@`3I!-&=FSCUMW,#<7B>O M>4XO@S(@`YKW^9AU=W=W\+PW?KKV: A)0@\0`1_X@28P@B*X`4=DDB!P`C4`@R\H`D,'B"%( MD$218A#*"08D&%Q8>($AB0L/,6#P4!&#"10F7J!(D>-C$B)$DD@A65 *EBQ2 MLK#,0B9+&9@P8[Y\V9)EE"PY5Z9,R7+,S9L[5>K,4*# @*,"D"8=(& `5*A, M"RQ=ZE2JU*=,FV)%_NJ5JM>D1\<>%3N6P%@$!1(4((" 0 ($"!182* ``0.& M"O9FS%C1@X7 %CQX$#&B"!0H3XS@*#%B!) K:N:DN3+DQ64D4*2,X8Q0(<.& M"C$H]-#P(D8,)U"L_BAR9!*3!E'R9)E2S,PR9$$"QA87.$$$SUPD<84G$ M``:G74#8"1AI]()'.1"Q0FQ$&'02%BOEY%)NO>GFFTR_C0'4<$%A<5P;_L%% M<9P4$)3UE55/64=54@)T5R188EUU'5+A13>>6>2!=5YY:"A1Y MD-$))J1@`@X^W$""#R:40-@()SP1!19?0-$$%0C.H883EPTA$&=2L,$2%!$Y M)"@#II%VP47SH;#H"SFD@(2(241!TFP]L2B3;C/QU@9OO.W6$E TYN33CBS5 M=.EQ60"E@U+933G>=@+(2B22574WE9)133>=E%^1IU:5:"&07ET67&"7!:%] MB0)ACN90GPE%./%#$4:\8,(().#0Q)M?7/&$'&O@ZQ(AQQE/%&%E"4L%"\&V:(**(6 M8901OCFL,!(4E!J4XDU8[!8P;S M[*G:!U_*(G"?TH2I2U@X(#)9%WA"#FF8X5\=ALG11PW&)NELQ2VWL&YQ MRUU\V@ZWA 6-< =<_K#:F1H5)5A"RAJEWG\?J2NN298%`I,AAXR>RO!%3A'0 M)NQ.Q NQ%;29$"(2,00103@!Q1542,&$8E ,_008U `&)"@-,YO)`ASJ$ <% MYJ@$+\/ 0MS5$(N0@"+JVP@*7&.YX*5H>'0[VZ>25Q.YP2UA!@NA303F*2G@ M36,#.)*0!.<4K33)5R]LRI%N-97O4&]\) .67.B2@,AYH 2J"9/\"D*$2;E/ M"IMY7_^\]04G7.$*.AE#%*! P#WIZ06:&0,9X&"'/M@!=ED8P@ELYRX26*10 M%C%BF% `HMZ-Q$3]0@ES?)*I%T7/)7$CWMD4!C _"BPWOP&A%- B'HK-_FHZ M1KJ8X*J2%:X4"8=A#X/1VEKR*6T2TE.>XJ,"R"-)IFAGAED!G/=X!24H=4R=OU+< M>8;U'I==#5&K.8&(D)"$-TGA"034#$?6A *)6 `!@@%,8$B RUOF\@6ZA (8 MZY"'/>S!#WN 0QLB)$&'F"9K]5)-UV C-CPRAR7/"T[": *<')UMA($\E?': M@-$X9$%B>;,A=AS)E>U9DG#@^Q$/C_)3H!K._BWR7!E[DG6A^> ,GR)RZ!.& M($HDQ"Q,;,Q0EA@@EZ,4E 3_S.40@# $'.P)HF+<0Q_(F(?8D>$%5Q7-6RFR MM=6$4B3\*DA*_I5"0BX'I:?*5(Q,JK#G@; ,L2N#`PX7*ZD@Y5:-!(_&, D^ M'19@J#SLH>&NI*6Y>" !%2(B^M3G5"@0P5% B$(.PG0"*'C@! 1E0+("8U"# M>E$@6QSKGLCZ(#U4M ]^2"OL'X7OA060L'*BD*DCV,<"0KUA)N,91,?UMV47 M0 %#,* "]*4/9RA84Q%+P!%#68 $!H7ME42 `RTF!@H"P<$6!P*%-NC!#X ` MQ!]^ZX<_].$-9!A#@!%57 :K!B.K08%4(\4O&?N$;<4K`]ER(FE+]153P-&N M3)Q7V-C)X#EJ04O&""?#=4XE! Q `AQX&PB8!*(D62@H9GM5T"LI@'$&_H5/ MO%S+X#5E) ,ER( )//!E^6PH3!)Q;5X"`UL+B. $3FPS%+PPD&DGY@UUR',@ M_G!G/OO!#W6 ': C1"<9FQ=$Z;0FH+EKFYZ M7(:,FD=*(ZM5=&XU'02(`-44M4,<$O[=.!"!P283#Q A/N6[H$>I\*E(UHX= M[-8&F]#SPKC+8LL`$2AD"&FM`QO8`%%HI]S:']8V( )Q9SS_E@YQ>(D1L5;! MUGI(Q?EZ+DK(UNCGW7$VHTIRC6!PB$ZVP>A?B6K+Y _B')*+X7]KA'`1;)_GB&[MFA>7%@0U-K[;P>4CO8 M5I ,?_@[GO]0!V .'I@?CKG,90X(.^^Y#WR@@Q[:$*@32TY]S)3?2()G&VD6 M=FS,D704.G/%DGHPT]*L]\++,%Y-'L4M_K9A9!Q#1*+8%#V:UQ38B?H%79VH2#FU MN>ZI>!##Y 8,)( B!4!;5(G)E,S(7%):E)D4^-8><)U%^8$=3)1%V0$=$(%6 M/5QE#0"P: E_&51<_E@9>UB?U1B+U6S(&KV=:]438"R$!4#0"< !XL5<^ F" M#H(?^>5@S,T<^F6;'_ !']2!'Y2!%'1([GA(:V!>YC%:2>V1;A0$_QE$%1+% MBH0>*EF*C00%(&548B'@6K0%6C#.XMR4>#B9DY$,"4A!G>T!!E9@'TR4!*Z: M%)B9\$E<`1Q?)R& \EF?L1 &1&1-S'#(VU40@\V@N.6%H)Q %OQ=#^Y@#N9@ M^=V@S/W=WW6;!=;!&)# SG4(F(22B$@!T,D8-WU3&42!*IZ$B\$)%!:'I&W> MC52:"<$$>"46XI",RKA%>J1AR8S L?2A7)R M=D!12V>G2'C;UW@!.Y!_AEX M`)9LU1XV#EW0A>-Z MB!3@8@*285MH"#W-:5%`1-"?$ERR5\2Y(!5KAN,"8SEB%17ZI\J>J6\42%8^M]P(&0U MP00,B,?BE.%YV,5P %"E)O/O0;]CJ5 GI(JJD0LQN+F*0P9)%+K M&6 O#LM;<-):W,6Q_KSE!9@`A3R$!YCY@& M;-UDA7P<9F8$F/V%?+B6WF7 !2 !.L:GD:;C?,XG4EXB,DI4=H;)YK3&S(B$ M#$!3'EU3[-R2@O[.$N6?0.(5Z*6(*^8$%$3:;M*8;; %<1*GK4WDL2@`>KXI M76" D+[?"<2!S*DH=08FS6FB;UU@'$A!"7@G(':G0F"9?&"<>?*<"=2INXS& MH #E"WR=D:XCDK9C:")>)?X@X'E8'O0!&JE&1HBBY3SH_PU,'-"/2# 1$_U. M5P)/V&215SJH;;*B3@Q/!A" (B7 `W 27-0%7-0:?#5J7&A5:'0)CX[!_ITI MGI[.W.'-8[E:$7]01S0`1I9'EVY!BER4(&BXIXXESY%@8.XS^^$ M1$D@ZY&.7V>NJU$.9;91 MXO;,).RC-QJ<(" M#W3IIDKE_F+BN\+NN>G60. M=-2@9",C#B*'.*Z(N Z>JBM]AN8.0F+Y^>QH>M\?J"\.RBO[_IUOY0$=L $2 MW,L^"FBE_%]NV-; LAGL8NTJQFZ)U-%KU)' "JBD0!<61,Q;9%:O(H 48(@% MI,! H>?D;$@&O L+_L(,$M"!T/;@44)OT2K>#U9O%AQ!#N `&[71SD$.!3$N M2\1.45)N^;6O#J*C4 JESW:F?<)CS/$!R=H9'^S!&ZQ?%,01XU*E/I5BT G6 MU.J39L2NU0XL[+XN5R:P2#B7@JXJ;.AN%#A'`L*%>JP,K[*=D#8?HAR*D(*< MEV `&^ @T9:O#2>>)9(P$,N<021!XPI8@%45$+"$'T1B#U-N#V]?^+4O^^9P MT!9M(=MQS/U66KU!G^W!&?6%*'F$,S71NJ4$"+'N$S2L*#?LX[:NV+YNK,XF M%Q_P%EL.UI($"L1%`IJM7#" ?F7(!K>1`T'.&V,-HK1NNJ8K49JO4=XM_@F/ M\!%RYF%E`7S*9VA.;FF:G][N\ @C)0XFY;SR65KQP1&W013\\:*OLA:W+A%@0-JBA:Y2Y+L(J:-X0!1H%08\P QV MZV>Q(!+H@3-7:J5VID(W]#-+KOHJ\@@KU;T6SK_@MZWU:XK8M'D4]'OU& M@1%P#3ZAFXF8[MAP84RT[ILT+)RX=!8-L/[QW\,:;(G8+BO3 MQ1#M!<@Z/WT5CM @W\AUK M:LENVQ[0@5B_P1ODZS*5%EJ31"G"V! D1DRS_C,[8U%G2-JLEG)LA UMCH0. M^$X.,("NXG/KM<5Q-I_;->1@R !/^V%[M,=688CRVO)#>)8"V#+%#?1@C$$?3+9T?R:[ M$O,<%W(/"^4T\Z!%+_+=5G0.&W-2XAF'U1PIW;,2RKD[D6GBH'^Z%L"6 !_0U>V2 M!3P`\M7R#]5RF97 &PBSA%-WA=,QNSZR"*\O-6ON(B/E?=KQAGMXX($8'%Y4 M'IPSE(XN*R]:- V3$>C3:T,!&+19+-;V&C3/&$23Q"Y/*Y9$!@!U`CA >A!Z M>D!C7FA H;3+Y"PW3UO)K.1H@BYBT:@2:-G*FS6ZNB2ZL*C?\/8),1^T M@;T#Q65N#FLXB_R4KKH9!/W(V1.\R1,D`>L._!,!.\)HX9\7*!<6Q+$3@%\K M. $8N@*<@),KP NH@ +T]@.XEPQ(Q '(!=>+_J%<*%*W)]08Q($>R'%4L_R6 M3R+>TW$CB_H(*^D-([+-F]^8F[E^_@%%B;7D20C'Z2.MI]M("<&<*@B)460C_Q6 MS87)JV(=T/VF4[?>PWPU:[9%8W?WS>>[^VR'BR9U\!D[!/VATW---? JV)G- ^\S719DDV!9@&6K0=[4#Q#J,"B% H& MM+UGQ7)>>)8#,, #+'=FG4&0@0R]4= M_;#NXV=F%CAC3GC 8"(GSYX_@Q*5(O4(DJ96H1XA\B(IDJ]9MXZY*@4Y=2G7 ML6?1CF5K@L4(\K)58/>"@PL(+GC0T-=$V@R#`Q-(X-U[8ON$!S]V;($$_I0W M?33*[#*#(M*L0(E0,@VTC#82J#1!/DJMH9,N$@FBC@1BZ8\-`8&##SW:@*,- M,EXX8;?=4#@A1:!2("('HI(H[CBKHAHBAR!>" ()XZB3;JNMD'OJ*.RPP$ZK M*%! @ `E\\L"1 2O(#$#KZH*.- M,FB"H@3=>--)Q1=RP#2'%8:2PCDHI/!*"BB.&.(%3%]0RJH>J4..B!606.$I MY[(32XH<&%C2K26UO."!^>!ZX#P30*%$&YVS"LBCDA@JJDZ-F@X[!QI;\BVUC"T/ M`0_4M "!!SR@:SPQQUN+`0T(^S@PM@(+H.66'6.,/RC&B$W<;0G$LS-P,SLP M08@H%(W"T\:U<%!V1Q(HT=8:I2V./-H8XX5\+SBQ4A45UC0'**#P2JRFGA"B MQ"#>'&((L+Z"BM,781R2NBR2,-:Q^=*"2P+T'D OK<9*D*)O\!CPX $"ZE(3 ML607.Y.!EPDXD\UJ_D]H0P]$.:MSSI[UW+S.`_/_IH MHX\W:CHA:ZTSZ*W?'%3XNJFNPH8B*GYS.B&('!JVSM.A;"1^*"&--\%873T` M##VVWBNA# 8>P+@$*>_*((%D%6"V``\<"" N\/#+8.;)J25AB#98DI/.GGW6 MW$"?`(L,:UV-!E98K>=S+P MG;YI0$Q&+ `.:_:8[^Q'!&\:0P'EIR=M(21<0/L6H-+%O]2(9G1>Q.)KV)4Z MES0J#W4H0Q[*,(;T-% W<-07U\"VN]X1`4`L@,,07PBP(R@ #ON5,#&R-,F0)#%WR: MB4U)) $#7H S.74K:'1JY?S.I<71F>Z*#2W4_A (VKGR%5'ET9KY.8(0A[,@Y'X25((FWE*(DP8:C7)(#Y&(>$VA M!A?((UUVT]/O8 `%4**9LNCR.'P^A@$G>-P-U20M!$A.9&WBCV0H]#.#SFF5 MFU/E9PY5$Z(-X=M"?$51_Y$KSA7HKW+/& M>4-?3!T@C+NAV<2!#5E@\:5+1E>[$HLY. J"J7)4J1*<0'@O4&F@B6 $J0@! M*%-Y$:/!NR0+]*T`KT5?NZ^'`!1D+0/;QK(*U.0`!Z2E61=(@7_=B0'Z*A;4 MB),64A ^( MRC =\G#1-H#8+\H-<7/MZH%H"H_;PMM:3G"4_J-'7[O1CP8*42)]W[5H:3X7 M.(!@[M)8&%Q "MXD# -"W8*\>&!O[I1!7@ZW7VFICS"*<^3C[GF7)DLN;Y-S MTXYFBSD&:4O7NP87@L3EX$#Y+\*V/)V$'YIW9<]F#WVP0Q\^+#MDM;RY;+0Y MSBW%FR#PIMMFPZ[:4L4<&TE%!U%Y3V/4XCVYR'LN)D# ":XG@V:EA066M0L# M9-#.%&# D_L<Z!>X4:ET<;*S:#,[.BJW2 M*A#J8._RH,,XS6QP!-N8X[!**)[$ MXP"(#%CR*3!8K[(6XP*D3F9DA@`PH *Z[KX(8 $"``#6Z>D"X/]RI0NAC "K MS"W < `"`,K.< `B)PRGZBYLT-N&0*6*``=.``> ``BD8 F P J,``B8X Z! MP D"L0^'``@*L0^!H __, ^7@ F*X!$A\1&9X N '>H )/K$'?, '<. 422 54Y&!2( _^NO)!@``H P`9#$+`: +_V]F["/6 M$,,"XF-]XD-)A)$`<-$,`T `LM 699$6U? 6E5$9F1$:NY 6J9$:H;$:DW$9 MES$,N;$;TY -"8 _(",R) ^[RA'2'H_%( _;L L'7N 4Z9#;4O&95)$5+< # M[K$56_$"[K$?^9$_@LP"!!(&JVH_'$-7A@P7K9$9HS$:S7 ALS$-DQ$7*;(B MBY$:8Q$`!* :.?(:.?(C0?(C8W$D&3(CL]$D1](,T3 ,UQ#*(F?A'(,M:,VU M9K(F[X+61(8$'$.JR OS,*\G(S HA=(GA9(`$!8##/7K#-.P&DT2(P$@( `` !.P`` ` end 5-Jun-1998 3:00:58-GMT,3448;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA01297 for ; Thu, 4 Jun 1998 21:00:56 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 21:57:35 EST From: furlos@rpi.edu (Steve Furlong) Reply-To: LitProg@SHSU.edu, furlos@rpi.edu Subject: Re: LitProg and GUIs Date: 5 Jun 1998 02:24:51 GMT Message-ID: <6l7ktj$onp$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l6j6i$8c5$1@murdoch.acc.Virginia.EDU>, Lee Wittenberg/home/faculty/leew wrote: >On Thu, 4 Jun 1998, Chun Yin Hsu wrote: <> >> I understand that this "reverse tangle" is a manual procedure as you >> described --- if so, it seems very tedious to maintain <> >> whenever it is modified by the GUI-builder. > >Yes, it's a manual process, but it's much easier to maintain <> >when it has subsidiary chunks that have been annotated with text >chunks than it is to maintain the gui using the automatic building >tool (at least, that's been my experience). If you just leave ><> a single chunk that doesn't reference any other chunks (i.e. >don't bother to "reverse tangle"), then the maintenance would be worse, >but the text chunks describing the code and well-thought-out chunk >names are what make LP such an excellent maintenance tool, to my way >of thinking. > >> Is there any "automated" approach to "reverse tangle" <>? > >I don't know of any. And, since the chunk names need to describe what >the code itself is doing, and short of artificial intelligence, no >automated tool can do that, I suspect there aren't any. I whipped up something along these lines a few years ago. You have to manually untangle the file the first time, but then the utility is able to merge in changes produced by the environment, and indicate where human decisions are needed. Good news #1 is, it worked fairly well for code generated by Visual Basic 3 and Visual C++ (probably 1.5). Bad news #1 is, I wrote it for CLiP, which is used occasionally by me and never by anyone else, so far as I can tell. Bad news #2, it was definitely at the "proof of concept" stage and not ready for release even to hobbyists. Bad news #3, I lost the code. Good news #2, it was an AWK script and should be pretty easy to replicate if I ever find a few hours. (Says the man who has spent a good hour today farting around on the internet. Such is life.) >On the other hand, it *would* be possible to write a program that >takes another program and automatically replaces blocks of code >nested inside other chunks of code (as in loops and conditionals) with >default chunk names, which could then be massaged by a human into some >kind of understandable shape. For example, the C code Agreed. That was going to be my next step. >Not pretty, but it can be done automatically, and it is a place to >start. Someone has to write the tool, of course. Would you care to >volunteer? :-) It's on my list. A wise man would not take any great comfort from that assurance. Regards, and with a reminder that the road to Hell is paved with good intentions, Steve Furlong 5-Jun-1998 3:48:12-GMT,28835;000000000000 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA02093 for ; Thu, 4 Jun 1998 21:48:10 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 04 Jun 1998 22:35:21 EST Reply-To: LitProg@SHSU.edu, "Adeliae" From: "Adeliae" Subject: help Date: Thu, 4 Jun 1998 20:20:02 -0700 Message-ID: To: LitProg@SHSU.edu Hello, I am trying to put together a snapshot of our world as it is at the door of the 21st century. I would like you to be a part of this compilation because we all are what the 21st century will be made of. There is a form available to everybody at Http://www.geocities.com/Paris/Parc/4665/sendand.htm where you can send anything (art, text, poems, sounds, photos,anything...). If you decide to help me, I will send you, by email, the address of this "Portrait of the world at the door of the 21st century" as soon as it is published. Thank You for sharing, adeliae Http://www.geocities.com/Paris/Parc/4665/english.htm Eudyptes-crestatus@usa.net begin 666 adelie001.gif M1TE&.#EA#0)W`><```````@($! ``! (`! 8*1@0&!@ARDQ6BDQRE"A"E"C"EKE"E[K3$I,3$Q0C%"6C%" M:S%">S%CA#%KA#%SE#DY2CEKE$(A*4(I*4(Q,4(Q0D)"0D)"4D)"6D)26D)2 M:T):V-*8V-: M8V-:VMS>VMSA&M[E',Q,7-26GM" M0GM*2GMC:WM[G'N,I81".8Q*0HQ26HQC6HQS:XQSY2$C)24E)2Z6$ MC*6MM:6]O:6]SJV4E*V MW5[A'G5KL>#OO%^__E<&OY)Q]=28D!6!* $K+$&%<%12428_"QYMID9@4U M5$I4#:7??@44@&(`*J;(GU10D?;14#222&-C4!4P0(LLMDA BC\2@,"00RI@ M`0,67'!!DDLRH `"3R+P8XI4]M@CE55BJ>656[K8HI9>@BEFB@A@:<&09UI@ M9)H(J)FF`D:VR::;23+I@05W>J!GGGKB>8$'?^[I00DF8&#"H8BB@*@)BI[@ M* I!O#!$#D3D8.D++Z#@Z*$E"*KDG4BZV2:4HYYIY)-+?AIH"248BN@)_BB@ M,"D10Q!A:PZ37BK$"X?J>0&<9Q(I[+#$EEDLF6,F*V:9R!; K)EYXIGDG4JF MNJ0%=:;J)[5*2MLGMG=Z&^B>>'I PJ"L>G""">NRZZZC04#Z@J7T3OH"$9$& ML6D)YY*K+;:G!CMGFT8RP"V@&'1ZJ*&QGD"OK1#?6BFFBOJJ)JE#.FMLLQMK MO/&/1#JK[)C/@MFQF=F&J^VU_[*,[;3>FEMNGWF2X*>W,^_9*J&'MMLSH[!& M.NG0M.KZ@K[L\BLHM4AFG&RI3([K0:'OQBH$I1$G82L2N.:0J0E[KIEQ`L82 MJ_'9"11 =L@;ESSRV\E:2RVWUB9IY,HP_\GD_K0T@PLSH#;_*;6>G0Z:<*_K MKALOO5A#7&NE]O*Z+Z ,/"N EU-2N2.0&A_YY^&+PCHOKD1H77K$7K^PKJ_ MIATR"&B+/&3:(+@^]MDGPZT[E00H8'.V).!])+;79INJS8#NB;P%R\NL) D* MT'Q!OX-67[B>8+LK+^FUFHZ$K9->G6F[3I8\%)4"*(#^^2E>KF6;%QB*0>*0 M6OIX$DE\;SH15VL*]K4(6!L"0/ CV\%.9 4@X.P6.#O9Z2YS#TP1\9XW06[5 M*52A.AX#JN6\/P5/;\%+$@D8$#A?D0`#YB)<]72F+D+!"E9#>,'5M*8_\%4J M!XHR`=E2M*/-Z6@`_LQ27P&$B*64;&Y'/8K>ST3W,*WACX83DQSETG0V`L*. M61DCH-J&M<4!J@V!NPNC!*='PKQEJTYVHQ:3D$?&X#DO3]4*7@D].+WIH? $ M*M33"?>4.'T)@5:V>N+INB(LFV-D@*2UG,@F 11Q8JX@5.;]U" M$@"!9["\R>R7R!NAG4CPP1.>"X^LPN/2"%>"Q'EM5DC(7Q((^:LPH<]9:>-8 MVG:T2@9LT6-$9-:5+@"T(&P2:TXTG=?\!RA10?**4D)@V8@$.U2R# MY47<>3$!L%M;[1) MB>A$I5?Q-(!FP4R, &H??LL@ C76*? ";-;+E-H'3\% M3)AAP*K!.P$)'$76=ZTNA:+4$_W,>2\49)-D&A.2D KP`">=C:Y29< #C 4H M!Q3I`2;3W$A-X+5-UG!_.=#7ZI;T)(]Y48O9+.5*T92 1QJIL@H`Z@[?YC9^ M>A:J_7R95E>FRU0A:4U-,I?!S(4\<]S_JBZWG71Q#D*A>?*[:#H9P(' M5*ZSSB+ YCFG@-Z1:4IU91M@\:J RCF `-XD$I(6<('R8=-\ M.J*2!S2)W>P6S6N+->0K;?=%M@V0E9X;7H?+F['.`E=+[KME MM18)2ZM:AKH19]6:WEB;":OZ[2H(\4+:":ZGS$Z]578@:VR9$+G9"P#VI-Y, MKK,R\%M#2C4#"(@N_JG25M>TR?*E%D!!"@"IW1MR%U"D+&4"10;/!4Y0`1WN M;KZ4G7%O3S0684@"$:ZP#*/JW4S*6`C! M)N5VH,)%8H $"H !!FB@`![ @)K55^A*PM1AGJS4=L'6W39YS($=HQV<_JH] M[B1O,$ZNP]*SL@U:;LOI=[R$XP?IJ%78QE9F_66>6D]PM,>=[GNWPF'2/%#J M+ZYGB\=&L"2[74F ?A+MCF[C6?8SM-C2Y?*LJBK!N1V_.<^3""[-O&/" MJW%/E*:M=G4H,V_.6%>*)WNS.0&-@;E%1%=!P\MTTA15C@$H4( $`'V :CYI M`D2'@$G3NVL)/@N(#M/X#=?)J3^9+9OP=!;LW)2 MW>X6G%7;^Y0/O9E MR">>0PUFQV("[MO2>AX;2YC"9M8OD/B+0N)K_A6O"P0<3"SBIJ)9Y+Z0%<"M M"F 1D9[$@,H](,M0$BF@-8 !(6WP`4=Z0#49('$>HBESW(0"&D7_1(\/-[R>-VY<535+)4[N54475&@'=+OI)D&.!W=!-;P11X),!D M03 K3Q0%4J!]3S0I"1!^%X@`!E!\=!.5=S4Z5'R21#0Y _4I $4@`%*Q@% M44 $*G!E6+(Y.L%M_ECR9=X$)W<5/150`#N(`!@`6&A6`"K0?K]RA$-"<$_W M)"O@) TV<$ZB`1;0;4X3;!:0`E=36%]C`EDX8\S6A6329VJ"7GXG@:!(@ -"BD8J5H-N)E:VA";7ZW04=R6ER42+J#2 *02X/'`"(`?<\3 M<2ED9(#C1LL(/3*#;L3$*IA".MDG!=*X@MLH6';'3SN"2)D#)0B4`9X7_HPM MT )D!H22&%V0F$D)X $;((ED-@%V18TSUG!Q5P`9X &0.$1$93(I@"F9$B^U MMR2O-$]=E$!"`B5YEV0CI"1(XB1J0GSL=8&)!G;=UE#)%RAHN4<1MT=L^88> MQ%]VV$Q'@WU\J()2H$.(2)::,U<`V&!%"$2D\B0:H'X1IX1AUGY0-W#!:(XH MX%<14#D*P % B(D;D#;Q4V;$18Y2%2N0XB[_DU["UV&;B `=`(1I_K.$3^)6P8@"C]EA9!8EW@28 MP88`0#0UF](N'>=QJ12+:S<[:F*0OP=WIY(Q+8E 2W5 B"8`(' Y>M1=P^-H MTS(]>_)5#]5"$!6@N=5?YY),;*4_T4@$X00D+:5HURA.FW-T5-(`4])A/MB2 M3X(!;D5F0A(_&W!K3[)7;3(#"*"#3M)^F(AKOY5AH)F<8R4$B-*!`MEB+=9G M4B4G&R1,3?,DP;)G<(-H6I(XL#F@-)<\?#1;`.8H@Z*1@V>'CB(I]S--+W@^ M4Y(`ZG.(8-[,(0,(GCF:.>JG;RLYED,$)Y639<[R MF ,'DQ[0`7[5`=M9?]38@PR0`2@`>NW7=9CH`:L*A&8VA)!85\*6(B30*QRG M)*]T5UNH9T&%=6YR6CS5FBEB@<87KHCD/^MB8-#S.\0TFP9Z0BY46P*V+V\( M+N;23#^ *;0R826#`"C1(NYCB"W"C2*CC9_G+("F:LE5/L6Z:S#980G[(YX3 M787$`A?@`-:I`0_0"69[]:<=UCO>)XGV!X2TQJ$_A #4 MDTM'>D I%SN2-4]%PB9)M:]B])]%E#KL)*!H)#>$8U:1(D.8`I53ID=M6(*A MJF#(.98OQ2+]&K!4\E8(``%7&4!A-D0M<*(;4#D7@ )O"H0;< &KNH/Q@P%O M.JL9T&&^%6%B]V]U5:$\!$3E(CC8,BHHFW9*M6>T(SO%\IZ:"28O*ZL%<"M? MDV)7!7@&:ENH6C_W8BG].'3)(T?H@I<$, !G_O)#_'0Y4_*O[<,^4%52^48F M"W"B)"55"I"U&?!PEFMA/@F9>K68+WH!&8!F$C"&#) "['=<45>KL2M5'?AC M7"2N;5.W`\Q%JQF6"+P[E;(K6/@M9\E5H:HZGK8K,=0PK@B'@D,XWA2S\J03 M5W(Y*WD^[I,Y#:97G6>P:)8!OCJ$%] !4E6QZ6>4" *NR:C376<]25,<7*]!X2R;:-V6L1LK^- R&*!S"*N2HHEC*,Z]-9=PH1? M%P!1/,N\1(,ON[(IM4E,>H*TP88^#KFTWOLEVHLE]L>B5\8B'L !4#=ZD'@" M'S"9'N!775>L#M !_@S `0WWIPC0`IP7`9 XB4X2`%MK+-O+35$C;N:73TCJ M-KN+17O&A1^'R?J$);.G*:,*.&O"/-%#.'WT,/>RBD=CQ1B0`C/P6_37PY53K!=P MT Z7`,E\OBAPHA(`HA>P<+=&,#8))V4K>>PCFW6"=B&'I.X%SD^9T\_.(D+= M%3",VE.&FG(I5T]S=4 FC6U.'$9-&6I!P"E"NU6?\E#K(BDO`'2HDP/(!KWU M&*VNJ1,A_+U+ZR+&&,.$0`N#DB<$+5XH#7:Y5A"==(%\7NM3%OF]*;!;SNF_O9;Q/DC1N0LCR9H[GBD*7W$ M%9C):7VR*]VHG&,[);.?6+*>C%+/!\JIJH);4@HI/G<$$7,UDS-=*2G=/G2( MB6U$.M9#L0R)[0>F=>6K0[0")W")&"MK+(O')Z4D&, "P9@!*0#>,,EP&,!( MIDNG,[XGOIY MTFG75,PFUV_[17/'=J5T3[7S*M2:U_X51^/B0OV(*YS&??PS/@?8O2Z'B#IA MU*#UZF>L94*)%T1+&.YAQ_=WYUN[JF *=0AP`([\+$..:U_3*-7Z*YO5,9K,+(5V_DI1 MVRR1I4"TPTCO1&B/)&B",K(8@"?5[D;/LU5Z1#^K. 0\/\^QX@'T[;3EYXLZ M]MQ&+=U!7B4!5R1%(K]^U0+1E;HH\ $?`'J-J0`I$ /F*+J0.K].LL-TF@`8 M``&9%8P;M+'(OE*]\^,J:0$GL"0\US"-TH%G(LYMS5ZT+<[,!E1JDWNVPV)K M_7Y(NQ&JM%3=1N3%0,@/%0JV(F MD+H3X "]MP`#]P%UI0(J4-%$&4"3"*:7N%=/@L.B=]H;1#89`*8(2R4G@ 1# MHHJ8`BO!?5Y'"D'D[$#\#2;9!/BZJT@!9(L>_@B&6IYD,%],=:3%N\5S^C@T M%!,$?@5:TIUC_7ST1*_&1A]B2AIG=.K+H'<`.Y@V*I "'$#L[/>I%!!@O>/!I`H-IJ(*)XE0JE(1@J$Z;%O7@H<0)[E99:ST1Q,1N MLF?-ABU?EFS:MF#%KA6+'B%M`@H<=$3PH `!!@DBKY@!`P4@Z PH#BS3P+$+ M-E@P+P\T8" #O#K+P+\':%(L`\OJFR^L,>PP#;6'AL@*A:EZ\B !XD;JS3:1 M.L+0II-V*ZE&%F'$326:BH/.IXI0V&DZ$J#+2"CF+J@.)Z=,&Y($[:BB*@B* M3+1(I+78*F" L>(J*[XNL52+K;BR#*M,CC;JKX#->$J@(, NF(BRO##0_L@! M!PS2R0$,)&! @SR"2BC?)PH!].05.K6(7%EKE7K6FU2J8:FJBAE MBTKP\MGSUO-2VK+8D[9E]\R_N@O@9P+4D ##S*HJ\*[_-M( M0\ 8@ ##R"+@*# T"\JW@#*&3 &!%Z20-+47+#6N+QP];9,X!9AB.R<+"!() M)19IJXDE%77BR2**LBJ28XP\@,[(5H/B52@1-C:YA.VF,N$'BW PX8("`E#6 MYI:U9/9RS*$][^7].(6[/J(3N(\NR?K++U?+.,A(0, RT RO"/W#.B_4?QZ0 MZ8VR'&W7#!! `8HDPGXAAXI^!6Q%##%\F\BVV3;-IMQ@JFG'4FG:"6,4($+\ M;R>?"]FT)9?LVTDG@V44T)_8-3 MA!SPK3U9`&F2:8"\_DA"$P4TIH$ZD0RATA68_%BI`#APD@4*$(3A/20KE5+. M3NA"'! `!6\[00YRE+-"XV0D>@BAT4M40C$B)6P]R'KE$[7D%LY),7YFVHW0=H28O&BH0@U\# (*_B.9 M;5V !1@H'9I>9YF"#.1;O@QFU'J&$!(0P0,(.4'8Q&:B1;Y)D'EARJ^4D[*) M<(=*RNDF1DQSJ(_$:(1RS!M5(B(II1R'DZ3,(."0U*2A3[[50$*A#B'9 M&8D%+JF5%!SO4F\*IR)+`*N9L@BS.4"Z#,DO-4 MJB>)0M!5/K96)C,E=P0:GO @$;'FV9S-IFA6^-7/H;^=XI@6*)OZV(5I_2&L MA@J&NY'T4B &U!#V[%40Q0!V7G0:H$Y^1T%675--QP,D%. ML8)9B*2F*JV9:49,2-1;72R]IR4"V$J95:=&Q;]9-9\0,1!;V:9,/.E+XB+? M8I[W29%^OHWBS+KDU3(E"R8Y85?/H.-%MCXF48KIZ[9^-Y*UT:XD)"54J[)' MJ(WL9E/=_>#83,1(_K9EYZ;I38%E(Q(1F$[*@SV]2 N?USK*9@PB4LCORH(5 M+(*RMH>JC964PL.X']26H!U)3_PF/$4!C/6A9]%RF ?@98^,&20+3-&ZI&:[ M8O+$7B(I&(D]8+N[-! #$!")7DCR&GA2$$U9PTD*-HM.P4(VA0WQ24[9.RDD M^U@U4E8.\H;\JU=1!(=)E4+ZL*JX_^+SJ;*MRE:J8H(7J"S!%FABA&_I,E>J M>CU=_M))0! "&SBIQ%JE38N1^R8[688C3!MI!![V`,"86)@>1MHD&3 ")Q7Z MBZUD%0@5^3Q7J3!6+VCO0R35:&UBEB(^_=4)>))"2M^W*DC-KQ2D\()2_@=! MMD@TGU.=FAV &G@U5JG*E*O,:2PC=):]92C,7.U@D'0!#GF@`Q_H0(<^Y($/ M8@!"$!BYP!%FY&=/H\F;%1-,@G#<30(:"9TV@F' >& $/7#J`*>;-818P+$M MM!T*4V@B]:);!E% LKKW^) 5:+:GQSO>"BU"%6PG-5+JED(.O.-N\51UM4A< M\E2L,H0A0$2S[OXV5D>0J"@2/#U/%"M7S;,6$(PY!'J@0QC4T(8PA $,8%B# MP_=P!*>ZK29RY.Y&..2;?%4-I=FRU[SLA1?$9&0$/.C!"+I)$Y;#II,6ER_) M'$1O[9%HGGL<7N8CE002#6'0WZ;2CRJ+[G0G_D'=6!F"93D;K%+N%^JF/8%F M4<_N%TBIREB=SH*;:+\QJZ<\8 KSA(% !SA @0QYT(,=[. '.X#A#7SX0QZP M@)&>,="+;=J=]#35XF)GQ$YM'.F.6KPV#_# "CX@@7)2)))6%L XX,R5R(1B M1D2G]P28O63F=1X%/7:[1#E(+]8H)YK3J:S8-K Q/74C@JI+/2% `PO,[#-RD[`(@SAP`1B `2PH M@Q4$@SSX`S[P`R#P@(?I&7:Q"S1!';HHB+R8J[J(D)"JJ N@B_);@B7L`2%( MD;IH/R71B&T9H9I"_A'&R1AT&QX9&!Z=Z\* P3]!^S_PRC;32S=UPP(I0 (B M. *(L H3P $G*R)0D[*IP[_:8XT#8Y8:> ,C@(,R MF $3<( 1P(@,T($LL ,Q@#Y T(/QH"L@E!>#Z0ODLIL&PHS^*+8S83.2\( > M6((J6((>2+PIC$*@H$)8U BCH#QS8Z\DT($H( )=1$"PR;D=^Z#4`,9%RSE? M1#HL")O4TPJ+,)^G(R=\6R^M\#P2J3V*N+UC`<0(BZ*V^#RF8*"!;/*NM*H;N@"*F+,QY("2'*C(B%@!).B@G#.] M;3,ZD@081N-(G#O)-$1 2#\@#,8@#5F&_LD.($+@`(G#*_C\`!,IL/VC+F92@';M@F#0Z MD]CL"\%H`BN8@MU<@AW8@1 `@B/PKF2I&Z! #+Q[R^2X+W9#JA4(FYS+K_S2 M`;_<2^@\R>M,0RS(@BA @C:<3 "C*BR\BJRP/)O4L>*Y"G83@B&@3/=(#]X3 M"R][3SZ4GY9K( \@RC=XC),P"Y?(#BF@03]@S?:SRI'(%W=B2Z#AI8QKHS,Q M12HP@]VL@BE0@AV@`1'@P/-8B;G@HL&QG>1$KXF@R*S 2+]40+#A0FT[.H[, M2V.\3I24`CU:P%([HN^!NNX@0V%$SYFT26G,`0U B ``/C_<$OJJ)M/"@6\0`<\ ,H M*(,1.(DS"P$+P- ^\ ,_" )H^QS1"(V9(*Y?HZL6$[_K8XF@N ,\0 ,MT((= MN($02$HV3=41^(F[@T4/M8SLZ"<50J\\7;22+,9>;-%!A5'!U$ZP(0*LF(JL MHJH3R,.*'$DBB%0>[3S,JCJ8LJ!44Z@JHJ)!Q*()$PT2``,RB((R4(DS_ON( M5$4"&]R#)VU-_)!5:/,K@A"=M=&KNF )#PB"A+N#+0A6$ `![^K73A(W!6++ MMBPO>[)3YU5&2 M.3F.#UV4A00^(`CA(1#B(@S(X.(?S`RQ(%"T="1/ `@"T"!6QR@8EB/$C M,8X`))PP`37 @[/%`SEP`RT0@1'@6I$H)7&=,T%JRU9I()%IBG'KB9L24UXDG-;UR00'A:.E+K4"HA@P)]=PQP(#?CX MP+)RW\RU7'J5WRE%_MT\R ,R"(,XP(,^X(,\8%U8!0X'\"F+L!-,J9XMVD$> MW)81>((X.-M>G> S2#Q6::7LL*,7* &U^6#K8("ER(OYLR> 8ARY)#U,\UMU M8V$81H+0[30%+2H'V@LXN'-3LM-XLB-E#S@*) MR#JK,@%IC!0DL%[ U<6 N4 &E)0CZ#=1YC('`[YHL1GXL3"D+0`J=5IA_D9: M@=5:EJBI9VW$EKB;VV0)BS&!-)@#-=;E.7 #QT'"##/%.)9CNDV>CH47Z2@W MY]T;_$OA!/33048ZP,QF[<5F[1Q@JS G4$-/X=E)(W8H M;GQ73JTP/U24>>[#G)[G+J7'( 2@I+" $HJ>'6EE7BF!*U"#.7#J-#Y;.9 # M*GB!)[R;AXQCSU.G@K$`,Y(.9;[;NZT(QA'#Z*W6:H91PCUD&48RI(I)UM L M\65AF&WAE]I9()X4%%"6;5PHHUV/;FR?^;R9:4':N)CGWI@/!MJ?,19"1C1, M`WK:D#FY)A!+*N""+N "-Y@#J=YL+SB"R(&,_F+#"7&U0*V&R,VP#*%PD-1N M9ON;B(I<@:2*"+RT7BS .;I>:VS6[4E9SQRHNDL[`KOLZ!C=3NT5S/Y;0$I) M[HW4)KX<`LP#7$.-@N)^<$%NM!&A\!S@.IV.L&8YXE:#W^M&4F49D^SN#3KJ MD/YQ`!O3FQ-'DDXB;QXPRQV04"Y `ZEV`S5X@LCY)HL;"G;SO#4\BLV8VW"" MHT.CBN7T8Y(]NNI]_E&U+F[MU&W %1[-RSS^:W""YC*/6*% MNDQ![&N:9M_XY1+U!> ;T:O;Z$KC4*2+\);(,3D2:-,:N($:,$LEF *#Y((T M^((K$(+ NT\448H7@"DD0 (H> '+Z!6FN&,K'#<^MD7\0[*;"V27C5F1UFTR M.%0)CU'^8]QK=7"8=?('9^$.2G B:%?@PMR#*M*O[\?LWJ/]46KPS[LT(@A#L60G G(C)@,1/H1!V".$8#X&SAV MQ%O");B"(I@.Q2@M/-6*[4 "0Z=RXQGAU*:SI>#OGJ@D/#VMN@080$W 0HU9 MDLX"3I_YD3;4F_]TP+3R""=UW2;I2!X>X8F4?O-)AM)PYQY:LA,X# ]XTJR< MIV_=`E4K=G$;\[JO;TX!H&*2.&3%KD?%(%@DNO@62U+)BK# -82"*$C[^P:E MI5@*.IF_G^+C#,LA[W;YYNNYT",_[*!@#G\=YP(1D%WL9 MFF&HZ"X++\.2F)%U;BQLA<)N7/^-K8W3@?:K_DNAC,;J+'8Q#6:[@1\H@B"0 M>$=LY=/X`2=X`BBX`N]X@15(^QB%@A6 CM.NT\@@`3I!-&=FSCUMW,#<7B>O M>4XO@S(@`YKW^9AU=W=W\+PW?KKV: A)0@\0`1_X@28P@B*X`4=DDB!P`C4`@R\H`D,'B"%( MD$218A#*"08D&%Q8>($AB0L/,6#P4!&#"10F7J!(D>-C$B)$DD@A65 *EBQ2 MLK#,0B9+&9@P8[Y\V9)EE"PY5Z9,R7+,S9L[5>K,4*# @*,"D"8=(& `5*A, M"RQ=ZE2JU*=,FV)%_NJ5JM>D1\<>%3N6P%@$!1(4((" 0 ($"!182* ``0.& M"O9FS%C1@X7 %CQX$#&B"!0H3XS@*#%B!) K:N:DN3+DQ64D4*2,X8Q0(<.& M"C$H]-#P(D8,)U"L_BAR9!*3!E'R9)E2S,PR9$$"QA87.$$$SUPD<84G$ M``:G74#8"1AI]()'.1"Q0FQ$&'02%BOEY%)NO>GFFTR_C0'4<$%A<5P;_L%% M<9P4$)3UE55/64=54@)T5R188EUU'5+A13>>6>2!=5YY:"A1Y MD-$))J1@`@X^W$""#R:40-@()SP1!19?0-$$%0C.H883EPTA$&=2L,$2%!$Y M)"@#II%VP47SH;#H"SFD@(2(241!TFP]L2B3;C/QU@9OO.W6$E TYN33CBS5 M=.EQ60"E@U+933G>=@+(2B22574WE9)133>=E%^1IU:5:"&07ET67&"7!:%] MB0)ACN90GPE%./%#$4:\8,(().#0Q)M?7/&$'&O@ZQ(AQQE/%&%E"4L%"\&V:(**(6 M8901OCFL,!(4E!J4XDU8[!8P;S M[*G:!U_*(G"?TH2I2U@X(#)9%WA"#FF8X5\=ALG11PW&)NELQ2VWL&YQ MRUU\V@ZWA 6-< =<_K#:F1H5)5A"RAJEWG\?J2NN298%`I,AAXR>RO!%3A'0 M)NQ.Q NQ%;29$"(2,00103@!Q1542,&$8E ,_008U `&)"@-,YO)`ASJ$ <% MYJ@$+\/ 0MS5$(N0@"+JVP@*7&.YX*5H>'0[VZ>25Q.YP2UA!@NA303F*2G@ M36,#.)*0!.<4K33)5R]LRI%N-97O4&]\) .67.B2@,AYH 2J"9/\"D*$2;E/ M"IMY7_^\]04G7.$*.AE#%*! P#WIZ06:&0,9X&"'/M@!=ED8P@ELYRX26*10 M%C%BF% `HMZ-Q$3]0@ES?)*I%T7/)7$CWMD4!C _"BPWOP&A%- B'HK-_FHZ M1KJ8X*J2%:X4"8=A#X/1VEKR*6T2TE.>XJ,"R"-)IFAGAED!G/=X!24H=4R=OU+< M>8;U'I==#5&K.8&(D)"$-TGA"034#$?6A *)6 `!@@%,8$B RUOF\@6ZA (8 MZY"'/>S!#WN 0QLB)$&'F"9K]5)-UV C-CPRAR7/"T[": *<')UMA($\E?': M@-$X9$%B>;,A=AS)E>U9DG#@^Q$/C_)3H!K._BWR7!E[DG6A^> ,GR)RZ!.& M($HDQ"Q,;,Q0EA@@EZ,4E 3_S.40@# $'.P)HF+<0Q_(F(?8D>$%5Q7-6RFR MM=6$4B3\*DA*_I5"0BX'I:?*5(Q,JK#G@; ,L2N#`PX7*ZD@Y5:-!(_&, D^ M'19@J#SLH>&NI*6Y>" !%2(B^M3G5"@0P5% B$(.PG0"*'C@! 1E0+("8U"# M>E$@6QSKGLCZ(#U4M ]^2"OL'X7OA060L'*BD*DCV,<"0KUA)N,91,?UMV47 M0 %#,* "]*4/9RA84Q%+P!%#68 $!H7ME42 `RTF!@H"P<$6!P*%-NC!#X ` MQ!]^ZX<_].$-9!A#@!%57 :K!B.K08%4(\4O&?N$;<4K`]ER(FE+]153P-&N M3)Q7V-C)X#EJ04O&""?#=4XE! Q `AQX&PB8!*(D62@H9GM5T"LI@'$&_H5/ MO%S+X#5E) ,ER( )//!E^6PH3!)Q;5X"`UL+B. $3FPS%+PPD&DGY@UUR',@ M_G!G/OO!#W6 ': C1"<9FQ=$Z;0FH+EKFYZ M7(:,FD=*(ZM5=&XU'02(`-44M4,<$O[=.!"!P283#Q A/N6[H$>I\*E(UHX= M[-8&F]#SPKC+8LL`$2AD"&FM`QO8`%%HI]S:']8V( )Q9SS_E@YQ>(D1L5;! MUGI(Q?EZ+DK(UNCGW7$VHTIRC6!PB$ZVP>A?B6K+Y _B')*+X7]KA'`1;)_GB&[MFA>7%@0U-K[;P>4CO8 M5I ,?_@[GO]0!V .'I@?CKG,90X(.^^Y#WR@@Q[:$*@32TY]S)3?2()G&VD6 M=FS,D704.G/%DGHPT]*L]\++,%Y-'L4M_K9A9!Q#1*+8%#V:UQ38B?H%79VH2#FU MN>ZI>!##Y 8,)( B!4!;5(G)E,S(7%):E)D4^-8><)U%^8$=3)1%V0$=$(%6 M/5QE#0"P: E_&51<_E@9>UB?U1B+U6S(&KV=:]438"R$!4#0"< !XL5<^ F" M#H(?^>5@S,T<^F6;'_ !']2!'Y2!%'1([GA(:V!>YC%:2>V1;A0$_QE$%1+% MBH0>*EF*C00%(&548B'@6K0%6C#.XMR4>#B9DY$,"4A!G>T!!E9@'TR4!*Z: M%)B9\$E<`1Q?)R& \EF?L1 &1&1-S'#(VU40@\V@N.6%H)Q %OQ=#^Y@#N9@ M^=V@S/W=WW6;!=;!&)# SG4(F(22B$@!T,D8-WU3&42!*IZ$B\$)%!:'I&W> MC52:"<$$>"46XI",RKA%>J1AR8S L?2A7)R M=D!12V>G2'C;UW@!.Y!_AEX M`)9LU1XV#EW0A>-Z MB!3@8@*285MH"#W-:5%`1-"?$ERR5\2Y(!5KAN,"8SEB%17ZI\J>J6\42%8^M]P(&0U MP00,B,?BE.%YV,5P %"E)O/O0;]CJ5 GI(JJD0LQN+F*0P9)%+K M&6 O#LM;<-):W,6Q_KSE!9@`A3R$!YCY@& M;-UDA7P<9F8$F/V%?+B6WF7 !2 !.L:GD:;C?,XG4EXB,DI4=H;)YK3&S(B$ M#$!3'EU3[-R2@O[.$N6?0.(5Z*6(*^8$%$3:;M*8;; %<1*GK4WDL2@`>KXI M76" D+[?"<2!S*DH=08FS6FB;UU@'$A!"7@G(':G0F"9?&"<>?*<"=2INXS& MH #E"WR=D:XCDK9C:")>)?X@X'E8'O0!&JE&1HBBY3SH_PU,'-"/2# 1$_U. M5P)/V&215SJH;;*B3@Q/!A" (B7 `W 27-0%7-0:?#5J7&A5:'0)CX[!_ITI MGI[.W.'-8[E:$7]01S0`1I9'EVY!BER4(&BXIXXESY%@8.XS^^$ M1$D@ZY&.7V>NJU$.9;91 MXO;,).RC-QJ<(" M#W3IIDKE_F+BN\+NN>G60. M=-2@9",C#B*'.*Z(N Z>JBM]AN8.0F+Y^>QH>M\?J"\.RBO[_IUOY0$=L $2 MW,L^"FBE_%]NV-; LAGL8NTJQFZ)U-%KU)' "JBD0!<61,Q;9%:O(H 48(@% MI,! H>?D;$@&O L+_L(,$M"!T/;@44)OT2K>#U9O%AQ!#N `&[71SD$.!3$N M2\1.45)N^;6O#J*C4 JESW:F?<)CS/$!R=H9'^S!&ZQ?%,01XU*E/I5BT G6 MU.J39L2NU0XL[+XN5R:P2#B7@JXJ;.AN%#A'`L*%>JP,K[*=D#8?HAR*D(*< MEV `&^ @T9:O#2>>)9(P$,N<021!XPI8@%45$+"$'T1B#U-N#V]?^+4O^^9P MT!9M(=MQS/U66KU!G^W!&?6%*'F$,S71NJ4$"+'N$S2L*#?LX[:NV+YNK,XF M%Q_P%EL.UI($"L1%`IJM7#" ?F7(!K>1`T'.&V,-HK1NNJ8K49JO4=XM_@F/ M\!%RYF%E`7S*9VA.;FF:G][N\ @C)0XFY;SR65KQP1&W013\\:*OLA:W+A%@0-JBA:Y2Y+L(J:-X0!1H%08\P QV MZV>Q(!+H@3-7:J5VID(W]#-+KOHJ\@@KU;T6SK_@MZWU:XK8M'D4]'OU& M@1%P#3ZAFXF8[MAP84RT[ILT+)RX=!8-L/[QW\,:;(G8+BO3 MQ1#M!<@Z/WT5CM @W\AUK M:LENVQ[0@5B_P1ODZS*5%EJ31"G"V! D1DRS_C,[8U%G2-JLEG)LA UMCH0. M^$X.,("NXG/KM<5Q-I_;->1@R !/^V%[M,=688CRVO)#>)8"V#+%#?1@C$$?3+9T?R:[ M$O,<%W(/"^4T\Z!%+_+=5G0.&W-2XAF'U1PIW;,2RKD[D6GBH'^Z%L"6 !_0U>V2 M!3P`\M7R#]5RF97 &PBSA%-WA=,QNSZR"*\O-6ON(B/E?=KQAGMXX($8'%Y4 M'IPSE(XN*R]:- V3$>C3:T,!&+19+-;V&C3/&$23Q"Y/*Y9$!@!U`CA >A!Z M>D!C7FA H;3+Y"PW3UO)K.1H@BYBT:@2:-G*FS6ZNB2ZL*C?\/8),1^T M@;T#Q65N#FLXB_R4KKH9!/W(V1.\R1,D`>L._!,!.\)HX9\7*!<6Q+$3@%\K M. $8N@*<@),KP NH@ +T]@.XEPQ(Q '(!=>+_J%<*%*W)]08Q($>R'%4L_R6 M3R+>TW$CB_H(*^D-([+-F]^8F[E^_@%%B;7D20C'Z2.MI]M("<&<*@B)460C_Q6 MS87)JV(=T/VF4[?>PWPU:[9%8W?WS>>[^VR'BR9U\!D[!/VATW---? JV)G- ^\S719DDV!9@&6K0=[4#Q#J,"B% H& MM+UGQ7)>>)8#,, #+'=FG4&0@0R]4= M_;#NXV=F%CAC3GC 8"(GSYX_@Q*5(O4(DJ96H1XA\B(IDJ]9MXZY*@4Y=2G7 ML6?1CF5K@L4(\K)58/>"@PL(+GC0T-=$V@R#`Q-(X-U[8ON$!S]V;($$_I0W M?33*[#*#(M*L0(E0,@VTC#82J#1!/DJMH9,N$@FBC@1BZ8\-`8&##SW:@*,- M,EXX8;?=4#@A1:!2("('HI(H[CBKHAHBAR!>" ()XZB3;JNMD'OJ*.RPP$ZK M*%! @ `E\\L"1 2O(#$#KZH*.- M,FB"H@3=>--)Q1=RP#2'%8:2PCDHI/!*"BB.&.(%3%]0RJH>J4..B!606.$I MY[(32XH<&%C2K26UO."!^>!ZX#P30*%$&YVS"LBCDA@JJDZ-F@X[!QI;\BVUC"T/ M`0_4M "!!SR@:SPQQUN+`0T(^S@PM@(+H.66'6.,/RC&B$W<;0G$LS-P,SLP M08@H%(W"T\:U<%!V1Q(HT=8:I2V./-H8XX5\+SBQ4A45UC0'**#P2JRFGA"B MQ"#>'&((L+Z"BM,781R2NBR2,-:Q^=*"2P+T'D OK<9*D*)O\!CPX $"ZE(3 ML607.Y.!EPDXD\UJ_D]H0P]$.:MSSI[UW+S.`_/_IH MHX\W:CHA:ZTSZ*W?'%3XNJFNPH8B*GYS.B&('!JVSM.A;"1^*"&--\%873T` M##VVWBNA# 8>P+@$*>_*((%D%6"V``\<"" N\/#+8.;)J25AB#98DI/.GGW6 MW$"?`(L,:UV-!E98K>=S+P MG;YI0$Q&+ `.:_:8[^Q'!&\:0P'EIR=M(21<0/L6H-+%O]2(9G1>Q.)KV)4Z MES0J#W4H0Q[*,(;T-% W<-07U\"VN]X1`4`L@,,07PBP(R@ #ON5,#&R-,F0)#%WR: MB4U)) $#7H S.74K:'1JY?S.I<71F>Z*#2W4_A (VKGR%5'ET9KY.8(0A[,@Y'X25((FWE*(DP8:C7)(#Y&(>$VA M!A?((UUVT]/O8 `%4**9LNCR.'P^A@$G>-P-U20M!$A.9&WBCV0H]#.#SFF5 MFU/E9PY5$Z(-X=M"?$51_Y$KSA7HKW+/& M>4-?3!T@C+NAV<2!#5E@\:5+1E>[$HLY. J"J7)4J1*<0'@O4&F@B6 $J0@! M*%-Y$:/!NR0+]*T`KT5?NZ^'`!1D+0/;QK(*U.0`!Z2E61=(@7_=B0'Z*A;4 MB),64A ^( MRC =\G#1-H#8+\H-<7/MZH%H"H_;PMM:3G"4_J-'7[O1CP8*42)]W[5H:3X7 M.(!@[M)8&%Q "MXD# -"W8*\>&!O[I1!7@ZW7VFICS"*<^3C[GF7)DLN;Y-S MTXYFBSD&:4O7NP87@L3EX$#Y+\*V/)V$'YIW9<]F#WVP0Q\^+#MDM;RY;+0Y MSBW%FR#PIMMFPZ[:4L4<&TE%!U%Y3V/4XCVYR'LN)D# ":XG@V:EA066M0L# M9-#.%&# D_L<Z!>X4:ET<;*S:#,[.BJW2 M*A#J8._RH,,XS6QP!-N8X[!**)[$ MXP"(#%CR*3!8K[(6XP*D3F9DA@`PH *Z[KX(8 $"``#6Z>D"X/]RI0NAC "K MS"W < `"`,K.< `B)PRGZBYLT-N&0*6*``=.``> ``BD8 F P J,``B8X Z! MP D"L0^'``@*L0^!H __, ^7@ F*X!$A\1&9X N '>H )/K$'?, '<. 422 54Y&!2( _^NO)!@``H P`9#$+`: +_V]F["/6 M$,,"XF-]XD-)A)$`<-$,`T `LM 699$6U? 6E5$9F1$:NY 6J9$:H;$:DW$9 MES$,N;$;TY -"8 _(",R) ^[RA'2'H_%( _;L L'7N 4Z9#;4O&95)$5+< # M[K$56_$"[K$?^9$_@LP"!!(&JVH_'$-7A@P7K9$9HS$:S7 ALS$-DQ$7*;(B MBY$:8Q$`!* :.?(:.?(C0?(C8W$D&3(CL]$D1](,T3 ,UQ#*(F?A'(,M:,VU M9K(F[X+61(8$'$.JR OS,*\G(S HA=(GA9(`$!8##/7K#-.P&DT2(P$@( `` !.P`` ` end 5-Jun-1998 12:11:47-GMT,6992;000000000000 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id GAA11194 for ; Fri, 5 Jun 1998 06:11:45 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 05 Jun 1998 07:05:47 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Another Sample Program Date: 3 Jun 1998 23:28:42 GMT Message-ID: <6l4m7a$bkc$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu I've just added a new sample program to my ftp site, if anyone wants to take a look in the directory: ftp://samson.kean.edu/pub/leew/samples.LP/ssem/ In honor of the upcoming 50th Anniversary on 21 June of the SSEM (aka the 'Baby' Manchester Mark I), the first working stored-program digital computer, the program is an SSEM simulator, written in Java using noweb. Many parts of this particular web are experimental, not the least of which is my use of a Pretzel grammar to prettyprint the code chunks (I know Norman will hate this :-). Anyway, I'd appreciate comments on the coding style, layout, as well as the prettyprinting, if anyone has the time. I have included a copy of the README file, which goes into a bit more detail, below. -- Lee ------------------------------------------------------------------------ Lee Wittenberg | Undue exertion of nearly any form leads Computer Science Department | to difficult consequences, and at any Kean University | rate is undignified. Union, NJ 07083 | | -- John P. Marquand leew@samson.kean.edu | "Thank You, Mr. Moto" (1936) ------------------------------------------------------------------------ Welcome to yet another simulator for the "Small Scale Experimental Machine" built at Manchester in 1948. This one is written as a literate program using Java. It uses the Java 1.1 API, and will not compile or run under 1.0. The archive is separated into binary and source distributions. The binary distribution contains the compiled .class files, and is available as ssem-x.y-binary.tar.gz or ssem-x.y-binary.zip, where x.y is the version number. The Java runtime system is not included. If you do not have it, you will need to get it from http://java.sun.com/. The source distribution, ssem-x.y-source.tar.gz or ssem-x.y-source.zip, contains the original .nw source (plus the .bib for the references), the generated .java file, and the woven (typeset) listing in both DVI and PostScript format. For the stout-of-heart who wish to work from first principles, tangling and weaving instructions are included as comments at the top of the .nw file. The text files in the .zip's are DOS text files: EOL is marked by CR/LF. The text files in the .tar.gz's are Unix text files: EOL is marked by LF only. Why Another Simulator? --------------------- This particular simulator was written for a variety of reasons: 1. To teach myself Java programming. I've found that, because of the simplicity of the SSEM (32 words of memory; 7 op codes), it's an excellent project to use for getting up to speed with a new language or programming environment (particularly those involving graphical user interfaces). 2. To develop a simulator as a literate program, which can explain the machine being simulated in detail as well as actually simulate it. I used an LP tool called "noweb", by Norman Ramsey. If you are interested in learning more about noweb or LP, take a look at the noweb home page: http://www.cs.virginia.edu/~nr/noweb For users who don't have access to noweb or Pretzel (see below), the "woven" source is provided in both DVI and PostScript format. 3. To experiment with Java code "prettyprinted" in the style of the Algol "publication languages". The woven code is typeset using a prettyprinter generated by Felix Gaertner's Pretzel system: http://www.iti.informatik.th-darmstadt.de/~gaertner/pretzel/ As with Algol, the typeset code puts keywords in bold, identifiers in italics, and uses standard mathematical symbols when appropriate (\gets for =, \lor for ||, \times for *, etc.). 4. To (finally) provide a single simulator that will run on multiple platforms (this is, after all, what Java is supposed to provide). Also, I hope to eventually refine this simulator to the point where it can be considered "definitive" in some real sense. Operation --------- Starting the program with the command line switch -demo (or -d), java ssem -demo preloads the store with the famous Kilburn factorization program. Display: The checkboxes to the left of each display tube control whether or not the contents of the tube are displayed. Initially, they are displayed. The simulator will run much faster when the displays are disabled. Input & Output: Eventually, I intend to provide a menu bar that will allow the user to save and reload the contents of the Williams tubes, among other possible features, but at present, the simulator must be operated as the original (except that the Kilburn factorization program can be preloaded with the -d(emo) switch). Bits can be entered into the S tube using the "typewriter" buttons and the staticisor switches S0-S4. The address of a word is set with the switches. Pressing a particular typewriter button, sets or erases the specified bit in the selected word, depending on the setting of the write/erase switch. All of this is in "backwards binary", with the least significant bit on the left. The KSC key clears the S tube. The KAC key clears the A tube. The KCC key clears both the A and C tubes. The KLC key clears the word specified by S0-S4. The KEC key clears everything. Execution: With the auto/manual switch in "manual" position, whatever instruction is set up in the staticisor switches S0-S4,S13-S15 will be executed when the KSP (Kc) key is pressed. With the auto/manual switch in "auto" position, make sure that all the staticisor switches S0-S15 are closed (on). Pressing the KSP key will single-step through the program in the store. With the auto/manual switch in "auto" position, setting the pre-pulse switch on will begin program execution at the point of the current program counter. Execution will continue until the pre-pulse switch is turned off or a stop instruction (op code 7) is executed. --------------------- Lee Wittenberg leew@samson.kean.edu 3 June 1998 5-Jun-1998 16:47:17-GMT,1866;000000000000 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id KAA17185 for ; Fri, 5 Jun 1998 10:47:16 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from mail.cs.tu-berlin.de by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 05 Jun 1998 11:41:44 EST Received: from labitzke.isdn.cs.tu-berlin.de (labitzke.isdn.cs.tu-berlin.de [130.149.221.149]) by mail.cs.tu-berlin.de (8.8.8/8.8.8) with ESMTP id SAA15132 for ; Fri, 5 Jun 1998 18:38:34 +0200 (MET DST) Received: from localhost (localhost [[UNIX: localhost]]) by labitzke.isdn.cs.tu-berlin.de (8.8.8/8.8.8) with SMTP id SAA00454 for ; Fri, 5 Jun 1998 18:38:25 +0200 (CEST) Date: Fri, 5 Jun 1998 18:38:21 +0200 (CEST) From: Bjoern Labitzke Reply-To: LitProg@SHSU.edu, hermit@cs.tu-berlin.de To: Literate Programming mailing list Subject: Articles missing! (was: Re: LitProg and GUIs) Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Help! On 5 Jun 1998, Steve Furlong wrote: > Subject: Re: LitProg and GUIs > > In article <6l6j6i$8c5$1@murdoch.acc.Virginia.EDU>, > Lee Wittenberg/home/faculty/leew wrote: > >On Thu, 4 Jun 1998, Chun Yin Hsu wrote: > <> I never got one of those two texts!? I am subscribed to LitProg@SHSU.edu. Anything wrong with that? Bye, Bjoern -- Bjoern Labitzke | E-Mail: hermit@cs.tu-berlin.de PGP-Key available | Use PGP! (Don't you use envelopes for your letters?) 5-Jun-1998 17:27:20-GMT,1455;000000000000 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id LAA18180 for ; Fri, 5 Jun 1998 11:27:19 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from tuck.cs.fit.edu by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 05 Jun 1998 12:23:05 EST Received: from cs.fit.edu (tsunami.cs.fit.edu [163.118.22.68]) by tuck.cs.fit.edu (8.8.5/8.8.5) with ESMTP id NAA17179 for ; Fri, 5 Jun 1998 13:22:55 -0400 (EDT) Message-ID: <3578288C.66F64407@cs.fit.edu> Date: Fri, 05 Jun 1998 13:19:08 -0400 From: "William D. Shoaff" Reply-To: LitProg@SHSU.edu, wds@tuck.cs.fit.edu MIME-Version: 1.0 To: LitProg@SHSU.edu Subject: noweb and tth References: <6jkl8r$kkp$1@murdoch.acc.Virginia.EDU> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Has anyone figured out how to use noweb and tth together? tth, it's small, simple, fast and does a good job with math in html, but it doesn't do noweb code at all, and noweb doesn't do math in html. Thanks -- William David Shoaff, Associate Professor and Chair, Computer Science Florida Institute of Technology 150 West University Boulevard Melbourne, Florida 32901 phone:1 407 674-8066, fax: 1 407 674-8192, http://cs.fit.edu/~wds 6-Jun-1998 1:42:00-GMT,1611;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id TAA29026 for ; Fri, 5 Jun 1998 19:42:00 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 05 Jun 1998 20:37:58 EST From: "Christopher W. Milner" Reply-To: LitProg@SHSU.edu, cwm2n@cs.virginia.edu Subject: Kaelin's prettyprinters Date: 6 Jun 1998 01:32:11 GMT Message-ID: <6la66r$l64$1@news.interlog.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu I am having a problem using Kaelin's prettyprinters (~noweb/contrib/kaelin). I tried to use the filters to prettyprint the documentation for the filters and ran into some problems. Here are the particular incantations: noweb -t pp.nw iconc inw.icn noweave -x -delay -filter inw -autodefs icon pp.nw > pp.tex latex pp.tex LaTeX responds with the following message: This is TeX, Version 3.1415 (C version 6.1) (pp.tex LaTeX2e <1996/06/01> ! Text line contains an invalid character. l.1 ...e`\_=8{}}\def\endcom{\endgroup}\catcode`^^K =3\newcommand{\LONGOPASSIG... ? I know from the documentation that the ASCII VT control character (^K) is used to bracket the \verb* environment. Is this what LateX is fussing about? Any fixes? Chris Milner Graduate Research Assistant Dept. of CS University of Virginia 6-Jun-1998 15:34:22-GMT,1058;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id JAA13360 for ; Sat, 6 Jun 1998 09:34:22 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sat, 06 Jun 1998 10:30:44 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: Another Sample Program Date: 4 Jun 1998 17:01:56 GMT Message-ID: <6l6ju4$8pp$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6l4m7a$bkc$1@murdoch.acc.Virginia.EDU>, Lee Wittenberg wrote: >I've just added a new sample program to my ftp site... > my use of a Pretzel grammar to prettyprint the code chunks (I >know Norman will hate this :-). I actually thought it was kind of cute. Don't forget the first LP tool I ever wrote was really a prettyprinter generator... N 7-Jun-1998 1:20:42-GMT,64886;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id TAA23589 for ; Sat, 6 Jun 1998 19:20:40 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sat, 06 Jun 1998 20:13:19 EST From: thompson@sun1.coe.ttu.edu Subject: comp.programming.literate FAQ Date: 5 Jun 1998 11:22:22 GMT Message-ID: Reply-To: LitProg@SHSU.edu, thompson@sun1.coe.ttu.edu To: LitProg@SHSU.edu Archive-name: literate-programming-faq Last-modified: 1997/08/15 Version: 1.1.18 The Literate Programming FAQ David B. Thompson 15 August 1997 This document is for new and experienced users of literate programming tools. The purpose is to explain the concept of literate programming and to provide a resource for locating files of interest to literate programmers and those interested in literate programming. ______________________________________________________________________ Table of Contents: 1. Welcome 1.1. Disclaimer 1.2. Copyright 1.3. What's New? 2. Introduction or 3. How do I get the FAQ? 3.1. Literate Programming FAQ 3.2. FWEB FAQ 4. Is there a newsgroup? 5. What internet nodes are of interest to literate programmers? 6. What is Literate Programming? 7. How do I begin literate programming? 8. What literate programming tools are available? 8.1. APLWEB 8.2. AWEB 8.3. CLiP 8.4. CWEB 8.5. CWEBx3.0 8.6. mCWEB 8.7. FunnelWeb 8.8. FunnelWeb 3.0AC 8.9. FWEB 8.10. IMPACT 8.11. lit2x 8.12. Literate Programmer's Workshop (LPW) 8.13. MapleWEB 8.14. MWEB (Schrod/Detig) 8.15. MWEB (Sewell) 8.16. noweb 8.17. nuweb 8.18. ProTeX 8.19. RWEB 8.20. SchemeWEB 8.21. SpideryWEB 8.22. WEB 8.23. WinWordWEB 9. Are there other tools I should know about? 9.1. C2LaTeX 9.2. c2cweb 9.3. c2man 9.4. cnoweb 9.5. Fold2Web 9.6. Funnelweb Mode 9.7. noweb.el 9.8. nuweb.el 9.9. TIE 9.10. Web mode 10. What other resources are available? 10.1. World Wide Web 10.2. TeX Resources 11. Are there any code examples? 12. Bibliographies 13. How to anonymously ftp 14. Acknowledgements 15. End notes ______________________________________________________________________ 1. Welcome Information contained in this document is the best available at preparation. The original file was dated October 15, 1993 (just for historical purposes). 1.1. Disclaimer Disclaimer: ``This FAQ is presented with no warranties or guarantees of ANY KIND including correctness or fitness for any particular purpose. The author of this document has attempted to verify correctness of the data contained herein; however, slip-ups can and do happen. If you use this data, you do so at your own risk.'' 1.2. Copyright Copyright 1993-1997 by David B. Thompson. All rights reserved worldwide. Permission is granted to copy this document for free distribution so long as it remains intact and unmodified. For other arrangements, contact the author/maintainer via email: 1.3. What's New? o My email address has changed (once again). o Newsgroup is moderated. o Updated fweb entry. o Updated noweb entry. o Added mCWEB entry. o Updated c2cweb entry. o Updated nuweb.el entry. o Updated cLiP entry. o Updated Lee W's examples (from bart). o Last, but not least, new formatting of the FAQ. Many thanks go to Andrew Johnson for helping make this happen. 2. Introduction or ``What's this all about?'' This document is for new and experienced users of literate programming tools. The purpose is to explain the concept of literate programming and to provide a resource for locating files of interest to literate programmers and those interested in literate programming. The Literate Programming (LitProg) Frequently Asked Questions (FAQ) list is maintained by Dave Thompson Comments and constructive criticisms are welcome. Direct flames to /dev/null (or nul if you're a msdos user! ;-) If you find an error, please report it. I'm particularly interested in establishing the locations of generally available literate programming tools. If you are the author of such a tool and wish to have it included in this list, please send email. Please note this is a work-in-progress. It is not complete, and probably will never be complete. Nevertheless, the information contained herein may be useful to some. Use it as it is intended. 3. How do I get the FAQ? 3.1. Literate Programming FAQ You have many ways to get a current copy of this FAQ. One is to use anonymous ftp (if you don't know how, see a later section in this FAQ) to connect to one of the Comprehensive TeX Arvchive Network (CTAN) sites or the Literate Programming Archive and retrieve a copy of the file. Open an ftp connection to one of the CTAN sites and retrieve the file: help/LitProg-FAQ (For more information on CTAN and the literate programming archive, see the section below entitled ``Internet Nodes of Interest to Literate Programmers''.) 3.2. FWEB FAQ David Coker maintains the FWEB FAQ. The current version number is 1.30a. It can be retrieved in the same way as this FAQ. The FWEB FAQ exists in various formats, including HyperText (see other resources below). In Europe, the complete distribution can also be obtained from ftp.desy.de 131.169.10.115 in directory /pub/faq/web/fweb/. It is also available from the literate programming archive in the directory LPA/Documentation/faq/fweb (see the references to LPA below for more information). 4. Is there a newsgroup? One of the most important resources is the literate programming newsgroup, comp.programming.literate. Because of the amount of spamming and unrelated the posts, the newsgroup is now moderated. Posts to the newsgroup are now routed through litprog- mod@cs.virginia.edu. If your news reader does not post through this address, then you will be unable to post messages to the newgroup. You can read this newsgroup using your standard reader. 5. What internet nodes are of interest to literate programmers? The principal nodes of interest to literate programmers are the Literate Programming Archive (LPA hereafter) and the CTAN (Comprehensive TeX Archive Network). The Literate Programming Archive (LPA) is: Node: ftp.th-darmstadt.de [130.83.55.75] Directory: programming/literate-programming Notes: Fastest response during off-U.S. [yep] business hours. Participating hosts in the Comprehensive TeX Archive Network are: ftp.dante.de (Deutschland) -- anonymous ftp /tex-archive (/pub/tex /pub/archive) -- gopher on node sun.dante.de -- e-mail via ftpmail@dante.de -- Administrator: ftp.tex.ac.uk (England) -- anonymous ftp /tex-archive (/pub/tex /pub/archive) -- gopher on node gopher.tex.ac.uk -- NFS mountable from nfs.tex.ac.uk:/public/ctan/tex-archive -- World Wide Web access on www.tex.ac.uk -- Administrator: The site ftp.shsu.edu used to be the American CTAN site. Apparently, that site has fallen into disrepair and should not be considered a primary source for either TeX related or literate programming related material. For the record, the address is: ftp.shsu.edu (Texas, USA) -- anonymous ftp and gopher /tex-archive (/pub/tex /pub/archive) -- NFS mountable from ftp.SHSU.edu:/pub/ftp/tex-archive -- e-mail via ftpmail@ftp.SHSU.edu -- World Wide Web access on www.SHSU.edu -- Administrator: A list of CTAN archive sites and their mirrors can be found on: ftp.dante.de:/tex-archive/CTAN.sites I presume that the other CTAN sites mirror this file, but have not checked. As of my last check (September 1994), it contains: "In order to reduce network load, it is recommended that you use the Comprehensive TeX Archive Network (CTAN) host which is located in the closest network proximity to your site." Known partial mirrors of the CTAN reside on (alphabetically): dongpo.math.ncu.edu.tw (Taiwan) /tex-archive ftp.adfa.oz.au (Australia) /pub/tex/ctan ftp.muni.cz (The Czech Republic) /pub/tex/CTAN ftp.cs.ruu.nl (The Netherlands) /pub/tex-archive ftp.uu.net (Virginia, USA) /pub/text-processing/TeX nic.switch.ch (Switzerland) /mirror/tex Known mirrors of the CTAN reside on (alphabetically): ftp.center.osaka-u.ac.jp (Japan) /CTAN ftp.ccu.edu.tw (Taiwan) /pub/tex ftp.cs.rmit.edu.au (Australia) /tex-archive ftp.duke.edu (North Carolina, USA) /tex-archive ftp.germany.eu.net (Deutschland) /pub/packages/TeX ftp.gwdg.de (Deutschland) /pub/dante ftp.jussieu.fr (France) /pub4/TeX/CTAN ftp.loria.fr (France) /pub/unix/tex/ctan ftp.mpi-sb.mpg.de (Deutschland) /pub4/tex/mirror/ftp.dante.de ftp.uni-bielefeld.de (Deutschland) /pub/tex ftp.uni-stuttgart.de (Deutschland) /tex-archive (/pub/tex) ftpserver.nus.sg (Singapore) /pub/zi/TeX src.doc.ic.ac.uk (England) /packages/tex/uk-tex sunsite.unc.edu (North Carolina, USA) /pub/packages/TeX wuarchive.wustl.edu (Missouri, USA) /packages/TeX Other nodes and directories of interest include: Node: ftp.desy.de [131.169.10.115] Directory: pub/web. Various documents, samples, and the FWEB FAQ. Notes: Has a www server, http://info.desy.de:80/ 6. What is Literate Programming? Literate programming is the combination of documentation and source together in a fashion suited for reading by human beings. In fact, literate programs should be enjoyable reading, even inviting! (Sorry Bob, I couldn't resist!) In general, literate programs combine source and documentation in a single file. Literate programming tools then parse the file to produce either readable documentation or compilable source. The WEB style of literate programming was created by D.E. Knuth during the development of his TeX typsetting software. All the original work revolves around a particular literate programming tool called WEB. Knuth says: The philosophy behind WEB is that an experienced system pro- grammer, who wants to provide the best possible documenta- tion of his or her software products, needs two things simultaneously: a language like TeX for formatting, and a language like C for programming. Neither type of language can provide the best documentation by itself; but when both are appropriately combined, we obtain a system that is much more useful than either language separately. The structure of a software program may be thought of as a web that is made up of many interconnected pieces. To docu- ment such a program we want to explain each individual part of the web and how it relates to its neighbours. The typo- graphic tools provided by TeX give us an opportunity to explain the local structure of each part by making that structure visible, and the programming tools provided by languages such as C or Fortran make it possible for us to specify the algorithms formally and unambigously. By combin- ing the two, we can develop a style of programming that max- imizes our ability to perceive the structure of a complex piece of software, and at the same time the documented pro- grams can be mechanically translated into a working software system that matches the documentation. Another author (Eric W. van Ammers) wrote me a short article treating his opinions on literate programming. The text follows: First observation on LP About 90% of the disussion on this list is about problems with applying some WEB-family member to a particular programming language or a special documentation situation. This is ridiculous, I think. Let me explain shortly why. Lemma 1: I have proposed for many years that programming has nothing to do with programming langauges, i.e. a good programmer makes good programs in any language (given some time to learn the syntax) and a bad programmer will never make a good program, no matter the language he uses (today many people share this view, fortunately). Lemma 2: Literate Programming has (in a certain way not yet completely understood) to do with essential aspects of programming. Conclusion 1: A LP-tool should be independent of programming language. Lemma 3: It seems likely that the so called BOOK FORMAT PARADIGM ref. 1 plays an important role in making literate programs work. Lemma 4: There are very many documentation systems currently being used to produce documents in the BOOK FORMAT. Conclusion 2: A LP-tool should be independent of the documentation system that the program author whishes to use. My remark some time ago that we should discuss the generic properties of an LP-tool was based on the above observation. References 1 Paul W. Oman and Curtus Cook. ``Typographical style is more than cosmetic.'' CACM 33, 5, 506-520 (May 1990) Second observation on LP The idea of a literate program as a text book should be extendend even further. I would like to see a literate program as an (in)formal argument of the correctness of the program. Thus a literate program should be like a textbook on mathematicics. A mathematical textbook explains a theory in terms of lemma and theorems. But the proofs are never formal in the sense that they are obtaind by symbol manipulation of a proof checker. Rather the proofs are by so called ``informal rigour'', i.e. by very precise and unambiguous sentences in a natural language. Eric W. van Ammers Department of Computer Science Wageningen Agricultural University Dreijenplein 2 E-mail: ammers@rcl.wau.nl 6703 HB Wageningen voice: +31 (0)8370 83356/84154 The Netherlands fax: +31 (0)8370 84731 Another author (Norman Ramsey) wrote me and asked that his opinions be included in the FAQ. What follows are Norman's comments verbatim. I see it's time for the ``how is literate programming dif- ferent from verbose commenting'' question. Perhaps David Thompson will get this into the FAQ. Alert! What follows are my opinions. In no way do I claim to speak for the (fractious) literate-programming community. How is literate programming different from verbose commenting? There are three distinguishing characteristics. In order of importance, they are: o flexible order of elaboration o automatic support for browsing o typeset documentation, especially diagrams and mathematics Flexible order of elaboration means being able to divide your source program into chunks and write the chunks in any order, independent of the order required by the compiler. In principle, you can choose the order best suited to explaining what you are doing. More subtly, this discipline encourages the author of a literate program to take the time to consider each fragment of the program in its proper sphere, e.g., not to rush past the error checking to get to the ``good parts.'' In its time and season, each part of the program is a good part. (This is the party line; your mileage may vary.) I find the reordering most useful for encapsulating tasks like input validation, error checking, and printing output fit for humans --- all tasks that tend to obscure ``real work'' when left inline. Reordering is less important when using languages like Modula-3, which has exceptions and permits declarations in any order, than when using languages like C, which has no exceptions and requires declaration before use. Automatic support for browsing means getting a table of contents, index, and cross-reference of your program. Cross-reference might be printed, so that you could consult an index to look up the definition of an identifier `foo'. With good tools, you might get a printed mini-index on every page if you wanted. Or if you can use a hypertext technology, cross-reference might be as simple as clicking on an identifier to reach its definition. Indexing is typically done automatically or `semi- automatically', the latter meaning that identifier definitions are marked by hand. Diligently done semi- automatic indexes seem to be best, because the author can mark only the identifiers he or she considers important, but automatic indexing can be almost as good and requires no work. Some tools allow a mix of the two strategies. Some people have applied literate-programming tools to large batches of legacy code just to get the table of contents, index, and cross-reference. I don't use diagrams and mathematics very often, but I wouldn't want to have to live without them. I have worked on one or two projects where the ability to use mathematical formulae to document the program was indispensible. I also wouldn't like to explain some of my concurrent programs without diagrams. Actually I write almost all of my literate programs using only sections headers, lists, and the occasional table. >Wouldn't it be easier to do one's literate programming using >a wysiwyg word processor (e.g. Word for Windows) and >indicate what is source code by putting it in a different >font? The data formats used in wysiwyg products are proprietary, and they tend to be documented badly if at all. They are subject to change at the whim of the manufacturer. (I'll go out on a limb and say there are no significant wysiwyg tools in the public domain. I hope the Andrew people will forgive me.) These conditions make it nearly impossible to write tools, especially tools that provide automatic indexing and cross-reference support. The CLiP people have a partial solution that works for tools that can export text --- they plant tags and delimiters throughout the document that enable the reordering transformation (``tangling''). People use TeX, roff, and HTML because free implementations of these tools are widely available on a variety of platforms. TeX and HTML are well documented, and TeX and roff are stable. TeX is the most portable. I think I have just answered the FAQ ``how come all these tools use TeX, anyway?'' :-) Norman Ramsey 7. How do I begin literate programming? A recommended book is D.E. Knuth's collection of articles (1992) Literate Programming. Center for the Study of Language and Information, Stanford University, ISBN 0-937073-80-6 (pbk). This book gives insight into Knuth's thoughts as he developed the web system of literate programming (and TeX for typesetting). It does not document methods for literate programming. A recommended book is Wayne Sewell's (1989) Weaving a Program: Literate Programming in WEB. Van Nostrand Reinhold, ISBN 0-442-31946-0 (pbk). This book focuses on using Knuth's web system. Some talk exists in the newsgroup/mailing list for a Usenet University course in literate programming. I'm sure discussion of this topic will be welcomed. If you are interested, please participate. 8. What literate programming tools are available? A significant number of tools for literate programming are available. Most have been ported from their original systems, so support multiple computer platforms. If you are the developer of such a tool, and would like to make the software freely available, please send me email and I'll reply with a form (like those below) for you to fill in. (Or short-circuit the process and kludge a form from below. :-) 8.1. APLWEB Developer: Christoph von Basum Version: Unknown Hardware: MSDOS Languages: IBM APL2 and STSC APL Formatter: Plain TeX Availability: Anonymous ftp from: LPA:/apl watserv1.uwaterloo.ca:/languages/apl/aplweb Readme: Unknown Description: None available. Support: Unknown Note: The status of this particular package is unknown. 8.2. AWEB Developer: Unknown Version: Unknown Hardware: Unknown Languages: Ada Formatter: Unknown Availability: Anonymous ftp from: LPA:/ada/web Readme: Unknown Description: None available Support: Not supported. 8.3. CLiP Developer: E.W. van Ammers and M.R. Kramer Versions: 2.0 and 2.4b (DOS only) Platform: Vax/VMS, Unix, DOS Languages: Any programming language Formatter: Any formatter (TeX, LaTeX, Troff, Runoff, HTML, etc) or any wordprocessor including WYSIWYG systems (Word Perfect, WinWord, Ami Pro, Word Pro, etc.) Availability: Anonymous ftp from: sun01.info.wau.nl:/CLIP/ms_dos DOS sun01.info.wau.nl:/CLIP/ms_dos_24b DOS (v. 2.4b) sun01.info.wau.nl:/CLIP/vax_vms VAX/VMS sun01.info.wau.nl:/CLIP/unix Unix CTAN:/web/clip LPA:/machines/ms-dos LPA:/machines/vax Readme: With bundle above Description: CLiP does not use explicit commands to perform the extraction process. Rather it recognizes pseudostatements written as comments in the programming language in question. CLiP distinguishes pseudostatements from ordinary comments because the former comply with a particular style. This style can be adjusted to suit virtually any programming language. The CLiP approach to LP makes the system extremely versatile. It is independent of programming language and text processing environment. We designed CLiP to be compatible with hypertext systems as well. Some hypertext examples are at ftp://sun01.info.wau.nl/clip/html/queens.htm ftp://sun01.info.wau.nl/clip/html/pal1.htm Features: + CLiP imposes virtually no limitations on the text-processing system used to produce the documentation. If the text-processor supports these items you can + structure the documentation according to your own taste. + include drawings, pictures, tables etc. + disclose your documentation my means of X-ref tables, Indexes, Table of contents, Table of tables, Table of figures, etc. + typeset the documented code. + Extracts any number of modules from a maximum of 64 source files. + No pretty-printing. Code from the source files is copied "as is" to the module. + Appearance of code segments in the documentation matches those of the modules to ease the identification of code segments. + Supports partially specified data types. + Comprehensive user manual (preliminary version) and technical description. - No automatic generation of a X-ref table for program identifiers. Support: Bugs, problems and assistance by e-mail to Eric.vanAmmers@user.info.wau.nl 8.4. CWEB Developer: Silvio Levy and D.E. Knuth Version: 3.0 Hardware: Unix systems (dos and amiga ports available) Languages: C and C++ Formatter: Plain TeX and LaTeX. Availability: Anonymous ftp from: labrea.stanford.edu:/pub/cweb LPA:/c.c++ CTAN:/web/c_cpp/cweb DOS version in CTAN:/web/c_cpp/cwb30p8c DOS version in LPA:/machines/ms-dos Amiga version CTAN:/web/c_cpp/AmigaCWEB Mac port of CTANGLE in LPA:/machines/mac LaTeX support in LPA:/c.c++ Readme: Bundled with above Description: No description provided. Support: Bugs to levy@math.berkeley.edu 8.5. CWEBx3.0 Developer: Marc van Leeuwen Version: Unknown Hardware: Any system using ASCII code Languages: ANSI C Formatter: Plain TeX Availability: Anonymous ftp from: ftp.cwi.nl/pub/cweb Readme: Bundled with above Brief description: A modified implementation of CWEB, with some extensions. Provides a mode for full compatibility with Levy/Knuth CWEB. The most significant extras are: - Typedef declarations affect formatting througout source file - Include files are scanned for typedef definitions - Flexible selection of layout style - Possibility to refer to sections using symbolic labels - CTANGLE detects unbalanced braces and parentheses - CWEAVE can be made to report syntax errors more easily - Some additional mechanisms to avoid formatting problems - New and modular set of grammar rules, based on ANSI C syntax - Possibility to suppress #line directives - A new manual Support: bugs and remarks to M.van.Leeuwen@cwi.nl 8.6. mCWEB Developer: Markus Oellinger Version: 1.0 Hardware: Unix Languages: C/C++ Formatter: plainTeX Availability: anonymous ftp from ist.tu-graz.ac.at:/pub/utils/litprog/mcweb/mcweb.tgz Readme: at same location Description: This is mCWEB 1.0, a descendant of the CWEB system of structured documentation by Donald E. Knuth and Silvio Levy. It adds some features that are indispensable when working in a team. mCWEB regards a project of a book consisting of several chapter files. By means of import and export commands, it automatically manages all relationships between the chapters of a book and to other books. Interface documentation is now also part of mCWEB. It is extracted into a second TeX file. This makes it possible to define well known interfaces between the individual parts of a project that will be implemented by different persons. In addition, mCWEB parses C header files to find out about all the datatypes defined there. mCWEB comes with a full completely rewritten user manual and is compatible with CWEB. Support: Institute of Software Technology moell@ist.tu-graz.ac.at 8.7. FunnelWeb Developer: Ross N. Williams: ross@guest.adelaide.edu.au Version: Unknown Hardware: MSDOS, Mac, VMS, Sun. Other ports reported. Languages: No restrictions. Formatter: Plain TeX for printing. Otherwise, no restrictions. Availability: Anonymous ftp from: CTAN:/web/funnelweb LPA:/independent ftp.adelaide.edu.au:/pub/funnelweb Readme: With bundle above. Description: FunnelWeb is a production-quality literate-programming tool that emphasises simplicity and reliability. Everything about FunnelWeb, from the simplicity of its language to the comprehensive tutorial in the user's manual, has been designed to make this as simple, as practical, and as usable a tool as possible. Features: + Provides a simple macro preprocessor facility. + Can produce typeset documentation. + Runs on Sun, VMS VAX, Macintosh, PC, and others. + Portable C source code distributed under GNU licence. + Comprehensive user's manual including tutorial. + Programming-language independent. + Can generate multiple output files. + Allows complete control over the output text. + Regression test suite with over 200 tests. + Fully worked example (in /pub/funnelweb/examples). - Requires TeX to produce typeset documentation. - Typesets program code using TT font only. Support: No formal support available. Mailing list maintained with about 50 subscribers. Informal assistance available from mailing list. 8.8. FunnelWeb 3.0AC Developer: Enhanced by A.B.Coates (coates@physics.uq.edu.au) from FunnelWeb v3.0 by Ross N. Williams (ross@guest.adelaide.edu.au) Version: 3.0AC Hardware: MSDOS, Mac, VMS, Sun, OSF/1, Linux, Sys.V, OS/2. Languages: No restrictions. Formatter: Tex, LaTeX, or HTML. Availability: Anonymous ftp from ftp.physics.uq.oz.au:/pub/funnelwebAC30.tar.gz Readme: With bundle above; for FunnelWeb manual see WWW page http://www.physics.uq.oz.au:8001/people/coates/funnelweb.html Description: FunnelWeb 3.0AC is an enhanced version of FunnelWeb (see the entry for FunnelWeb). FunnelWeb is designed to be typesetter independent, though FunnelWeb v3.0 only supports (La)TeX as the typesetter. FunnelWeb 3.0AC also supports HTML, and creates appropriate hypertext links within the document among the code sections. FunnelWeb 3.0AC also supports automatic and manual insertion of line directives, so that compiler errors can be flagged back to the original FunnelWeb source file. FunnelWeb 3.0AC is completely compatible with FunnelWeb v3.0 sources (with one minor exception; see the file README.ABC which comes with the FunnelWeb 3.0AC distribution). Support: Supported by A.B.Coates (coates@physics.uq.edu.au), subject to the time constraints imposed by his thesis. 8.9. FWEB Developer: John A. Krommes Version: 1.53 (1.60-beta for the experienced, patient, and brave) Hardware: Unix, VMS, and DOS platforms (anything with ANSI C) Languages: C, C++, Fortran-77, Fortran-90, Ratfor, TeX; also, a language-independent mode. Formatter: LaTeX. Plain TeX may work, but is no longer supported. Availability: Anonymous ftp from: ftp.pppl.gov:/pub/fweb CTAN:/web/fweb LPA:/fweb DOS version in LPA:/machines/ms-dos Readme: In bundle with above. Description: It also has a well-developed user's manual and its own FAQ (see above). Beginning with 1.40, documentation is maintained in gnu texinfo format. It runs on most platforms: VMS, PC, UNIX, and pretty much anything that the GNU C compiler (GCC) is supported for. Features: + Processes multiple languages during a single run (so one can mix C and Fortran, for example). + Language-independent mode (v1.40). + Ability to turn off pretty-printing (v1.40). + Built-in Ratfor translator. + Built-in macro preprocessor (closely follows ANSI C, with extensions). + A style file that allows the user to adjust many parameters and behavior patterns of FWEB. + Various operator-overloading features that provide additional pretty-printing capabilities to languages such as C++ and Fortran-90. + Numerous miscellaneous features and command-line options. Support: Bug reports and suggestions to krommes@princeton.edu 8.10. IMPACT Developer: Timothy Larkin, from Levy/Knuth CWEB 3.1 Version: 1.0 Hardware: Macintosh; requires AppleEvents. Languages: C, C++ Formatter: TeX Availability: CTAN archives Readme: A short readme file is included in the SEA archive. Description: IMPACT implements CTangle from the Levy/Knuth CWEB 3.1. It operates as a foreground program, tangling files selected from the Mac File Picker. Or it can operate in the background, tangling files in response to odoc events sent by other applications, such as editors. Support: I welcome any reports of bugs. The product will be updated as new versions of the CWEB appear. Other features may be added as users suggest them. 8.11. lit2x Developer: Unknown Version: Unknown Hardware: Unknown Languages: Unknown Formatter: Unknown Availability: Anonymous ftp from: LPA:/independent Readme: Unknown Description: None available Support: Unknown 8.12. Literate Programmer's Workshop (LPW) Developer: Norbert Lindenberg Version: 1.1 Hardware: Apple Macintosh Languages: C++, Object Pascal & others Formatter: self-contained WYSIWYG system Availability: Anonymous ftp from: LPA:/machines/mac CTAN:/web/lpw ftp.apple.com:/pub/literate.prog Readme: With bundle above. Also comes with 38-page manual. Description: The Literate Programming Workshop is an environment for the integrated development of program source text and documentation in combined documents. It consists of a WYSIWYG word processor based on a style sheet approach, a mechanism to extract parts of the text in a document, and a project management system that handles multi-document projects. The system is designed to be used in conjunction with the Macintosh Programmer's Workshop: it prepares raw source text for the MPW compilers, accepts MPW error messages, and shows them in the context of the original documents. Automatic indexing and hypertext features allow for easy access to both source text and documentation. LPW is shareware. Support: Bugs, problems, and questions to lpw@aol.com. 8.13. MapleWEB Developer: Unknown Version: Unknown Hardware: Unknown Languages: Maple Formatter: Unknown Availability: Anonymous ftp from: LPA:/maple Readme: Unknown Description: None Support: Unknown 8.14. MWEB (Schrod/Detig) Developer: Joachim Schrod Version: Unknown Hardware: Unknown Languages: Modula-2 Formatter: Unknown Availability: Anonymous ftp from: LPA:/modula-2 Readme: Unknown Description: None Support: Not supported. 8.15. MWEB (Sewell) Developer: Sewell Version: Unknown Hardware: Unknown Languages: Modula-2 Formatter: Unknown Availability: Anonymous ftp from: LPA:/modula-2 Readme: Unknown Description: None Support: Not supported. 8.16. noweb Developer: Norman Ramsey Version: 2.8 Hardware: Unix and DOS platforms (DOS binaries available for v2.7). Languages: All programming languages, singly or in combination. Automatic indexing for C, Icon, Pascal, Standard ML, TeX, Yacc Formatter: Plain TeX, LaTeX, and HTML formatters. Will convert LaTeX to HTML automatically. Availability: Anonymous ftp from: CTAN:/web/noweb LPA:/independent Last recourse, use ftp.cs.virginia.edu:pub/nr Readme: With bundle above, or see the noweb home page: http://www.cs.virginia.edu/~nr/noweb Those without ftp access can consult ``Literate Programming Simplified,'' IEEE Software, September 1994, pp97-105. Description: noweb is designed to meet the needs of literate programmers while retaining the simplest possible input format. Its primary advantages are simplicity, extensibility, and language-independence. noweb uses 5 control sequences to WEB's 27. The noweb manual is only 3 pages; an additional page explains how to customize its LaTeX output. noweb works ``out of the box'' with any programming language, and supports TeX, latex, and HTML back ends. A back end to support full hypertext or indexing takes about 250 lines; a simpler one can be written in 40 lines of awk. The primary sacrifice relative to WEB is that code is not prettyprinted. noweb supports indexing and identifier cross-reference, including hypertext ``hot links.'' noweb includes a simple, efficient LaTeX-to-HTML converter, so you can use hypertext browsers on your legacy documents. noweb can also process nuweb programs, so you can use noweb to convert a standard nuweb program to HTML with one command. Support: email to the author 8.17. nuweb Developer: Preston Briggs: preston@cs.rice.edu Version: 0.87 Hardware: Unix systems: Sparcs, RS/6000s, HPs; (!) MSDOS and Amiga. Languages: Any programming language or combination of programming languages. Formatter: Latex Availability: Anonymous ftp from: Unix: CTAN:/web/nuweb DOS: CTAN:/web/nuweb-pc LPA:/independent Amiga: CTAN:/web/nuweb/nuweb_ami Amiga: wuarchive.wustl.edu/pub/aminet Readme: Send mail to preston@cs.rice.edu Description: A single program that takes a web file written in a combination of latex and any programming language(s) and produces a latex file that can be pretty printed and a set of files containing code for compilation/interpretation by the appropriate language processors. Strengths include speed, simplicity, multiple languages, nice indices and cross-references, latex. Doesn't require any special macros or macro files. Drawbacks: latex-dependent, no code pretty printing, harder to make indices than cweb. More good stuff: nice support for make, doesn't reformat source files, so they're easy to debug. Lots of control without too much effort. That is, it doesn't do too much! Future directions... Very little change planned, except perhaps refinements in the indexing software. Support: Hack it yourself or send e-mail to preston@cs.rice.edu 8.18. ProTeX Developer: Eitan Gurari Version: ProTeX 1.1, AlProTeX 1.4 Hardware: Any platform with (La)TeX Languages: Any language Formatter: TeX or LaTeX Availability: Anonymous ftp from: ftp.cis.ohio-state.edu : pub/tex/osu/gurari/ LPA:/independent Readme: With bundle above Description: + Easy to use + Extensible + Language independent + Multiple output files + Fast (single compilation provides output and dvi files) + No installation is needed besides copying the files (written in TeX) Introduction of main features and examples in pub/tex/osu/gurari/LitProg Complete manual in Eitan M. Gurari, "TeX and LaTeX: Drawing and Literate Programming", McGraw-Hill, 1994 Support: gurari@cis.ohio-state.edu 8.19. RWEB Developer: Unknown Version: Unknown Hardware: Unknown Languages: Unknown Formatter: Unknown Availability: Anonymous ftp from: LPA:/reduce Readme: Unknown Description: Web generator in AWK. Support: Unknown 8.20. SchemeWEB Developer: John D. Ramsdell Version: 2.1 Hardware: Unix and DOS platforms Languages: Any dialect of Lisp. Formatter: LaTeX. Availability: The Unix version is in the Scheme Repository and it is available via anonymous ftp from: cs.indiana.edu:/pub/scheme-repository/utl/schemeweb.sh LPA:/lisp CTAN:/tex-archive/web/schemeweb The DOS version is part of the PCS/Geneva Scheme system which is available via anonymous ftp from: cui.unige.ch:/pub/pcs LPA:/machines/ms-dos Readme: In bundle with above. Description: SchemeWEB is a Unix filter that allows you to generate both Lisp and LaTeX code from one source file. The generated LaTeX code formats Lisp programs in typewriter font obeying the spacing in the source file. Comments can include arbitrary LaTeX commands. SchemeWEB was originally developed for the Scheme dialect of Lisp, but it can easily be used with most other dialects. Support: Bug reports to ramsdell@mitre.org. 8.21. SpideryWEB Developer: Norman Ramsey Version: Unknown Hardware: Unix and DOS platforms Languages: Most Algol-like languages, including C, Ada, Pascal, Awk, and many others. Formatter: Plain TeX and latex for text formatters. Availability: Anonymous ftp from: CTAN LPA:/spiderweb Readme: In distribution. Description: A system for building language-dependent WEBs. Spider is frozen; no further development is planned. Support: Bug reports to spider-bugs@oracorp.com. 8.22. WEB Developer: Donald Knuth Version: Unknown Hardware: Unknown Languages: Pascal Formatter: TeX (of course! ;-) Availability: Anonymous ftp from: LPA:/pascal Readme: Unknown Description: This is the original software that started it all. The original TeX processor was written in WEB. Support: None known. 8.23. WinWordWEB Developer: Lee Wittenberg Version: Unknown Hardware: Needs Microsoft Word for Windows, v.2.x, and, of course, MS-Windows 3.x. Languages: Any programming language. Formatter: Word for Windows 2.x for text formatting and file maintenance. Availability: Anonymous ftp from: bart.kean.edu:pub/leew LPA:/machines/ms-dos World-Wide Web (WWW) Readme: WORDWEB.DOC in the downloadable package describes the system. Description: WinWordWEB is a set of a Word for Windows macros (plus a paragraph style) that provide a crude literate programming environment. The ``look and feel'' of the system is based on Norman Ramsey's noweb, but can easily be modified to suit individual tastes. Support: None. WinWordWEB was written as a prototype to see if a WYSIWYG literate programming system was possible. It is intended as a jumping off point for future work by others. However, the system is surprisingly usable as it stands, and the author is interested in hearing from users (satisfied and dissatisfied). Anyone interested in actively supporting (and improving) the product should contact the author via email. 9. Are there other tools I should know about? First of all, I'll list some not-quite-literate-programming tools. Some may consider these to be pretty-printers. Others may call them literate programming tools. In any event, they don't seem to be quite in the same category as the tools listed above, so I'll include them here. 9.1. C2LaTeX Developer: John D. Ramsdell Version: Unknown Hardware: Unix Languages: C Formatter: LaTeX but it's easy to change the formatter. Availability: Anonymous ftp from omnigate.clarkson.edu:/pub/tex/tex-programs/c2latex. Readme: Absent. Documentation is in the C source for c2latex. Description: C2latex provides simple support for literate programming in C. Given a C source file in which the comments have been written in LaTeX, c2latex converts the C source file into a LaTeX source file. It can be used to produce typeset listings of C programs and/or documentation associated with the program. C2latex produces LaTeX source by implementing a small number of rules. A C comment that starts at the beginning of a line is copied unmodified into the LaTeX source file. Otherwise, non-blank lines are surrounded by a pair of formatting commands (\begin{flushleft} and \end{flushleft}), and the lines are separated by \\*. Each non-blank line is formatted using LaTeX's \verb command, except comments within the line are formatted in an \mbox. Support: Send bug reports to ramsdell@mitre.org. 9.2. c2cweb Developer: Werner Lemberg Version: 1.5 Hardware: DOS, OS/2, Unix (gcc) - CWEB source included Languages: C, C++ Formatter: TeX Availability: Anonymous ftp from CTAN:/web/c_cpp/c2cweb Readme: In distribution. Description: c2cweb will transform plain C or C++ code into a CWEB file to get a pretty formatted output. A modified CWEAVE (which transforms the CWEB file into a TeX file, see below) is included also. Support: Werner Lemberg 9.3. c2man language: C, nroff, texinfo, latex, html package: c2man version: 2.0 patchlevel 33 parts: documentation generator (C -> nroff -man, -> texinfo, ->latex, -> html) author: Graham Stoney location: ftp from any comp.sources.misc archive, in volume42 (the version in the comp.sources.reviewed archive is obsolete) ftp /pub/Unix/Util/c2man-2.0.*.tar.gz from dnpap.et.tudelft.nl Australia: ftp /usenet/comp.sources.misc/volume42/c2man-2.0/* from archie.au N.America: ftp /usenet/comp.sources.misc/volume42/c2man-2.0/* from ftp.wustl.edu Europe: ftp /News/comp.sources.misc/volume42/c2man-2.0/* from ftp.irisa.fr Japan: ftp /pub/NetNews/comp.sources.misc/volume42/c2man-2.0/* from ftp.iij.ad.jp Patches: ftp pub/netnews/sources.bugs/volume93/sep/c2man* from lth.se description: c2man is an automatic documentation tool that extracts comments from C source code to generate functional interface documentation in the same format as sections 2 & 3 of the Unix Programmer's Manual. It requires minimal effort from the programmer by looking for comments in the usual places near the objects they document, rather than imposing a rigid function-comment syntax or requiring that the programmer learn and use a typesetting language. Acceptable documentation can often be generated from existing code with no modifications. conformance: supports both K&R and ISO/ANSI C coding styles features: + generates output in nroff -man, TeXinfo, LaTeX or HTML format + handles comments as part of the language grammar + automagically documents enum parameter & return values + handles C (/* */) and C++ (//) style comments - doesn't handle C++ grammar (yet) requires: yacc/byacc/bison, lex/flex, and nroff/groff/texinfo/LaTeX. ports: Unix, OS/2, MSDOS, VMS. portability: very high for unix, via Configure status: actively developed; contributions by users are encouraged. discussion: via a mailing list: send "subscribe c2man " (in the message body) to listserv@research.canon.oz.au help: from the author and other users on the mailing list: c2man@research.canon.oz.au announcements: patches appear first in comp.sources.bugs, and then in comp.sources.misc. updated: 1994/10/07 9.4. cnoweb Developer: Jim Fox Version: 1.4 (January 4, 1991) Hardware: Anything with C and TeX. Languages: C Formatter: Plain TeX. Availability: Anonymous ftp from: CTAN LPA:/c.c++ Readme: Unknown, cnoweb.tex contains documentation. Description: cnoweb is as it's name describes: write C, not web. No tangling or weaving is implemented. Documentation (between standard /* */ delimiteres) is written in TeX. cnoweb provides typesetting of documentation, an table of contents of routines, and pretty-printing of C source. Support: None known. 9.5. Fold2Web Developer: Bernhard Lang Version: V0.8 Hardware: MSDOS Languages: All (must allow comment lines) Formatter: LaTeX Availability: Anonymous ftp from: kirk.ti1.tu-harburg.de (134.28.41.50) /pub/fold2web/readme /pub/fold2web/fold2web.zip Readme: In distribution Description: The idea behind the Fold2Web tool is the following: A programmer can write his program source with a folding editor and later map the folded source files automatically to WEB-files. The generated WEB-files can then be modified by inserting required documentations. The advantage by starting program developement with original sources is to get short design cycles during the compile/debug steps. By using a folding editor the global structuring information can be already captured in folds during this developement phase. Fold information is typically stored in comment lines and thus will not affect the efficiency of the compile/debug design cycle. Some folding editors and a folding mode for the emacs are available (e.g. see our FUE folding editor for MSDOS machines which is a modified micro emacs. Pick it at kirk in directory /pub/fold2web). After reaching a stable version of a program source its time to convert the source file to a WEB-file and do the program documentation. Fold2Web is written to convert folded source text of any programming language to nuweb files. The folded structure is kept by mapping folds to scraps. Fold markers which differ between languages due to different ways of specifying comments can be configured for each language. Good results can also achived when given but poor documented program sources have to be modified. Such sources can be folded using a folding editor to extract the global structures. This offers a global view to the program structures and help to understand its functionality. Furthermore the program code is not affected, only comment lines are inserted. Once folded the program source can be automatically translated to a WEB document using the above tool. Support: email to lang@tu-harburg.d400.de 9.6. Funnelweb Mode Developer: Daniel Simmons Version: Unknown Availability: http://www.miscrit.be/~ddw Description: The other day I did a quick hack to nuweb.el as included with the nuweb distribution so as to make a funnelweb-mode.el. I've only used it briefly, and I'm sure that it can be improved quite a bit. I've been thinking about adding support for folding on sections, a pull-down menu to select macro definitions (like the recent functions posted to gnu.emacs.sources for a C function definition pull-down menu) and some kind of tags support for funnelweb. Support: Unknown 9.7. noweb.el Developer: Bruce Stephens Version: Unknown. Availability: LitProg archives (in an email message). Description: This is a very simple mode I just hacked up. There's a lot wrong with it, but I thought others may be interested, even as it stands. It *requires* text properties, and assumes those used in GNU Emacs 19.22; it'll quite likely work with Lucid Emacs, but I haven't tried it. I use it with auctex8.1 and cc-mode 3.229, both of which are loaded separately (I think my emacs is dumped with them, in fact). The idea is to have one mode (which calls itself c-mode, but actually has LaTeX-mode keybindings) generally (this means that the code is hilighted nicely), and have the code chunks use a different keymap. Support: Email to bruce@liverpool.ac.uk 9.8. nuweb.el Developer: Dominique de Waleffe Version: 1.99 Availability: Anonymous ftp from: LPA CTAN Description: Provides a major mode extending Auctex for editing nuweb files. Main features (in 2.0): - Edit scrap bodies in a separate buffer in a different mode (selected using emacs defaults for files, specific indication -*-mode-*-, or a buffer-local variable) - Extends Auctex commands so that nuweb is called before LaTeX, - Easy navigation on scrap definition and use points. - Now creates an imenu (C-M-mouse1) with user index entries, macro definition positions and file definition positions. Support: Email to ddw@acm.org 9.9. TIE Developer: Unknown Version: Unknown Hardware: Unknown Availability: Anonymous ftp from: LPA:/Tools Readme: Unknown Description: This software merges change files. Support: Unknown 9.10. Web mode Developer: Bart Childs Version: Unknown Tools supported: web, fweb, cweb, funnelweb Availability: Anonymous ftp from ftp.cs.tamu.edu:pub/tex-web/web/EMACS.web-mode thrain.anu.edu.au:pub/web/EMACS.web-mode Description: This version works with versions 18 and 19 of Emacs to be best of my knowledge. I have cleaned up a number of documentation items ... In the same directory is wm_refcard.tex which is an edited version of the famous one to include some web-mode commands. The files limbo* are related to its use and notice that half them have an uppercase L in them for LaTeX. The setup is based upon the fact that we (I am not alone here) primarily use FWEB for C and Fortran programming. We are using version 1.40 of FWEB although John Krommes warns that it is not mature and the manual is not yet updated. The info files are! We are using LaTeX almost exclusively. That will likely change and we will revert to version 1.30 if the final form of 1.40 cannot return to the simple section numbers and avoid the HORRIBLE LATEX 0.1.7.2.4.6 type section numbers. Support: Unknown 10. What other resources are available? 10.1. World Wide Web An untapped resource (by me anyway ;-) is the World Wide Web. Marcus Speh has expended considerable effort in this regard. If you're connected to WWW, then access: http://info.desy.de:80/user/projects/LitProg.html If you aren't connected to WWW, telnet to info.cern.ch and explore. You can reach Marcus' literate programming pages by typing: go http://info.desy.de:80/user/projects/LitProg.html or use a WWW browser and access the URL ftp://rtfm.mit.edu/pub/usenet/news-answers/www/resources/literate-programming Help for people who have only Email and neither WWW nor telnet, can be obtained by Email from TEST-LIST@INFO.CERN.CH by sending a message, SEND , for example, SEND http://info.desy.de:80/user/projects/LitProg.html to retrieve the LitProg library page. A help file can be retrieved by sending a message to the list server above with the text HELP in the body of the message. Instructions will be returned by email. For literate programming documents, you can try anonymous ftp to rtfm.mit.edu and retrieve the official Usenet resource file /pub/usenet/news.answers/www/resources/literate-programming 10.2. TeX Resources Another resource of interest to literate programmers is the comp.text.tex newsgroup. If you're using (La)TeX as your typsetting system and have access to internet, then you should investigate this resource. Another reason the TeX resources should be important is that so many of the literate programming tools rely on either plain TeX or LaTeX as their text formatter. (La)TeX software systems exist for most computing platforms. These systems can be found on CTAN and other major archive sites. Use archie to find them or simply ftp to one of the CTAN sites and browse. 11. Are there any code examples? Examples of web programs are included with the FWEB, CWEB, and noweb distributions. nuweb is written in itself. Cameron Smith converted the K&R calculator program into a literate program. It can be retrieved by anonymous ftp from: niord.shsu.edu [192.92.115.8] directory kr-cweb-sample as krcwsamp.zip or from LPA/Documentation Ross Williams has released a funnelweb example. You can retrieve this file from node ftp.adelaide.edu.au 129.127.40.3 as /pub/funnelweb/examples/except.* This file should be on CTAN as well. Lee Wittenberg has posted a few litprog examples. They are available via anonymous ftp from: ftp://samson.kean.edu/pub/leew/samples.LP The Stanford GraphBase is a large collection of programs by Don Knuth for doing all kinds of computations and games with graphs; it is writ- ten in (Levy/Knuth) CWEB. More details in the distribution. It is available via anonymous ftp from: labrea.stanford.edu:/pub/sgb 12. Bibliographies Nelson Beebe has collected an extensive bibliography treating literate programming. His work is available for anonymous ftp from ftp.math.utah.edu 128.110.198.2 in directory /pub/tex/bib as files: litprog.bib litprog.ltx litprog.twx. Although I have not verified this, LPA is an alternate source for these files. Note that they are updated frequently (Nelson says sev- eral times each week), so be sure to get a fresh copy before extensive use. Joachim Schrod indicates that these files may be updated daily and can be retrieved via anonymous ftp at LPA/documentation. 13. How to anonymously ftp Pretty much everything mentioned here is available by anonymous FTP. FAQ lists cross-posted to news.answers and rec.answers can be gotten from rtfm.mit.edu 18.181.0.24, under /pub/usenet/news.answers or under /pub/usenet/more.specific.group.name "anonymous FTP" is just a way for files to be stored where anyone can retrieve them over the Net. For example, to retrieve the latest version of the literate programming FAQ, do the following: > ftp rtfm.mit.edu /* connect to the site; message follows */ > anonymous /* type this when it asks for your name */ > /* type your address as the password */ > cd /pub/usenet /* go to the directory you want to be */ > cd comp.programming.literate /* one level down (no slash). */ > dir /* look at what's there */ > get literate-progamming-faq /* get the file; case-sensitive */ > quit /* stop this mysterious thing */ If your FTP program complains that it doesn't know where the site you want to use is, type the numerical address instead of the sitename: > ftp 18.181.0.24 /* connect with numerical address */ If you don't have ftp access, send e-mail to mail-server@rtfm.mit.edu with the single word "help" in the body of the message. Getting binary files (executables, or any compressed files) is only slightly more difficult. You need to set binary mode inside FTP before you transfer the file. > binary /* set binary transfer mode */ > ascii /* set back to text transfer mode */ FAQs and spoiler lists are generally ascii files; everything else is generally binary files. Some common extensions on binary files in archive sites are: .Z Compressed; extract with uncompress .tar.Z Compressed 'tape archive'; uncompress then untar or tar -xvf .gz or .z Gnu gzip; use gunzip (available from prep.gnu.ai.mit.edu) .sit (Mac) StufIt archive .zip Extract with Zip or Unzip .zoo Yet another archive/compress program .lhe (Amiga) ? .lzh Lha archive program. .arj (PC) Arj archive program. .exe (PC) Sometimes self-extracting archives-just execute them. .uue or .UUE Transfer as text file; use uudecode to convert to binary .hqx (Mac) BinHex format; transfer in text mode Generic help can be found in the FAQs of comp.binaries. for how to transfer, extract, and virus-check binary files. (At rtfm.mit.edu) If you can't FTP from your site, use one of the following ftp-by-mail servers: ftpmail@decwrl.dec.com ftpmail@src.doc.ic.ac.uk ftpmail@cs.uow.edu.au ftpmail@grasp.insa-lyon.fr For complete instructions, send a message reading "help" to the server. If you don't know exactly what you're looking for, or exactly where it is, there are programs and servers that can help you. For more info, send e-mail to mail-server@rtfm.mit.with with the body of the message reading send usenet/news.answers/finding-sources Thanks to Aliza R. Panitz (the "buglady") for this text. I copied it verbatim from her post on faq-maintainers with only minor modifications. 14. Acknowledgements This document would not have happened without the help of many people. Among them are Marcus Speh, George Greenwade, Rob Beezer, Joachim Schrod, Piet van Oostrum, and Ross N. Williams. A special thanks to Aliza R. Panitz for the text describing how to execute an anonymous ftp for files of interest. Any omissions from these acknowledgements should be considered an act of stupidity on my part. Of course, the authors of literate programming tools mentioned above all play a vital role in the vitality of literate programming. Furthermore, participants in the comp.programming.literate newsgroup (and associated mailing list) all contributed in various fashions. Thank all of you. 15. End notes This document will continue to evolve. I'm planning on adding entries for additional literate programming tools and will expand the sections on examples as more examples become available. Tools I will include are WEB (the original pascal version) for starters. Others will be added as I find and document them. Omission of a particular tool should not be considered a snub in any sense--simply an error or oversight on my part. 7-Jun-1998 1:42:10-GMT,3720;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id TAA23916 for ; Sat, 6 Jun 1998 19:42:09 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sat, 06 Jun 1998 20:39:45 EST From: Lee Wittenberg/home/faculty/leew Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: LitProg and GUIs Date: 4 Jun 1998 16:49:22 GMT Message-ID: <6l6j6i$8c5$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On Thu, 4 Jun 1998, Chun Yin Hsu wrote: > > What I usually do in this case (only when the GUI-builder generates > > readable source code, of course) is to "reverse tangle" the generated > > code into my web (I've used this technique with both Visual Basic and > > Delphi). Start with a chunk <>= containing all the generated > > code, and replace bits of code with chunk names as you figure out what > > they do. It takes a bit of work, but I think it's worth it in the long > > run. > > > > I understand that this "reverse tangle" is a manual procedure as you > described --- if so, it seems very tedious to maintain <> > whenever it is modified by the GUI-builder. Yes, it's a manual process, but it's much easier to maintain <> when it has subsidiary chunks that have been annotated with text chunks than it is to maintain the gui using the automatic building tool (at least, that's been my experience). If you just leave <> a single chunk that doesn't reference any other chunks (i.e. don't bother to "reverse tangle"), then the maintenance would be worse, but the text chunks describing the code and well-thought-out chunk names are what make LP such an excellent maintenance tool, to my way of thinking. > Is there any "automated" approach to "reverse tangle" <>? I don't know of any. And, since the chunk names need to describe what the code itself is doing, and short of artificial intelligence, no automated tool can do that, I suspect there aren't any. On the other hand, it *would* be possible to write a program that takes another program and automatically replaces blocks of code nested inside other chunks of code (as in loops and conditionals) with default chunk names, which could then be massaged by a human into some kind of understandable shape. For example, the C code int f(int x) { int y, z; z = 0; for (y = x; !p(y); y++) { if (q(y, x)) z = g(x, y); } return y + z; } might become: <<*>>= int f(int x) { <> } <>= int y, z; z = 0; for (y = x; !p(y); y++) { <> } return y + z; <>= if (q(y, x)) <> <>= z = g(x, y); Not pretty, but it can be done automatically, and it is a place to start. Someone has to write the tool, of course. Would you care to volunteer? :-) -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 8-Jun-1998 7:54:49-GMT,2553;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id BAA13591 for ; Mon, 8 Jun 1998 01:54:48 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from mail.eunet.ch by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 08 Jun 1998 02:51:07 EST Received: from igate1.itzrh.ska.com (igate1.credit-suisse.com [198.240.202.196]) by mail.eunet.ch (8.8.6/1.34) via ESMTP id HAA22983; Mon, 8 Jun 1998 07:47:57 GMT env-from (barry.gaunt@cspb.com) Received: (from smtpuser@localhost) by igate1.credit-suisse.com (8.9.0/8.8.8) id JAA03631; Mon, 8 Jun 1998 09:25:37 +0200 (MET DST) Received: from mx2.ska.com(198.240.223.100) via SMTP by igate1.credit-suisse.com, id smtpdAAA0Fn01U; Mon Jun 8 09:25:27 1998 Received: from gmszrh1.itzrh.ska.com (gmszrh1.itzrh.ska.com [159.122.217.90]) by mx2.ska.com (8.7.5+phmap1.4+pmdfhack1.0/8.7.3/MX1-02-APR-96) with ESMTP id JAA24395; Mon, 8 Jun 1998 09:23:12 +0200 (MET DST) Received: from cspb.com (ebszttsx1.tszrh.ska.com [159.122.73.136]) by gmszrh1.itzrh.ska.com (8.7.5+phmap-1.3/8.7.3) with ESMTP id JAA13563; Mon, 8 Jun 1998 09:19:45 +0200 (MET DST) Message-ID: <357BBB19.8F863232@cspb.com> Date: Mon, 08 Jun 1998 09:21:14 -0100 From: Barry Gaunt Reply-To: LitProg@SHSU.edu, barry.gaunt@cspb.com MIME-Version: 1.0 To: LitProg@SHSU.edu, hermit@cs.tu-berlin.de Subject: Re: Articles missing! (was: Re: LitProg and GUIs) References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Bjoern Labitzke wrote: > Help! > > On 5 Jun 1998, Steve Furlong wrote: > > > Subject: Re: LitProg and GUIs > > > > In article <6l6j6i$8c5$1@murdoch.acc.Virginia.EDU>, > > Lee Wittenberg/home/faculty/leew wrote: > > >On Thu, 4 Jun 1998, Chun Yin Hsu wrote: > > <> > > I never got one of those two texts!? I am subscribed to LitProg@SHSU.edu. > Anything wrong with that? > > Bye, Bjoern > > -- > Bjoern Labitzke | E-Mail: hermit@cs.tu-berlin.de > PGP-Key available | Use PGP! (Don't you use envelopes for your letters?) That's not a problem specific to Bjoern, I often get only the 'Re:' form of the postings and not the original. -- Best wishes, Barry 8-Jun-1998 19:42:40-GMT,1253;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id NAA05556 for ; Mon, 8 Jun 1998 13:42:38 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 08 Jun 1998 12:52:56 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: Articles missing! Date: 8 Jun 1998 17:13:04 GMT Message-ID: <6lh630$4dm$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6lh1ug$1p0$1@murdoch.acc.Virginia.EDU>, >Sorry, but I haven't got any of those "originals" which I missed initially >yet. It has been five days since I got a that mail that referred to the >mails/postings I am missing. Could it take that long? Yes.l One of the moderators of c.p.l. is in Switzerland, and it's not uncommon for postings to take a number of days to reach me from the Swiss news server. I'm not quite sure why that is. If the problem becomes serious, I suppose we could look into alternatives (e.g., ask Matthias to use a U.S. news server). Norman 8-Jun-1998 19:46:55-GMT,1490;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id NAA05718 for ; Mon, 8 Jun 1998 13:46:53 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 08 Jun 1998 11:41:49 EST From: Bjoern Labitzke Subject: Re: Articles missing! Date: 8 Jun 1998 16:02:24 GMT Message-ID: <6lh1ug$1p0$1@murdoch.acc.Virginia.EDU> Reply-To: LitProg@SHSU.edu, hermit@cs.tu-berlin.de MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On Mon, 8 Jun 1998, Lee Wittenberg wrote: > > > I never got one of those two texts!? I am subscribed to LitProg@SHSU.edu. > > > Anything wrong with that? > > I also subscribe to LitProg rather than comp.programming.literate, and > I find that I frequently get the replies before I get the originals. Sorry, but I haven't got any of those "originals" which I missed initially yet. It has been five days since I got a that mail that referred to the mails/postings I am missing. Could it take that long? BTW: I looked the newsgroup up and couldn't find those "originals" there either! Bye, Bjoern -- Bjoern Labitzke | E-Mail: hermit@cs.tu-berlin.de PGP-Key available | Use PGP! (Don't you use envelopes for your letters?) 8-Jun-1998 19:47:42-GMT,2111;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id NAA05735 for ; Mon, 8 Jun 1998 13:47:41 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 08 Jun 1998 11:00:31 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: Articles missing! (was: Re: LitProg and GUIs) Date: 8 Jun 1998 15:29:46 GMT Message-ID: <6lh01a$pg$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On Mon, 8 Jun 1998, Barry Gaunt wrote: > Bjoern Labitzke wrote: > > > Help! > > > > On 5 Jun 1998, Steve Furlong wrote: > > > > > Subject: Re: LitProg and GUIs > > > > > > [ ... ] > > > > I never got one of those two texts!? I am subscribed to LitProg@SHSU.edu. > > Anything wrong with that? > > That's not a problem specific to Bjoern, I often get only the 'Re:' form > of the > postings and not the original. I also subscribe to LitProg rather than comp.programming.literate, and I find that I frequently get the replies before I get the originals. I suspect that this is because c.p.l. is moderated and LitProg isn't, and (perhaps) everything sent to c.p.l. gets posted to LitProg, but not necessarily the other way around. I generally send my postings directly to the c.p.l. moderator address to ensure that they are delivered to everyone. -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 10-Jun-1998 18:13:14-GMT,980;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id MAA02472 for ; Wed, 10 Jun 1998 12:13:06 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 10 Jun 1998 13:05:37 EST From: "Lua Eng Hock" Reply-To: LitProg@SHSU.edu, ehock@tm.net.my Subject: Programming Language ... help! Date: Thu, 11 Jun 1998 01:28:38 +0800 Message-ID: <6lmfjq$j7h$1@news.tm.net.my> To: LitProg@SHSU.edu Dear friends, I'm currently doing my assigment on "Concept of programming language". It would kind enough if anyone of you can provide me the relevant information on the following topic : What is the advantages to introduce build-in data types in a programming language ? Thank you very much ! 11-Jun-1998 22:42:38-GMT,1585;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id QAA08077 for ; Thu, 11 Jun 1998 16:42:37 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 11 Jun 1998 17:38:57 EST From: Elf Sternberg Reply-To: LitProg@SHSU.edu, elf@halcyon.com Subject: Noweb tools and WEB styles... Date: 11 Jun 1998 21:25:41 GMT Message-ID: <6lpi0l$bn2$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu Amazing. I've gotten Noweb up and running and I've learned to use it with Emacs. One thing I found one day recently and can't seem to find again is a way to list all the code chunks using the emacs noweb mode. Anyone have any help, or was I just hallucinating that day? I noticed in the 'wc' demonstration program the comment that, unlike WEB, Noweb doesn't support numbered chunks. I actually kinda like them; is there a way to put them in without writing the LaTex by hand? Elf Elf M. Sternberg - www.halcyon.com/elf The view of programming as language-as-text gives the patience to look slowly through the code. In the end, the overall "productivity" of a system, the fact that it comes into being at all, is the handiwork not of tools that seek to make programming seem easy, but the work of engineers who have no fear of "hard." 12-Jun-1998 21:50:04-GMT,1615;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id PAA08079 for ; Fri, 12 Jun 1998 15:50:03 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 12 Jun 1998 16:45:27 EST From: postmaster@127.0.0.1 (Benoit Goudreault-Emond) Subject: Re: Noweb tools and WEB styles... Date: 12 Jun 1998 01:23:48 GMT Message-ID: <6lpvv4$hbd$1@murdoch.acc.Virginia.EDU> Reply-To: LitProg@SHSU.edu, postmaster@127.0.0.1 To: LitProg@SHSU.edu In article <6lpi0l$bn2$1@murdoch.acc.Virginia.EDU>, Elf Sternberg wrote: > > Amazing. I've gotten Noweb up and running and I've learned to use > it with Emacs. One thing I found one day recently and can't seem to find > again is a way to list all the code chunks using the emacs noweb mode. > Anyone have any help, or was I just hallucinating that day? > To list the chunks, I usually issue 'noweb-goto-chunk' (M-n g) and press TAB twice to get the completion list. There are no other ways I'm aware of, I'm afraid. I hope that helped anyhow. -- Benoit Goudreault-Emond -- Student, Computer Engineering, Concordia University ``Being too close to a fireball can worry a man --- to death.'' -- Zeb Carter in "The Number of the Beast" by Robert A. Heinlein Note: the "From:" address is not correct to protect myself against spam. My actual e-mail address is: ``bgoudem AT axess DOT com'' 13-Jun-1998 5:01:57-GMT,1137;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id XAA16019 for ; Fri, 12 Jun 1998 23:01:56 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 12 Jun 1998 23:59:25 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: Noweb tools and WEB styles... Date: 12 Jun 1998 05:45:19 GMT Message-ID: <6lqf9f$nkq$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6lpi0l$bn2$1@murdoch.acc.Virginia.EDU>, Elf Sternberg wrote: > I noticed in the 'wc' demonstration program the comment that, >unlike WEB, Noweb doesn't support numbered chunks. I actually kinda like >them; is there a way to put them in without writing the LaTex by hand? I did this for a paper once. \noweboptions{webnumbering} is necessary and may be sufficient. This is documented on the nowebstyle man page. 13-Jun-1998 14:24:48-GMT,1426;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id IAA25484 for ; Sat, 13 Jun 1998 08:24:47 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sat, 13 Jun 1998 09:22:33 EST From: Thorsten Ohl Reply-To: LitProg@SHSU.edu, ohl@*REMOVETHESTARS*HEP.TU-DARMSTADT.DE Subject: Re: Noweb tools and WEB styles... Date: 12 Jun 1998 13:34:31 GMT Message-ID: <6lrap7$5ib$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu Elf Sternberg writes: > One thing I found one day recently and can't seem to find again is a > way to list all the code chunks using the emacs noweb mode. (defun noweb-chunks () "" (interactive) (with-output-to-temp-buffer "*noweb-chunks*" (mapcar (lambda (chunk-name-and-loc) (let ((chunk (car chunk-name-and-loc))) (if (eq chunk 'doc) nil (princ (concat "<<" chunk ">>\n"))))) noweb-chunk-vector))) This lists all the chunks. Sorting and removal of duplicates is left as an excercise ... -- Thorsten Ohl, Physics Department, TU Darmstadt -- ohl@hep.tu-darmstadt.de http://crunch.ikp.physik.tu-darmstadt.de/~ohl/ [<=== PGP public key here] 13-Jun-1998 19:45:11-GMT,4758;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id NAA01264 for ; Sat, 13 Jun 1998 13:45:10 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sat, 13 Jun 1998 14:41:20 EST From: dave333@aol.com (Dave333) Reply-To: LitProg@SHSU.edu, dave333@aol.com Subject: Monopoly statistics Message-ID: <1998061319380000.PAA29880@ladder01.news.aol.com> Date: 13 Jun 1998 19:38:00 GMT To: LitProg@SHSU.edu Hey there. I am creating a program to compute monopoly statistics. State the problem you will be investigating and outline the procedure: My proposed project is based on the game Monopoly. The proposal is written assuming the reader understands the basic principles of the game Monopoly. If this is not the case, I can explain the how the game is played. I will create a computer program that will play out the finishing stages (after all or nearly all properties have been purchased) of Monopoly games between two players, when each player owns one complete monopoly (e.g. all three orange properties, or all three yellow properties, etc.). The computer simulation will be complete with everything in the actual board game including going to jail, community chest and chance cards, mortgaging etc. The program assumes that each player builds until he/she runs out of money. The program takes as input a game scenario (e.g. player 1 owns all three orange properties, $500, and is on space 2; player 2 owns all three yellow properties, $500, and is on space 33; it is player 2’s turn), and computes both player’s percent chance of winning the game. (Each scenario would be played a lot of times, about 5000, in order to determine chance of winning for each player.) The variable I will test will be monopoly owned. I will pit a player owning each monopoly against a player owning every other monopoly, like a round Robin tournament. Furthermore, I will differ the other variables besides color group owned to simulate the many different situations that may arise in real monopoly games. Take for example when the orange monopoly is pitted against the yellow monopoly. I will increment each player’s money from $0 to $900 in $100 increments, start each player on every space of the board, and let each player go first once in each scenario, so that every combination of starting space for player 1, starting space for player 2, money owned by player 1, money owned by player 2, and who goes first is tried. (9 increments of $ for player 1)*( 9 increments of $ for player 2)*(40 spaces for player 1 to start on)* (40 spaces for player 2 to start on)*(2 players to go first)=259,200 different games that will be played to determine the percentage chance the orange monopoly has of winning when playing the yellow monopoly (and vice versa). Remember that a game is actually played out 5,000 to determine the chance each player has of winning that particular scenario. 259,200*5000=129,600,000. If running the program 129,600,000 times takes too long, I will only play each game 1,000 times, or start players only on the corners of the gameboard or something else to decrease the number of times the program has to run. The statistics gathered will be the average percentage chance of winning with each monopoly. (e.g. if a player who owns the green monopoly wins 60% of the time against a player owning the light purple monopoly, 60% against a player owning the light blues, 50% against a player owning the dark purples, 40% against a player owning the oranges, 55% against a player owning the reds, 60% against a player owning the yellows, and 40% against a player owning the dark blues, then the average percentage chance of winning with the green monopoly would be: (60%+60%+50%+40%+55%+60%+40% )/ 7 ) These statistics would be useful in rating each monopoly in terms of how likely a player is to win with it, which in turn, would help a player decide what properties to buy, and especially what trades to make. Do you know any monoply webpages/ resources and also: as part of my program, I must make an algorithim that decides when a player should build and how much etc. Do you have any suggestions in creating this building algorithim or anything else? (much of my project is done, and I can send it to you if you'd like) (also instead of running the program a million some times, I will randomly create starting positions and money for both players) Please email me any responses, thanks :) 15-Jun-1998 8:34:26-GMT,1060;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id CAA26325 for ; Mon, 15 Jun 1998 02:34:24 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from mailserver.idola.net.id by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 15 Jun 1998 03:27:43 EST Received: from mispura (smg-usr01-30.idola.net.id [202.152.5.29]) by mailserver.idola.net.id (8.8.5/8.8.5) with SMTP id PAA20511 for ; Mon, 15 Jun 1998 15:26:39 +0700 (JAVT) Date: Mon, 15 Jun 1998 15:26:39 +0700 (JAVT) Message-ID: <199806150826.PAA20511@mailserver.idola.net.id> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: litprog@SHSU.edu From: Pura Reply-To: LitProg@SHSU.edu, mispura@idola.net.id Subject: scratch disk memory dear sir, hoe to make a scratch disk memory in c (any c). best regard, irwanda f 15-Jun-1998 16:23:49-GMT,1055;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id KAA10250 for ; Mon, 15 Jun 1998 10:23:42 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 15 Jun 1998 11:10:52 EST From: David Martin Reply-To: LitProg@SHSU.edu, dmartin@cs.berkeley.edu Subject: nodefs/noindex for code chunks? Date: 15 Jun 1998 15:39:25 GMT Message-ID: <6m3f7d$h9o$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: LitProg@SHSU.edu I have a large noweb document that is split across several files. I have identifier cross-referencing working (using nodefs/noindex), but its seems that noweb will only cross-reference code chunks within a single noweb file. I am sure I'm wrong.... -David Martin 18-Jun-1998 19:45:41-GMT,874;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id NAA24296 for ; Thu, 18 Jun 1998 13:45:32 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 18 Jun 1998 14:32:31 EST Message-ID: <3589644E.F2E10521@isdn.net.il> Date: Thu, 18 Jun 1998 22:02:38 +0300 From: Omry Nachman Reply-To: LitProg@SHSU.edu, omen@isdn.net.il MIME-Version: 1.0 Subject: C++Builder 3 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: LitProg@SHSU.edu Does anyone no where i can find a good BCPPB book (level: intermidiate or expert) by the way, i alredy tried amazon.com 20-Jun-1998 12:23:43-GMT,64888;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id GAA05975 for ; Sat, 20 Jun 1998 06:23:40 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sat, 20 Jun 1998 07:15:03 EST From: thompson@sun1.coe.ttu.edu Subject: comp.programming.literate FAQ Date: 20 Jun 1998 11:42:48 GMT Message-ID: Reply-To: LitProg@SHSU.edu, thompson@sun1.coe.ttu.edu To: LitProg@SHSU.edu Archive-name: literate-programming-faq Last-modified: 1997/08/15 Version: 1.1.18 The Literate Programming FAQ David B. Thompson 15 August 1997 This document is for new and experienced users of literate programming tools. The purpose is to explain the concept of literate programming and to provide a resource for locating files of interest to literate programmers and those interested in literate programming. ______________________________________________________________________ Table of Contents: 1. Welcome 1.1. Disclaimer 1.2. Copyright 1.3. What's New? 2. Introduction or 3. How do I get the FAQ? 3.1. Literate Programming FAQ 3.2. FWEB FAQ 4. Is there a newsgroup? 5. What internet nodes are of interest to literate programmers? 6. What is Literate Programming? 7. How do I begin literate programming? 8. What literate programming tools are available? 8.1. APLWEB 8.2. AWEB 8.3. CLiP 8.4. CWEB 8.5. CWEBx3.0 8.6. mCWEB 8.7. FunnelWeb 8.8. FunnelWeb 3.0AC 8.9. FWEB 8.10. IMPACT 8.11. lit2x 8.12. Literate Programmer's Workshop (LPW) 8.13. MapleWEB 8.14. MWEB (Schrod/Detig) 8.15. MWEB (Sewell) 8.16. noweb 8.17. nuweb 8.18. ProTeX 8.19. RWEB 8.20. SchemeWEB 8.21. SpideryWEB 8.22. WEB 8.23. WinWordWEB 9. Are there other tools I should know about? 9.1. C2LaTeX 9.2. c2cweb 9.3. c2man 9.4. cnoweb 9.5. Fold2Web 9.6. Funnelweb Mode 9.7. noweb.el 9.8. nuweb.el 9.9. TIE 9.10. Web mode 10. What other resources are available? 10.1. World Wide Web 10.2. TeX Resources 11. Are there any code examples? 12. Bibliographies 13. How to anonymously ftp 14. Acknowledgements 15. End notes ______________________________________________________________________ 1. Welcome Information contained in this document is the best available at preparation. The original file was dated October 15, 1993 (just for historical purposes). 1.1. Disclaimer Disclaimer: ``This FAQ is presented with no warranties or guarantees of ANY KIND including correctness or fitness for any particular purpose. The author of this document has attempted to verify correctness of the data contained herein; however, slip-ups can and do happen. If you use this data, you do so at your own risk.'' 1.2. Copyright Copyright 1993-1997 by David B. Thompson. All rights reserved worldwide. Permission is granted to copy this document for free distribution so long as it remains intact and unmodified. For other arrangements, contact the author/maintainer via email: 1.3. What's New? o My email address has changed (once again). o Newsgroup is moderated. o Updated fweb entry. o Updated noweb entry. o Added mCWEB entry. o Updated c2cweb entry. o Updated nuweb.el entry. o Updated cLiP entry. o Updated Lee W's examples (from bart). o Last, but not least, new formatting of the FAQ. Many thanks go to Andrew Johnson for helping make this happen. 2. Introduction or ``What's this all about?'' This document is for new and experienced users of literate programming tools. The purpose is to explain the concept of literate programming and to provide a resource for locating files of interest to literate programmers and those interested in literate programming. The Literate Programming (LitProg) Frequently Asked Questions (FAQ) list is maintained by Dave Thompson Comments and constructive criticisms are welcome. Direct flames to /dev/null (or nul if you're a msdos user! ;-) If you find an error, please report it. I'm particularly interested in establishing the locations of generally available literate programming tools. If you are the author of such a tool and wish to have it included in this list, please send email. Please note this is a work-in-progress. It is not complete, and probably will never be complete. Nevertheless, the information contained herein may be useful to some. Use it as it is intended. 3. How do I get the FAQ? 3.1. Literate Programming FAQ You have many ways to get a current copy of this FAQ. One is to use anonymous ftp (if you don't know how, see a later section in this FAQ) to connect to one of the Comprehensive TeX Arvchive Network (CTAN) sites or the Literate Programming Archive and retrieve a copy of the file. Open an ftp connection to one of the CTAN sites and retrieve the file: help/LitProg-FAQ (For more information on CTAN and the literate programming archive, see the section below entitled ``Internet Nodes of Interest to Literate Programmers''.) 3.2. FWEB FAQ David Coker maintains the FWEB FAQ. The current version number is 1.30a. It can be retrieved in the same way as this FAQ. The FWEB FAQ exists in various formats, including HyperText (see other resources below). In Europe, the complete distribution can also be obtained from ftp.desy.de 131.169.10.115 in directory /pub/faq/web/fweb/. It is also available from the literate programming archive in the directory LPA/Documentation/faq/fweb (see the references to LPA below for more information). 4. Is there a newsgroup? One of the most important resources is the literate programming newsgroup, comp.programming.literate. Because of the amount of spamming and unrelated the posts, the newsgroup is now moderated. Posts to the newsgroup are now routed through litprog- mod@cs.virginia.edu. If your news reader does not post through this address, then you will be unable to post messages to the newgroup. You can read this newsgroup using your standard reader. 5. What internet nodes are of interest to literate programmers? The principal nodes of interest to literate programmers are the Literate Programming Archive (LPA hereafter) and the CTAN (Comprehensive TeX Archive Network). The Literate Programming Archive (LPA) is: Node: ftp.th-darmstadt.de [130.83.55.75] Directory: programming/literate-programming Notes: Fastest response during off-U.S. [yep] business hours. Participating hosts in the Comprehensive TeX Archive Network are: ftp.dante.de (Deutschland) -- anonymous ftp /tex-archive (/pub/tex /pub/archive) -- gopher on node sun.dante.de -- e-mail via ftpmail@dante.de -- Administrator: ftp.tex.ac.uk (England) -- anonymous ftp /tex-archive (/pub/tex /pub/archive) -- gopher on node gopher.tex.ac.uk -- NFS mountable from nfs.tex.ac.uk:/public/ctan/tex-archive -- World Wide Web access on www.tex.ac.uk -- Administrator: The site ftp.shsu.edu used to be the American CTAN site. Apparently, that site has fallen into disrepair and should not be considered a primary source for either TeX related or literate programming related material. For the record, the address is: ftp.shsu.edu (Texas, USA) -- anonymous ftp and gopher /tex-archive (/pub/tex /pub/archive) -- NFS mountable from ftp.SHSU.edu:/pub/ftp/tex-archive -- e-mail via ftpmail@ftp.SHSU.edu -- World Wide Web access on www.SHSU.edu -- Administrator: A list of CTAN archive sites and their mirrors can be found on: ftp.dante.de:/tex-archive/CTAN.sites I presume that the other CTAN sites mirror this file, but have not checked. As of my last check (September 1994), it contains: "In order to reduce network load, it is recommended that you use the Comprehensive TeX Archive Network (CTAN) host which is located in the closest network proximity to your site." Known partial mirrors of the CTAN reside on (alphabetically): dongpo.math.ncu.edu.tw (Taiwan) /tex-archive ftp.adfa.oz.au (Australia) /pub/tex/ctan ftp.muni.cz (The Czech Republic) /pub/tex/CTAN ftp.cs.ruu.nl (The Netherlands) /pub/tex-archive ftp.uu.net (Virginia, USA) /pub/text-processing/TeX nic.switch.ch (Switzerland) /mirror/tex Known mirrors of the CTAN reside on (alphabetically): ftp.center.osaka-u.ac.jp (Japan) /CTAN ftp.ccu.edu.tw (Taiwan) /pub/tex ftp.cs.rmit.edu.au (Australia) /tex-archive ftp.duke.edu (North Carolina, USA) /tex-archive ftp.germany.eu.net (Deutschland) /pub/packages/TeX ftp.gwdg.de (Deutschland) /pub/dante ftp.jussieu.fr (France) /pub4/TeX/CTAN ftp.loria.fr (France) /pub/unix/tex/ctan ftp.mpi-sb.mpg.de (Deutschland) /pub4/tex/mirror/ftp.dante.de ftp.uni-bielefeld.de (Deutschland) /pub/tex ftp.uni-stuttgart.de (Deutschland) /tex-archive (/pub/tex) ftpserver.nus.sg (Singapore) /pub/zi/TeX src.doc.ic.ac.uk (England) /packages/tex/uk-tex sunsite.unc.edu (North Carolina, USA) /pub/packages/TeX wuarchive.wustl.edu (Missouri, USA) /packages/TeX Other nodes and directories of interest include: Node: ftp.desy.de [131.169.10.115] Directory: pub/web. Various documents, samples, and the FWEB FAQ. Notes: Has a www server, http://info.desy.de:80/ 6. What is Literate Programming? Literate programming is the combination of documentation and source together in a fashion suited for reading by human beings. In fact, literate programs should be enjoyable reading, even inviting! (Sorry Bob, I couldn't resist!) In general, literate programs combine source and documentation in a single file. Literate programming tools then parse the file to produce either readable documentation or compilable source. The WEB style of literate programming was created by D.E. Knuth during the development of his TeX typsetting software. All the original work revolves around a particular literate programming tool called WEB. Knuth says: The philosophy behind WEB is that an experienced system pro- grammer, who wants to provide the best possible documenta- tion of his or her software products, needs two things simultaneously: a language like TeX for formatting, and a language like C for programming. Neither type of language can provide the best documentation by itself; but when both are appropriately combined, we obtain a system that is much more useful than either language separately. The structure of a software program may be thought of as a web that is made up of many interconnected pieces. To docu- ment such a program we want to explain each individual part of the web and how it relates to its neighbours. The typo- graphic tools provided by TeX give us an opportunity to explain the local structure of each part by making that structure visible, and the programming tools provided by languages such as C or Fortran make it possible for us to specify the algorithms formally and unambigously. By combin- ing the two, we can develop a style of programming that max- imizes our ability to perceive the structure of a complex piece of software, and at the same time the documented pro- grams can be mechanically translated into a working software system that matches the documentation. Another author (Eric W. van Ammers) wrote me a short article treating his opinions on literate programming. The text follows: First observation on LP About 90% of the disussion on this list is about problems with applying some WEB-family member to a particular programming language or a special documentation situation. This is ridiculous, I think. Let me explain shortly why. Lemma 1: I have proposed for many years that programming has nothing to do with programming langauges, i.e. a good programmer makes good programs in any language (given some time to learn the syntax) and a bad programmer will never make a good program, no matter the language he uses (today many people share this view, fortunately). Lemma 2: Literate Programming has (in a certain way not yet completely understood) to do with essential aspects of programming. Conclusion 1: A LP-tool should be independent of programming language. Lemma 3: It seems likely that the so called BOOK FORMAT PARADIGM ref. 1 plays an important role in making literate programs work. Lemma 4: There are very many documentation systems currently being used to produce documents in the BOOK FORMAT. Conclusion 2: A LP-tool should be independent of the documentation system that the program author whishes to use. My remark some time ago that we should discuss the generic properties of an LP-tool was based on the above observation. References 1 Paul W. Oman and Curtus Cook. ``Typographical style is more than cosmetic.'' CACM 33, 5, 506-520 (May 1990) Second observation on LP The idea of a literate program as a text book should be extendend even further. I would like to see a literate program as an (in)formal argument of the correctness of the program. Thus a literate program should be like a textbook on mathematicics. A mathematical textbook explains a theory in terms of lemma and theorems. But the proofs are never formal in the sense that they are obtaind by symbol manipulation of a proof checker. Rather the proofs are by so called ``informal rigour'', i.e. by very precise and unambiguous sentences in a natural language. Eric W. van Ammers Department of Computer Science Wageningen Agricultural University Dreijenplein 2 E-mail: ammers@rcl.wau.nl 6703 HB Wageningen voice: +31 (0)8370 83356/84154 The Netherlands fax: +31 (0)8370 84731 Another author (Norman Ramsey) wrote me and asked that his opinions be included in the FAQ. What follows are Norman's comments verbatim. I see it's time for the ``how is literate programming dif- ferent from verbose commenting'' question. Perhaps David Thompson will get this into the FAQ. Alert! What follows are my opinions. In no way do I claim to speak for the (fractious) literate-programming community. How is literate programming different from verbose commenting? There are three distinguishing characteristics. In order of importance, they are: o flexible order of elaboration o automatic support for browsing o typeset documentation, especially diagrams and mathematics Flexible order of elaboration means being able to divide your source program into chunks and write the chunks in any order, independent of the order required by the compiler. In principle, you can choose the order best suited to explaining what you are doing. More subtly, this discipline encourages the author of a literate program to take the time to consider each fragment of the program in its proper sphere, e.g., not to rush past the error checking to get to the ``good parts.'' In its time and season, each part of the program is a good part. (This is the party line; your mileage may vary.) I find the reordering most useful for encapsulating tasks like input validation, error checking, and printing output fit for humans --- all tasks that tend to obscure ``real work'' when left inline. Reordering is less important when using languages like Modula-3, which has exceptions and permits declarations in any order, than when using languages like C, which has no exceptions and requires declaration before use. Automatic support for browsing means getting a table of contents, index, and cross-reference of your program. Cross-reference might be printed, so that you could consult an index to look up the definition of an identifier `foo'. With good tools, you might get a printed mini-index on every page if you wanted. Or if you can use a hypertext technology, cross-reference might be as simple as clicking on an identifier to reach its definition. Indexing is typically done automatically or `semi- automatically', the latter meaning that identifier definitions are marked by hand. Diligently done semi- automatic indexes seem to be best, because the author can mark only the identifiers he or she considers important, but automatic indexing can be almost as good and requires no work. Some tools allow a mix of the two strategies. Some people have applied literate-programming tools to large batches of legacy code just to get the table of contents, index, and cross-reference. I don't use diagrams and mathematics very often, but I wouldn't want to have to live without them. I have worked on one or two projects where the ability to use mathematical formulae to document the program was indispensible. I also wouldn't like to explain some of my concurrent programs without diagrams. Actually I write almost all of my literate programs using only sections headers, lists, and the occasional table. >Wouldn't it be easier to do one's literate programming using >a wysiwyg word processor (e.g. Word for Windows) and >indicate what is source code by putting it in a different >font? The data formats used in wysiwyg products are proprietary, and they tend to be documented badly if at all. They are subject to change at the whim of the manufacturer. (I'll go out on a limb and say there are no significant wysiwyg tools in the public domain. I hope the Andrew people will forgive me.) These conditions make it nearly impossible to write tools, especially tools that provide automatic indexing and cross-reference support. The CLiP people have a partial solution that works for tools that can export text --- they plant tags and delimiters throughout the document that enable the reordering transformation (``tangling''). People use TeX, roff, and HTML because free implementations of these tools are widely available on a variety of platforms. TeX and HTML are well documented, and TeX and roff are stable. TeX is the most portable. I think I have just answered the FAQ ``how come all these tools use TeX, anyway?'' :-) Norman Ramsey 7. How do I begin literate programming? A recommended book is D.E. Knuth's collection of articles (1992) Literate Programming. Center for the Study of Language and Information, Stanford University, ISBN 0-937073-80-6 (pbk). This book gives insight into Knuth's thoughts as he developed the web system of literate programming (and TeX for typesetting). It does not document methods for literate programming. A recommended book is Wayne Sewell's (1989) Weaving a Program: Literate Programming in WEB. Van Nostrand Reinhold, ISBN 0-442-31946-0 (pbk). This book focuses on using Knuth's web system. Some talk exists in the newsgroup/mailing list for a Usenet University course in literate programming. I'm sure discussion of this topic will be welcomed. If you are interested, please participate. 8. What literate programming tools are available? A significant number of tools for literate programming are available. Most have been ported from their original systems, so support multiple computer platforms. If you are the developer of such a tool, and would like to make the software freely available, please send me email and I'll reply with a form (like those below) for you to fill in. (Or short-circuit the process and kludge a form from below. :-) 8.1. APLWEB Developer: Christoph von Basum Version: Unknown Hardware: MSDOS Languages: IBM APL2 and STSC APL Formatter: Plain TeX Availability: Anonymous ftp from: LPA:/apl watserv1.uwaterloo.ca:/languages/apl/aplweb Readme: Unknown Description: None available. Support: Unknown Note: The status of this particular package is unknown. 8.2. AWEB Developer: Unknown Version: Unknown Hardware: Unknown Languages: Ada Formatter: Unknown Availability: Anonymous ftp from: LPA:/ada/web Readme: Unknown Description: None available Support: Not supported. 8.3. CLiP Developer: E.W. van Ammers and M.R. Kramer Versions: 2.0 and 2.4b (DOS only) Platform: Vax/VMS, Unix, DOS Languages: Any programming language Formatter: Any formatter (TeX, LaTeX, Troff, Runoff, HTML, etc) or any wordprocessor including WYSIWYG systems (Word Perfect, WinWord, Ami Pro, Word Pro, etc.) Availability: Anonymous ftp from: sun01.info.wau.nl:/CLIP/ms_dos DOS sun01.info.wau.nl:/CLIP/ms_dos_24b DOS (v. 2.4b) sun01.info.wau.nl:/CLIP/vax_vms VAX/VMS sun01.info.wau.nl:/CLIP/unix Unix CTAN:/web/clip LPA:/machines/ms-dos LPA:/machines/vax Readme: With bundle above Description: CLiP does not use explicit commands to perform the extraction process. Rather it recognizes pseudostatements written as comments in the programming language in question. CLiP distinguishes pseudostatements from ordinary comments because the former comply with a particular style. This style can be adjusted to suit virtually any programming language. The CLiP approach to LP makes the system extremely versatile. It is independent of programming language and text processing environment. We designed CLiP to be compatible with hypertext systems as well. Some hypertext examples are at ftp://sun01.info.wau.nl/clip/html/queens.htm ftp://sun01.info.wau.nl/clip/html/pal1.htm Features: + CLiP imposes virtually no limitations on the text-processing system used to produce the documentation. If the text-processor supports these items you can + structure the documentation according to your own taste. + include drawings, pictures, tables etc. + disclose your documentation my means of X-ref tables, Indexes, Table of contents, Table of tables, Table of figures, etc. + typeset the documented code. + Extracts any number of modules from a maximum of 64 source files. + No pretty-printing. Code from the source files is copied "as is" to the module. + Appearance of code segments in the documentation matches those of the modules to ease the identification of code segments. + Supports partially specified data types. + Comprehensive user manual (preliminary version) and technical description. - No automatic generation of a X-ref table for program identifiers. Support: Bugs, problems and assistance by e-mail to Eric.vanAmmers@user.info.wau.nl 8.4. CWEB Developer: Silvio Levy and D.E. Knuth Version: 3.0 Hardware: Unix systems (dos and amiga ports available) Languages: C and C++ Formatter: Plain TeX and LaTeX. Availability: Anonymous ftp from: labrea.stanford.edu:/pub/cweb LPA:/c.c++ CTAN:/web/c_cpp/cweb DOS version in CTAN:/web/c_cpp/cwb30p8c DOS version in LPA:/machines/ms-dos Amiga version CTAN:/web/c_cpp/AmigaCWEB Mac port of CTANGLE in LPA:/machines/mac LaTeX support in LPA:/c.c++ Readme: Bundled with above Description: No description provided. Support: Bugs to levy@math.berkeley.edu 8.5. CWEBx3.0 Developer: Marc van Leeuwen Version: Unknown Hardware: Any system using ASCII code Languages: ANSI C Formatter: Plain TeX Availability: Anonymous ftp from: ftp.cwi.nl/pub/cweb Readme: Bundled with above Brief description: A modified implementation of CWEB, with some extensions. Provides a mode for full compatibility with Levy/Knuth CWEB. The most significant extras are: - Typedef declarations affect formatting througout source file - Include files are scanned for typedef definitions - Flexible selection of layout style - Possibility to refer to sections using symbolic labels - CTANGLE detects unbalanced braces and parentheses - CWEAVE can be made to report syntax errors more easily - Some additional mechanisms to avoid formatting problems - New and modular set of grammar rules, based on ANSI C syntax - Possibility to suppress #line directives - A new manual Support: bugs and remarks to M.van.Leeuwen@cwi.nl 8.6. mCWEB Developer: Markus Oellinger Version: 1.0 Hardware: Unix Languages: C/C++ Formatter: plainTeX Availability: anonymous ftp from ist.tu-graz.ac.at:/pub/utils/litprog/mcweb/mcweb.tgz Readme: at same location Description: This is mCWEB 1.0, a descendant of the CWEB system of structured documentation by Donald E. Knuth and Silvio Levy. It adds some features that are indispensable when working in a team. mCWEB regards a project of a book consisting of several chapter files. By means of import and export commands, it automatically manages all relationships between the chapters of a book and to other books. Interface documentation is now also part of mCWEB. It is extracted into a second TeX file. This makes it possible to define well known interfaces between the individual parts of a project that will be implemented by different persons. In addition, mCWEB parses C header files to find out about all the datatypes defined there. mCWEB comes with a full completely rewritten user manual and is compatible with CWEB. Support: Institute of Software Technology moell@ist.tu-graz.ac.at 8.7. FunnelWeb Developer: Ross N. Williams: ross@guest.adelaide.edu.au Version: Unknown Hardware: MSDOS, Mac, VMS, Sun. Other ports reported. Languages: No restrictions. Formatter: Plain TeX for printing. Otherwise, no restrictions. Availability: Anonymous ftp from: CTAN:/web/funnelweb LPA:/independent ftp.adelaide.edu.au:/pub/funnelweb Readme: With bundle above. Description: FunnelWeb is a production-quality literate-programming tool that emphasises simplicity and reliability. Everything about FunnelWeb, from the simplicity of its language to the comprehensive tutorial in the user's manual, has been designed to make this as simple, as practical, and as usable a tool as possible. Features: + Provides a simple macro preprocessor facility. + Can produce typeset documentation. + Runs on Sun, VMS VAX, Macintosh, PC, and others. + Portable C source code distributed under GNU licence. + Comprehensive user's manual including tutorial. + Programming-language independent. + Can generate multiple output files. + Allows complete control over the output text. + Regression test suite with over 200 tests. + Fully worked example (in /pub/funnelweb/examples). - Requires TeX to produce typeset documentation. - Typesets program code using TT font only. Support: No formal support available. Mailing list maintained with about 50 subscribers. Informal assistance available from mailing list. 8.8. FunnelWeb 3.0AC Developer: Enhanced by A.B.Coates (coates@physics.uq.edu.au) from FunnelWeb v3.0 by Ross N. Williams (ross@guest.adelaide.edu.au) Version: 3.0AC Hardware: MSDOS, Mac, VMS, Sun, OSF/1, Linux, Sys.V, OS/2. Languages: No restrictions. Formatter: Tex, LaTeX, or HTML. Availability: Anonymous ftp from ftp.physics.uq.oz.au:/pub/funnelwebAC30.tar.gz Readme: With bundle above; for FunnelWeb manual see WWW page http://www.physics.uq.oz.au:8001/people/coates/funnelweb.html Description: FunnelWeb 3.0AC is an enhanced version of FunnelWeb (see the entry for FunnelWeb). FunnelWeb is designed to be typesetter independent, though FunnelWeb v3.0 only supports (La)TeX as the typesetter. FunnelWeb 3.0AC also supports HTML, and creates appropriate hypertext links within the document among the code sections. FunnelWeb 3.0AC also supports automatic and manual insertion of line directives, so that compiler errors can be flagged back to the original FunnelWeb source file. FunnelWeb 3.0AC is completely compatible with FunnelWeb v3.0 sources (with one minor exception; see the file README.ABC which comes with the FunnelWeb 3.0AC distribution). Support: Supported by A.B.Coates (coates@physics.uq.edu.au), subject to the time constraints imposed by his thesis. 8.9. FWEB Developer: John A. Krommes Version: 1.53 (1.60-beta for the experienced, patient, and brave) Hardware: Unix, VMS, and DOS platforms (anything with ANSI C) Languages: C, C++, Fortran-77, Fortran-90, Ratfor, TeX; also, a language-independent mode. Formatter: LaTeX. Plain TeX may work, but is no longer supported. Availability: Anonymous ftp from: ftp.pppl.gov:/pub/fweb CTAN:/web/fweb LPA:/fweb DOS version in LPA:/machines/ms-dos Readme: In bundle with above. Description: It also has a well-developed user's manual and its own FAQ (see above). Beginning with 1.40, documentation is maintained in gnu texinfo format. It runs on most platforms: VMS, PC, UNIX, and pretty much anything that the GNU C compiler (GCC) is supported for. Features: + Processes multiple languages during a single run (so one can mix C and Fortran, for example). + Language-independent mode (v1.40). + Ability to turn off pretty-printing (v1.40). + Built-in Ratfor translator. + Built-in macro preprocessor (closely follows ANSI C, with extensions). + A style file that allows the user to adjust many parameters and behavior patterns of FWEB. + Various operator-overloading features that provide additional pretty-printing capabilities to languages such as C++ and Fortran-90. + Numerous miscellaneous features and command-line options. Support: Bug reports and suggestions to krommes@princeton.edu 8.10. IMPACT Developer: Timothy Larkin, from Levy/Knuth CWEB 3.1 Version: 1.0 Hardware: Macintosh; requires AppleEvents. Languages: C, C++ Formatter: TeX Availability: CTAN archives Readme: A short readme file is included in the SEA archive. Description: IMPACT implements CTangle from the Levy/Knuth CWEB 3.1. It operates as a foreground program, tangling files selected from the Mac File Picker. Or it can operate in the background, tangling files in response to odoc events sent by other applications, such as editors. Support: I welcome any reports of bugs. The product will be updated as new versions of the CWEB appear. Other features may be added as users suggest them. 8.11. lit2x Developer: Unknown Version: Unknown Hardware: Unknown Languages: Unknown Formatter: Unknown Availability: Anonymous ftp from: LPA:/independent Readme: Unknown Description: None available Support: Unknown 8.12. Literate Programmer's Workshop (LPW) Developer: Norbert Lindenberg Version: 1.1 Hardware: Apple Macintosh Languages: C++, Object Pascal & others Formatter: self-contained WYSIWYG system Availability: Anonymous ftp from: LPA:/machines/mac CTAN:/web/lpw ftp.apple.com:/pub/literate.prog Readme: With bundle above. Also comes with 38-page manual. Description: The Literate Programming Workshop is an environment for the integrated development of program source text and documentation in combined documents. It consists of a WYSIWYG word processor based on a style sheet approach, a mechanism to extract parts of the text in a document, and a project management system that handles multi-document projects. The system is designed to be used in conjunction with the Macintosh Programmer's Workshop: it prepares raw source text for the MPW compilers, accepts MPW error messages, and shows them in the context of the original documents. Automatic indexing and hypertext features allow for easy access to both source text and documentation. LPW is shareware. Support: Bugs, problems, and questions to lpw@aol.com. 8.13. MapleWEB Developer: Unknown Version: Unknown Hardware: Unknown Languages: Maple Formatter: Unknown Availability: Anonymous ftp from: LPA:/maple Readme: Unknown Description: None Support: Unknown 8.14. MWEB (Schrod/Detig) Developer: Joachim Schrod Version: Unknown Hardware: Unknown Languages: Modula-2 Formatter: Unknown Availability: Anonymous ftp from: LPA:/modula-2 Readme: Unknown Description: None Support: Not supported. 8.15. MWEB (Sewell) Developer: Sewell Version: Unknown Hardware: Unknown Languages: Modula-2 Formatter: Unknown Availability: Anonymous ftp from: LPA:/modula-2 Readme: Unknown Description: None Support: Not supported. 8.16. noweb Developer: Norman Ramsey Version: 2.8 Hardware: Unix and DOS platforms (DOS binaries available for v2.7). Languages: All programming languages, singly or in combination. Automatic indexing for C, Icon, Pascal, Standard ML, TeX, Yacc Formatter: Plain TeX, LaTeX, and HTML formatters. Will convert LaTeX to HTML automatically. Availability: Anonymous ftp from: CTAN:/web/noweb LPA:/independent Last recourse, use ftp.cs.virginia.edu:pub/nr Readme: With bundle above, or see the noweb home page: http://www.cs.virginia.edu/~nr/noweb Those without ftp access can consult ``Literate Programming Simplified,'' IEEE Software, September 1994, pp97-105. Description: noweb is designed to meet the needs of literate programmers while retaining the simplest possible input format. Its primary advantages are simplicity, extensibility, and language-independence. noweb uses 5 control sequences to WEB's 27. The noweb manual is only 3 pages; an additional page explains how to customize its LaTeX output. noweb works ``out of the box'' with any programming language, and supports TeX, latex, and HTML back ends. A back end to support full hypertext or indexing takes about 250 lines; a simpler one can be written in 40 lines of awk. The primary sacrifice relative to WEB is that code is not prettyprinted. noweb supports indexing and identifier cross-reference, including hypertext ``hot links.'' noweb includes a simple, efficient LaTeX-to-HTML converter, so you can use hypertext browsers on your legacy documents. noweb can also process nuweb programs, so you can use noweb to convert a standard nuweb program to HTML with one command. Support: email to the author 8.17. nuweb Developer: Preston Briggs: preston@cs.rice.edu Version: 0.87 Hardware: Unix systems: Sparcs, RS/6000s, HPs; (!) MSDOS and Amiga. Languages: Any programming language or combination of programming languages. Formatter: Latex Availability: Anonymous ftp from: Unix: CTAN:/web/nuweb DOS: CTAN:/web/nuweb-pc LPA:/independent Amiga: CTAN:/web/nuweb/nuweb_ami Amiga: wuarchive.wustl.edu/pub/aminet Readme: Send mail to preston@cs.rice.edu Description: A single program that takes a web file written in a combination of latex and any programming language(s) and produces a latex file that can be pretty printed and a set of files containing code for compilation/interpretation by the appropriate language processors. Strengths include speed, simplicity, multiple languages, nice indices and cross-references, latex. Doesn't require any special macros or macro files. Drawbacks: latex-dependent, no code pretty printing, harder to make indices than cweb. More good stuff: nice support for make, doesn't reformat source files, so they're easy to debug. Lots of control without too much effort. That is, it doesn't do too much! Future directions... Very little change planned, except perhaps refinements in the indexing software. Support: Hack it yourself or send e-mail to preston@cs.rice.edu 8.18. ProTeX Developer: Eitan Gurari Version: ProTeX 1.1, AlProTeX 1.4 Hardware: Any platform with (La)TeX Languages: Any language Formatter: TeX or LaTeX Availability: Anonymous ftp from: ftp.cis.ohio-state.edu : pub/tex/osu/gurari/ LPA:/independent Readme: With bundle above Description: + Easy to use + Extensible + Language independent + Multiple output files + Fast (single compilation provides output and dvi files) + No installation is needed besides copying the files (written in TeX) Introduction of main features and examples in pub/tex/osu/gurari/LitProg Complete manual in Eitan M. Gurari, "TeX and LaTeX: Drawing and Literate Programming", McGraw-Hill, 1994 Support: gurari@cis.ohio-state.edu 8.19. RWEB Developer: Unknown Version: Unknown Hardware: Unknown Languages: Unknown Formatter: Unknown Availability: Anonymous ftp from: LPA:/reduce Readme: Unknown Description: Web generator in AWK. Support: Unknown 8.20. SchemeWEB Developer: John D. Ramsdell Version: 2.1 Hardware: Unix and DOS platforms Languages: Any dialect of Lisp. Formatter: LaTeX. Availability: The Unix version is in the Scheme Repository and it is available via anonymous ftp from: cs.indiana.edu:/pub/scheme-repository/utl/schemeweb.sh LPA:/lisp CTAN:/tex-archive/web/schemeweb The DOS version is part of the PCS/Geneva Scheme system which is available via anonymous ftp from: cui.unige.ch:/pub/pcs LPA:/machines/ms-dos Readme: In bundle with above. Description: SchemeWEB is a Unix filter that allows you to generate both Lisp and LaTeX code from one source file. The generated LaTeX code formats Lisp programs in typewriter font obeying the spacing in the source file. Comments can include arbitrary LaTeX commands. SchemeWEB was originally developed for the Scheme dialect of Lisp, but it can easily be used with most other dialects. Support: Bug reports to ramsdell@mitre.org. 8.21. SpideryWEB Developer: Norman Ramsey Version: Unknown Hardware: Unix and DOS platforms Languages: Most Algol-like languages, including C, Ada, Pascal, Awk, and many others. Formatter: Plain TeX and latex for text formatters. Availability: Anonymous ftp from: CTAN LPA:/spiderweb Readme: In distribution. Description: A system for building language-dependent WEBs. Spider is frozen; no further development is planned. Support: Bug reports to spider-bugs@oracorp.com. 8.22. WEB Developer: Donald Knuth Version: Unknown Hardware: Unknown Languages: Pascal Formatter: TeX (of course! ;-) Availability: Anonymous ftp from: LPA:/pascal Readme: Unknown Description: This is the original software that started it all. The original TeX processor was written in WEB. Support: None known. 8.23. WinWordWEB Developer: Lee Wittenberg Version: Unknown Hardware: Needs Microsoft Word for Windows, v.2.x, and, of course, MS-Windows 3.x. Languages: Any programming language. Formatter: Word for Windows 2.x for text formatting and file maintenance. Availability: Anonymous ftp from: bart.kean.edu:pub/leew LPA:/machines/ms-dos World-Wide Web (WWW) Readme: WORDWEB.DOC in the downloadable package describes the system. Description: WinWordWEB is a set of a Word for Windows macros (plus a paragraph style) that provide a crude literate programming environment. The ``look and feel'' of the system is based on Norman Ramsey's noweb, but can easily be modified to suit individual tastes. Support: None. WinWordWEB was written as a prototype to see if a WYSIWYG literate programming system was possible. It is intended as a jumping off point for future work by others. However, the system is surprisingly usable as it stands, and the author is interested in hearing from users (satisfied and dissatisfied). Anyone interested in actively supporting (and improving) the product should contact the author via email. 9. Are there other tools I should know about? First of all, I'll list some not-quite-literate-programming tools. Some may consider these to be pretty-printers. Others may call them literate programming tools. In any event, they don't seem to be quite in the same category as the tools listed above, so I'll include them here. 9.1. C2LaTeX Developer: John D. Ramsdell Version: Unknown Hardware: Unix Languages: C Formatter: LaTeX but it's easy to change the formatter. Availability: Anonymous ftp from omnigate.clarkson.edu:/pub/tex/tex-programs/c2latex. Readme: Absent. Documentation is in the C source for c2latex. Description: C2latex provides simple support for literate programming in C. Given a C source file in which the comments have been written in LaTeX, c2latex converts the C source file into a LaTeX source file. It can be used to produce typeset listings of C programs and/or documentation associated with the program. C2latex produces LaTeX source by implementing a small number of rules. A C comment that starts at the beginning of a line is copied unmodified into the LaTeX source file. Otherwise, non-blank lines are surrounded by a pair of formatting commands (\begin{flushleft} and \end{flushleft}), and the lines are separated by \\*. Each non-blank line is formatted using LaTeX's \verb command, except comments within the line are formatted in an \mbox. Support: Send bug reports to ramsdell@mitre.org. 9.2. c2cweb Developer: Werner Lemberg Version: 1.5 Hardware: DOS, OS/2, Unix (gcc) - CWEB source included Languages: C, C++ Formatter: TeX Availability: Anonymous ftp from CTAN:/web/c_cpp/c2cweb Readme: In distribution. Description: c2cweb will transform plain C or C++ code into a CWEB file to get a pretty formatted output. A modified CWEAVE (which transforms the CWEB file into a TeX file, see below) is included also. Support: Werner Lemberg 9.3. c2man language: C, nroff, texinfo, latex, html package: c2man version: 2.0 patchlevel 33 parts: documentation generator (C -> nroff -man, -> texinfo, ->latex, -> html) author: Graham Stoney location: ftp from any comp.sources.misc archive, in volume42 (the version in the comp.sources.reviewed archive is obsolete) ftp /pub/Unix/Util/c2man-2.0.*.tar.gz from dnpap.et.tudelft.nl Australia: ftp /usenet/comp.sources.misc/volume42/c2man-2.0/* from archie.au N.America: ftp /usenet/comp.sources.misc/volume42/c2man-2.0/* from ftp.wustl.edu Europe: ftp /News/comp.sources.misc/volume42/c2man-2.0/* from ftp.irisa.fr Japan: ftp /pub/NetNews/comp.sources.misc/volume42/c2man-2.0/* from ftp.iij.ad.jp Patches: ftp pub/netnews/sources.bugs/volume93/sep/c2man* from lth.se description: c2man is an automatic documentation tool that extracts comments from C source code to generate functional interface documentation in the same format as sections 2 & 3 of the Unix Programmer's Manual. It requires minimal effort from the programmer by looking for comments in the usual places near the objects they document, rather than imposing a rigid function-comment syntax or requiring that the programmer learn and use a typesetting language. Acceptable documentation can often be generated from existing code with no modifications. conformance: supports both K&R and ISO/ANSI C coding styles features: + generates output in nroff -man, TeXinfo, LaTeX or HTML format + handles comments as part of the language grammar + automagically documents enum parameter & return values + handles C (/* */) and C++ (//) style comments - doesn't handle C++ grammar (yet) requires: yacc/byacc/bison, lex/flex, and nroff/groff/texinfo/LaTeX. ports: Unix, OS/2, MSDOS, VMS. portability: very high for unix, via Configure status: actively developed; contributions by users are encouraged. discussion: via a mailing list: send "subscribe c2man " (in the message body) to listserv@research.canon.oz.au help: from the author and other users on the mailing list: c2man@research.canon.oz.au announcements: patches appear first in comp.sources.bugs, and then in comp.sources.misc. updated: 1994/10/07 9.4. cnoweb Developer: Jim Fox Version: 1.4 (January 4, 1991) Hardware: Anything with C and TeX. Languages: C Formatter: Plain TeX. Availability: Anonymous ftp from: CTAN LPA:/c.c++ Readme: Unknown, cnoweb.tex contains documentation. Description: cnoweb is as it's name describes: write C, not web. No tangling or weaving is implemented. Documentation (between standard /* */ delimiteres) is written in TeX. cnoweb provides typesetting of documentation, an table of contents of routines, and pretty-printing of C source. Support: None known. 9.5. Fold2Web Developer: Bernhard Lang Version: V0.8 Hardware: MSDOS Languages: All (must allow comment lines) Formatter: LaTeX Availability: Anonymous ftp from: kirk.ti1.tu-harburg.de (134.28.41.50) /pub/fold2web/readme /pub/fold2web/fold2web.zip Readme: In distribution Description: The idea behind the Fold2Web tool is the following: A programmer can write his program source with a folding editor and later map the folded source files automatically to WEB-files. The generated WEB-files can then be modified by inserting required documentations. The advantage by starting program developement with original sources is to get short design cycles during the compile/debug steps. By using a folding editor the global structuring information can be already captured in folds during this developement phase. Fold information is typically stored in comment lines and thus will not affect the efficiency of the compile/debug design cycle. Some folding editors and a folding mode for the emacs are available (e.g. see our FUE folding editor for MSDOS machines which is a modified micro emacs. Pick it at kirk in directory /pub/fold2web). After reaching a stable version of a program source its time to convert the source file to a WEB-file and do the program documentation. Fold2Web is written to convert folded source text of any programming language to nuweb files. The folded structure is kept by mapping folds to scraps. Fold markers which differ between languages due to different ways of specifying comments can be configured for each language. Good results can also achived when given but poor documented program sources have to be modified. Such sources can be folded using a folding editor to extract the global structures. This offers a global view to the program structures and help to understand its functionality. Furthermore the program code is not affected, only comment lines are inserted. Once folded the program source can be automatically translated to a WEB document using the above tool. Support: email to lang@tu-harburg.d400.de 9.6. Funnelweb Mode Developer: Daniel Simmons Version: Unknown Availability: http://www.miscrit.be/~ddw Description: The other day I did a quick hack to nuweb.el as included with the nuweb distribution so as to make a funnelweb-mode.el. I've only used it briefly, and I'm sure that it can be improved quite a bit. I've been thinking about adding support for folding on sections, a pull-down menu to select macro definitions (like the recent functions posted to gnu.emacs.sources for a C function definition pull-down menu) and some kind of tags support for funnelweb. Support: Unknown 9.7. noweb.el Developer: Bruce Stephens Version: Unknown. Availability: LitProg archives (in an email message). Description: This is a very simple mode I just hacked up. There's a lot wrong with it, but I thought others may be interested, even as it stands. It *requires* text properties, and assumes those used in GNU Emacs 19.22; it'll quite likely work with Lucid Emacs, but I haven't tried it. I use it with auctex8.1 and cc-mode 3.229, both of which are loaded separately (I think my emacs is dumped with them, in fact). The idea is to have one mode (which calls itself c-mode, but actually has LaTeX-mode keybindings) generally (this means that the code is hilighted nicely), and have the code chunks use a different keymap. Support: Email to bruce@liverpool.ac.uk 9.8. nuweb.el Developer: Dominique de Waleffe Version: 1.99 Availability: Anonymous ftp from: LPA CTAN Description: Provides a major mode extending Auctex for editing nuweb files. Main features (in 2.0): - Edit scrap bodies in a separate buffer in a different mode (selected using emacs defaults for files, specific indication -*-mode-*-, or a buffer-local variable) - Extends Auctex commands so that nuweb is called before LaTeX, - Easy navigation on scrap definition and use points. - Now creates an imenu (C-M-mouse1) with user index entries, macro definition positions and file definition positions. Support: Email to ddw@acm.org 9.9. TIE Developer: Unknown Version: Unknown Hardware: Unknown Availability: Anonymous ftp from: LPA:/Tools Readme: Unknown Description: This software merges change files. Support: Unknown 9.10. Web mode Developer: Bart Childs Version: Unknown Tools supported: web, fweb, cweb, funnelweb Availability: Anonymous ftp from ftp.cs.tamu.edu:pub/tex-web/web/EMACS.web-mode thrain.anu.edu.au:pub/web/EMACS.web-mode Description: This version works with versions 18 and 19 of Emacs to be best of my knowledge. I have cleaned up a number of documentation items ... In the same directory is wm_refcard.tex which is an edited version of the famous one to include some web-mode commands. The files limbo* are related to its use and notice that half them have an uppercase L in them for LaTeX. The setup is based upon the fact that we (I am not alone here) primarily use FWEB for C and Fortran programming. We are using version 1.40 of FWEB although John Krommes warns that it is not mature and the manual is not yet updated. The info files are! We are using LaTeX almost exclusively. That will likely change and we will revert to version 1.30 if the final form of 1.40 cannot return to the simple section numbers and avoid the HORRIBLE LATEX 0.1.7.2.4.6 type section numbers. Support: Unknown 10. What other resources are available? 10.1. World Wide Web An untapped resource (by me anyway ;-) is the World Wide Web. Marcus Speh has expended considerable effort in this regard. If you're connected to WWW, then access: http://info.desy.de:80/user/projects/LitProg.html If you aren't connected to WWW, telnet to info.cern.ch and explore. You can reach Marcus' literate programming pages by typing: go http://info.desy.de:80/user/projects/LitProg.html or use a WWW browser and access the URL ftp://rtfm.mit.edu/pub/usenet/news-answers/www/resources/literate-programming Help for people who have only Email and neither WWW nor telnet, can be obtained by Email from TEST-LIST@INFO.CERN.CH by sending a message, SEND , for example, SEND http://info.desy.de:80/user/projects/LitProg.html to retrieve the LitProg library page. A help file can be retrieved by sending a message to the list server above with the text HELP in the body of the message. Instructions will be returned by email. For literate programming documents, you can try anonymous ftp to rtfm.mit.edu and retrieve the official Usenet resource file /pub/usenet/news.answers/www/resources/literate-programming 10.2. TeX Resources Another resource of interest to literate programmers is the comp.text.tex newsgroup. If you're using (La)TeX as your typsetting system and have access to internet, then you should investigate this resource. Another reason the TeX resources should be important is that so many of the literate programming tools rely on either plain TeX or LaTeX as their text formatter. (La)TeX software systems exist for most computing platforms. These systems can be found on CTAN and other major archive sites. Use archie to find them or simply ftp to one of the CTAN sites and browse. 11. Are there any code examples? Examples of web programs are included with the FWEB, CWEB, and noweb distributions. nuweb is written in itself. Cameron Smith converted the K&R calculator program into a literate program. It can be retrieved by anonymous ftp from: niord.shsu.edu [192.92.115.8] directory kr-cweb-sample as krcwsamp.zip or from LPA/Documentation Ross Williams has released a funnelweb example. You can retrieve this file from node ftp.adelaide.edu.au 129.127.40.3 as /pub/funnelweb/examples/except.* This file should be on CTAN as well. Lee Wittenberg has posted a few litprog examples. They are available via anonymous ftp from: ftp://samson.kean.edu/pub/leew/samples.LP The Stanford GraphBase is a large collection of programs by Don Knuth for doing all kinds of computations and games with graphs; it is writ- ten in (Levy/Knuth) CWEB. More details in the distribution. It is available via anonymous ftp from: labrea.stanford.edu:/pub/sgb 12. Bibliographies Nelson Beebe has collected an extensive bibliography treating literate programming. His work is available for anonymous ftp from ftp.math.utah.edu 128.110.198.2 in directory /pub/tex/bib as files: litprog.bib litprog.ltx litprog.twx. Although I have not verified this, LPA is an alternate source for these files. Note that they are updated frequently (Nelson says sev- eral times each week), so be sure to get a fresh copy before extensive use. Joachim Schrod indicates that these files may be updated daily and can be retrieved via anonymous ftp at LPA/documentation. 13. How to anonymously ftp Pretty much everything mentioned here is available by anonymous FTP. FAQ lists cross-posted to news.answers and rec.answers can be gotten from rtfm.mit.edu 18.181.0.24, under /pub/usenet/news.answers or under /pub/usenet/more.specific.group.name "anonymous FTP" is just a way for files to be stored where anyone can retrieve them over the Net. For example, to retrieve the latest version of the literate programming FAQ, do the following: > ftp rtfm.mit.edu /* connect to the site; message follows */ > anonymous /* type this when it asks for your name */ > /* type your address as the password */ > cd /pub/usenet /* go to the directory you want to be */ > cd comp.programming.literate /* one level down (no slash). */ > dir /* look at what's there */ > get literate-progamming-faq /* get the file; case-sensitive */ > quit /* stop this mysterious thing */ If your FTP program complains that it doesn't know where the site you want to use is, type the numerical address instead of the sitename: > ftp 18.181.0.24 /* connect with numerical address */ If you don't have ftp access, send e-mail to mail-server@rtfm.mit.edu with the single word "help" in the body of the message. Getting binary files (executables, or any compressed files) is only slightly more difficult. You need to set binary mode inside FTP before you transfer the file. > binary /* set binary transfer mode */ > ascii /* set back to text transfer mode */ FAQs and spoiler lists are generally ascii files; everything else is generally binary files. Some common extensions on binary files in archive sites are: .Z Compressed; extract with uncompress .tar.Z Compressed 'tape archive'; uncompress then untar or tar -xvf .gz or .z Gnu gzip; use gunzip (available from prep.gnu.ai.mit.edu) .sit (Mac) StufIt archive .zip Extract with Zip or Unzip .zoo Yet another archive/compress program .lhe (Amiga) ? .lzh Lha archive program. .arj (PC) Arj archive program. .exe (PC) Sometimes self-extracting archives-just execute them. .uue or .UUE Transfer as text file; use uudecode to convert to binary .hqx (Mac) BinHex format; transfer in text mode Generic help can be found in the FAQs of comp.binaries. for how to transfer, extract, and virus-check binary files. (At rtfm.mit.edu) If you can't FTP from your site, use one of the following ftp-by-mail servers: ftpmail@decwrl.dec.com ftpmail@src.doc.ic.ac.uk ftpmail@cs.uow.edu.au ftpmail@grasp.insa-lyon.fr For complete instructions, send a message reading "help" to the server. If you don't know exactly what you're looking for, or exactly where it is, there are programs and servers that can help you. For more info, send e-mail to mail-server@rtfm.mit.with with the body of the message reading send usenet/news.answers/finding-sources Thanks to Aliza R. Panitz (the "buglady") for this text. I copied it verbatim from her post on faq-maintainers with only minor modifications. 14. Acknowledgements This document would not have happened without the help of many people. Among them are Marcus Speh, George Greenwade, Rob Beezer, Joachim Schrod, Piet van Oostrum, and Ross N. Williams. A special thanks to Aliza R. Panitz for the text describing how to execute an anonymous ftp for files of interest. Any omissions from these acknowledgements should be considered an act of stupidity on my part. Of course, the authors of literate programming tools mentioned above all play a vital role in the vitality of literate programming. Furthermore, participants in the comp.programming.literate newsgroup (and associated mailing list) all contributed in various fashions. Thank all of you. 15. End notes This document will continue to evolve. I'm planning on adding entries for additional literate programming tools and will expand the sections on examples as more examples become available. Tools I will include are WEB (the original pascal version) for starters. Others will be added as I find and document them. Omission of a particular tool should not be considered a snub in any sense--simply an error or oversight on my part. 25-Jun-1998 0:45:25-GMT,1643;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id SAA05980 for ; Wed, 24 Jun 1998 18:45:20 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 24 Jun 1998 19:40:51 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Opportunity to spread the word about literate programming? Date: 25 Jun 1998 00:12:18 GMT Message-ID: <6ms4l2$cr8$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu Some of you may have encountered the USRobotics/3Com `Palm Pilot' or `Palm III' handheld computer. This is a fun toy to have, and the specs are open, so lots of third parties write programs for it. The Unix crowd is way behind Windows here, so a lot of utilities and examples are still being cooked up. *Lots* of people are curious about how to write code for this thing, and I think this would be a great for literate programming if we as a community could get some example programs into the Pilot world. I was also thinking that turning the source code for somebody's existing program (e.g., HandyShopper) into a literate program would make a good class project, perhaps for a course like the one Lee Wittenberg is offering. I really feel we as a community missed a chance to get our ideas into Linux when that took off. Well, maybe the Pilot is a second chance! Norman -- Norman Ramsey http://www.cs.virginia.edu/~nr 25-Jun-1998 3:13:49-GMT,873;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id VAA08747 for ; Wed, 24 Jun 1998 21:13:49 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Wed, 24 Jun 1998 22:11:14 EST From: Eric Reply-To: LitProg@SHSU.edu, ericliu@cs.pdx.edu Subject: ctangle for NT/DOS Date: 25 Jun 1998 02:49:43 GMT Message-ID: <6msds7$g7e$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: LitProg@SHSU.edu I am looking for ctangle & cweave running on NT/DOS. Does anyone know where I can get it? Thanks in advance. Eric 25-Jun-1998 7:57:32-GMT,1828;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id BAA14098 for ; Thu, 25 Jun 1998 01:57:31 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Thu, 25 Jun 1998 02:54:07 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Alpha version of Noweb 3 available for your amusement Date: 22 Jun 1998 21:44:11 GMT Message-ID: <6mmj7b$iqq$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu Thanks to the hard work of Garret Prestwood, an alpha version of Noweb 3 can be downloaded from the noweb home page at http://www.cs.virginia.edu/~nr/noweb. The supposed advantages of Noweb 3 over Noweb 2 are - to be more portable and easier to install (perhaps in one binary) - to be faster - to retain all the extensibility features - to document some of those third-party extensions The means to all these good ends is to replace the shell scripts and the Icon code with the embedded language Lua-2.5+nw. (This is Lua version 2.5 extended with 2 kinds of case statement.) As of alpha version 980622, I have replaced the shell scripts but not the Icon code. The current alpha version requires Noweb 2, which covers the parts that haven't been ported yet. I'm offering an alpha version now mostly in case people find it amusing, but also because I hope some people will be interested in helping with the port. There's a huge laundry list of unfinished tasks also on the noweb home page. Do let me know if you are interested. Happy Hacking, Norman -- Norman Ramsey http://www.cs.virginia.edu/~nr 26-Jun-1998 6:09:56-GMT,10848;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id AAA12914 for ; Fri, 26 Jun 1998 00:09:55 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 26 Jun 1998 01:02:01 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: A prettyprinter for noweb, in 125 lines of Icon Date: 26 Jun 1998 04:33:16 GMT Message-ID: <6mv8ac$rdn$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" To: LitProg@SHSU.edu ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <16674.898808246.1@labrador.cs.virginia.edu> I wanted prettyprinted text for a paper, so I whipped up a language-independent prettyprinter. Its only virtues are that it is parameterized by a specification in a separate file, and it is short. Its worst feature is that it treats comments as code. Maybe someday some nice person will combine the good features of this prettyprinter and Dan Schmidt's dpp. Norman ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <16674.898808246.2@labrador.cs.virginia.edu> % -*- mode: Noweb; noweb-code-mode: icon-mode -*- \documentclass {article} \usepackage {noweb} \title {Simple prettyprinting with Noweb} \author{Norman Ramsey\\ \texttt{nr@cs.virginia.edu}} \begin {document} @ \maketitle \section {Introduction} This is a pretty-printer, written as a filter for the noweb literate-programming tool. The prettyprinter does not touch indentation and line breaks; what it does is break each code line into tokens, then reformat the tokens. Some of the prettyprinter's capabilities are specified in a translation table. This table is written in a file, which must be named as the first argument. The prettyprinter will: \begin{itemize} \item format special tokens as specified in the parameter file \item keep track of which tokens need to be in math mode, and take care of it \item change underscores to subscripts in the names of identifiers \end{itemize} The prettyprinter doesn't do a great job with quoted strings, and it doesn't do anything intelligent with comments. Users are invited to improve these aspects. Using the prettyprinter requires changing the {\TeX} code that noweb runs at the start of a code chunk. This may do the job: \begin{verbatim} \usepackage{noweb} \let\originalprime=' \def\setupcode{\catcode`\ =10 \catcode`\'=13 \regressprime} {\catcode`\'=\active \makeatletter \gdef\regressprime{\def'{^\bgroup\prim@s}}} \end{verbatim} The prettyprinter uses the ``finduses'' model of symbols, alphanumerics, and delimiters. A token is \begin{itemize} \item whitespace, \item a maximal string of symbols, \item a maximal string of alphanumerics \item a single delimiter, or \item a string that begins with a delimiter and appears in the translation table. \end{itemize} <<*>>= global alphanum, symbols # anything else is a delimiter @ The defaults are as in ``finduses.'' <>= alphanum := &letters ++ &digits ++ '_\'@#' symbols := '!%^&*-+:=|~<>./?`' @ All tokens become {\TeX} strings, and we track three kinds. <<*>>= record space(string) # white space record math(string) # string to appear in math mode record nonmath(string) # string to appear outside of math mode @ Space between two math tokens goes in math mode; space adjacent to a nonmath token goes in nonmath mode. @ A table [[translation]] defines a translation into \TeX\ code for every interesting token in the target language. The table is a sequence of lines of the form \begin{quote} \begin{tabular}{ll} \verb+$+\emph{token} \emph{translation}&A math-mode token\\ \verb+-+\emph{token} \emph{translation}&A non-math token\\ \verb+A+\emph{chars}&List of all characters to be considered alphanumerics\\ \verb+S+\emph{chars}&List of all characters to be considered symbols\\ \end{tabular} \end{quote} Tokens, including identifiers and symbols, are considered to be math-mode tokens unless the translation table specifies otherwise. <<*>>= procedure read_translation(fname) local f, line, k, v, t f := open(fname) | stop("Cannot open file ", fname) t := table() while line := read(f) do line ? case move(1) of { "$" : { tab(many(' \t')); k := tab(upto(' \t')); tab(many(' \t')); v := tab(0) t[k] := math(v) } "-" : { tab(many(' \t')); k := tab(upto(' \t')); tab(many(' \t')); v := tab(0) t[k] := nonmath(v) } "A" : alphanum := cset(tab(0)) "S" : symbols := cset(tab(0)) default : stop("Table entry must begin with $ or - or A or S") } close(f) return t end @ The rest is uninteresting Icon code, which surely could be better documented. <<*>>= procedure main(args) local trans, curline, curmath <> trans := read_translation(get(args)) | stop("Must specify translation table") <> dtrans := table() every k := key(trans) & not any(symbols, k) & not any(alphanum, k) do dtrans[k] := trans[k] curline := [] code := &null while line := read() do line ? { <> } end @ Instead of escaping the {\TeX} specials, I just put them in the translation table if they aren't already. <>= every c := !"{}#$%^&_" do /trans[c] := math("\\" || c) /trans["\\"] := math("\\backslash ") @ We accumulate tokens into [[curline]], then emit them when we reach the end of a line or the end of code. <>= ="@" | stop("Malformed line in noweb pipeline") keyword := tab(upto(' ')|0) value := if pos(0) then &null else (=" ", tab(0)) case keyword of { "begin" : {if match("code", value) then code := 1 else code := &null write(line)} "end" : { <>; code := &null; write(line) } "quote" : {code := 1; write(line)} "endquote" : {<>; code := &null; write(line)} "text" : if \code then {<>} else write(line) "nl" | "use" : { <>; write(line) } default : write(line) } @ Converting text to tokens is the heart of the algorithm. This code looks at the first character and finds maximal sequences. Digit sequences are treated specially Strings with single or double quotes are hacked in. <>= value ? while not pos(0) do if any(' \t') then put(curline, space(tab(many(' \t')))) else if any(alphanum) then { # maximal alphanumeric string id := tab(many(alphanum)) put(curline, \trans[id] | xform_alphanum(id)) } else if any(symbols) then { # maximal symbol string id := tab(many(symbols)) put(curline, \trans[id] | xform_symbols(id)) } else if delim := =("\"" | "'") then { put(curline, xform_literal(delim || tab(find(delim)) || =delim)) } else if =(id := key(dtrans)) then { # if delimiter starts table string, xlate put(curline, dtrans[id]) } else { # single delimiter character put(curline, math(move(1))) } @ Underscores become subscripts, initial hats become hats, and we wrap long strings in \verb+\mathit+ unless they are strings of digits. Leading underscores are botched. <<*>>= procedure xform_alphanum(id) local base id ? if *(base := tab(upto('_'))) > 0 & move(1) & not pos(0) then return math(mathwrap(base) || "_" || xform_alphanum(tab(0)).string) else return math(mathwrap(tab(0))) end procedure mathwrap(s) if s[1] == "^" then return "\\hat{" || mathwrap(s[2:0]) || "}" else if *s = 1 then return s else if upto(~&digits, s) then return "{\\mathit{" || s || "}}" else return s # numbers don't get italic end @ Symbols don't get any of this massaging. <<*>>= procedure xform_symbols(id) return math(id) end @ I haven't tested any of this literal jazz. <<*>>= procedure xform_literal(id) static chars initial chars := "=|+-@!$#" || &letters || &digits if c := !chars & not(find(c, id)) then return nonmath("\\verb" || c || id || c) else return nonmath("\\texttt{" || id || "}") end @ To emit tokens, I track mathness, and I turn it on and off appropriately. I also make sure to get space outside of math mode wherever appropriate, so it will show up. <>= if *curline > 0 then { writes("@literal ") curmath := &null while t := get(curline) do case type(t) of { "math" : { <>; writes(t.string) } "nonmath" : { <>; writes(t.string) } "space" : { if /curmath then writes(repl("\\ ", *t.string)) else if type(curline[1]) == "math" then writes(t.string) else { <>; writes(repl("\\ ", *t.string)) } } default : stop("This can't happen --- bad token ", image(t)) } <> write() } <>= /curmath := 1 & writes("\\(") <>= \curmath := &null & writes("\\)") @ \section{Example} Here's a fragment of source code I used in a paper: \begin{verbatim} fun simple () = let (b_I --> PC := target_I | I_c) = tgt[PC] in if [[b_I]] then PC := [[target_I]] | [[I_c]] else PC := succ(PC) | [[I_c]] fi ; simple() end \end{verbatim} Here's the corresponding output\ifhtml , which looks pretty stupid in HTML because it's intended for {\TeX}\fi: \begin{trivlist} \item \obeylines \textbf{fun}\ \({\mathit{simple}} () \equiv \) \ \ \textbf{let}\ \((b_I \mathbin{\rightarrow} {\mathit{PC}} \mathrel{:=} {\mathit{target}}_I \mathrel{|} I_c) \equiv {\mathit{tgt}}[{\mathit{PC}}]\) \ \ \textbf{in}\ \ \textbf{if}\ \([\![b_I]\!]\)\ \textbf{then} \ \ \ \ \ \ \ \ \({\mathit{PC}} \mathrel{:=} [\![{\mathit{target}}_I]\!] \mathrel{|} [\![I_c]\!]\) \ \ \ \ \ \ \textbf{else} \ \ \ \ \ \ \ \ \({\mathit{PC}} \mathrel{:=} {\mathit{succ}}({\mathit{PC}}) \mathrel{|} [\![I_c]\!]\) \ \ \ \ \ \ \textbf{fi} \ \ \ \ \ \ \(; {\mathit{simple}}()\) \ \ \textbf{end} \end{trivlist} @ And finally, here's the translation table I used: {\small \begin{verbatim} A^_'@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789# S!%&*-+:=|~<>./?` $true \textbf{true} $false \textbf{false} -if \textbf{if} -then \textbf{then} -else \textbf{else} -fi \textbf{fi} -fun \textbf{fun} -let \textbf{let} -in \textbf{in} -end \textbf{end} $@[[ [\![ $@]] ]\!] $:= \mathrel{:=} $andalso \land $--> \mathbin{\rightarrow} $= \equiv $== = $| \mathrel{|} $~ \mathord{-} $not \lnot $!= \ne $<= \le $>= \ge $... \bullet \end{verbatim} \par} \appendix \section {Index} \nowebindex \nowebchunks @ \end {document} ------- =_aaaaaaaaaa0-- 26-Jun-1998 16:21:15-GMT,2233;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id KAA24300 for ; Fri, 26 Jun 1998 10:21:10 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 26 Jun 1998 11:14:49 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: ctangle for NT/DOS Date: 26 Jun 1998 15:55:45 GMT Message-ID: <6n0ga1$dq4$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On 25 Jun 1998, Eric wrote: > I am looking for ctangle & cweave running on NT/DOS. > Does anyone know where I can get it? Thanks in advance. The standard CWEB distribution contains change files necessary for compiling under DOS. There aren't many changes; you can edit ctangle.c and common.c directly using ctang-pc.ch and comm-pc.ch for guides. If you're compiling under NT, you will only need the changes in comm-pc.h that deal with '\' instead of '/' in pathnames, ':'s as drive identifiers and 'NUL' instead of '/dev/null'. All the changes for ctangle and cweave are due to memory restrictions under DOS. In fact, you should be able (under NT) to compile the files as-is to bootstrap. As long as you don't use any '\'s or ':'s in your filenames, and specify 'NUL' (or an empty file) explicitly on the command line for the change file, you should be up and running enough to create a comm-nt.ch changefile (adapted from comm-pc.ch) that will allow you to compile an NT-specific version. -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 26-Jun-1998 16:21:16-GMT,991;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id KAA24301 for ; Fri, 26 Jun 1998 10:21:11 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 26 Jun 1998 11:14:48 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: prettyprinting question Date: 26 Jun 1998 15:42:50 GMT Message-ID: <6n0fhq$dbr$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu Has anybody come up with a good TeX hack for prettyprinting the box used in Dijkstra's calculus to mark arms of an if statement? e.g. if [] boolean --> cmd [] boolean --> cmd [] boolean --> cmd [] boolean --> cmd fi -- Norman Ramsey http://www.cs.virginia.edu/~nr 26-Jun-1998 17:36:30-GMT,3089;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id LAA26616 for ; Fri, 26 Jun 1998 11:36:28 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Fri, 26 Jun 1998 12:32:18 EST From: Lee Wittenberg Subject: Re: Opportunity to spread the word about literate programming? Date: 26 Jun 1998 16:06:56 GMT Message-ID: <6n0gv0$ee0$1@murdoch.acc.Virginia.EDU> Reply-To: LitProg@SHSU.edu, Lee Wittenberg MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On 25 Jun 1998, Norman Ramsey wrote: > Some of you may have encountered the USRobotics/3Com `Palm Pilot' or > `Palm III' handheld computer. This is a fun toy to have, and the > specs are open, so lots of third parties write programs for it. > The Unix crowd is way behind Windows here, so a lot of utilities and > examples are still being cooked up. *Lots* of people are curious > about how to write code for this thing, and I think this would be a > great for literate programming if we as a community could get some > example programs into the Pilot world. > > I was also thinking that turning the source code for somebody's > existing program (e.g., HandyShopper) into a literate program would > make a good class project, perhaps for a course like the one Lee > Wittenberg is offering. Good idea. Steve Furlong and Aharon Robbins had already suggested that I have students do some "maintenance" programming by retrofitting LP onto an existing program. I've already planned on having them tackle some of the smaller GNU/Linux utilities. The Palm Pilot stuff would also be a good idea (if any of the students actually have one to work with -- I don't). Where is the source for these programs available? > I really feel we as a community missed a chance to get our ideas into > Linux when that took off. Well, maybe the Pilot is a second chance! A lovely thought, but I wish I could be optimistic. Structured programming has never really taken hold (except as "a custom more honour'd in the breach than the observance"), and it's been around more than 35 years. The unfortunate fact is that anything requiring the least self-discipline tends to fly out the window in the face of deadlines, to the detriment of program maintenance (which, after all, is LP's greatest strength). -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 27-Jun-1998 16:38:22-GMT,1256;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id KAA21810 for ; Sat, 27 Jun 1998 10:38:21 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Sat, 27 Jun 1998 11:34:27 EST From: Michael Norrish Reply-To: LitProg@SHSU.edu, mn200@cl.cam.ac.uk Subject: Re: prettyprinting question Date: 27 Jun 1998 16:27:50 GMT Message-ID: <6n36i6$io4$1@news.interlog.com> To: LitProg@SHSU.edu Norman Ramsey writes: > Has anybody come up with a good TeX hack for prettyprinting the box > used in Dijkstra's calculus to mark arms of an if statement? > > e.g. if > [] boolean --> cmd > [] boolean --> cmd > [] boolean --> cmd > [] boolean --> cmd > fi The oz.sty package uses some definitions originally from rc.sty by David Carrington and after removing some stuff I didn't understand :-), I got: \newcommand\dbox{\mbox{\large$[\:\!\!]$}} which looks OK. It is only the box you wanted, right? Michael. 29-Jun-1998 6:50:21-GMT,1707;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id AAA00573 for ; Mon, 29 Jun 1998 00:50:21 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 29 Jun 1998 01:43:38 EST From: amoroso@mclink.it (Paolo Amoroso) Reply-To: LitProg@SHSU.edu, amoroso@mclink.it Subject: The `habitability' of source code Date: 28 Jun 1998 11:56:09 GMT Message-ID: <6n5b0p$doo$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: LitProg@SHSU.edu Richard Gabriel, in his book "Patterns of Software - Tales from the Software Community" (Oxford University Press, 1996), provides the following definition of "habitability" (page 11; of course, his discussion is more complex than what this definition may suggest): "Habitability is the characteristic of source code that enables programmers, coders, bug-fixers, and people coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently. Either there is more to habitability than clarity or the two characteristics are different." Although Gabriel knows Knuth's work very well, literate programming is never mentioned in the book. Can literate programming be seen as a way of improving - or even enabling - the habitability of source code? I'm particularly interested in the opinions of those who have read the book. Paolo -- Paolo Amoroso 29-Jun-1998 7:04:24-GMT,1299;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id BAA00794 for ; Mon, 29 Jun 1998 01:04:23 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 29 Jun 1998 01:59:51 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: Opportunity to spread the word about literate programming? Date: 26 Jun 1998 18:08:21 GMT Message-ID: <6n0o2l$i74$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu > > I really feel we as a community missed a chance to get our ideas into > > Linux when that took off. Well, maybe the Pilot is a second chance! > > A lovely thought, but I wish I could be optimistic... > The unfortunate fact is that anything requiring > the least self-discipline tends to fly out the window in the face of > deadlines, to the detriment of program maintenance (which, after all, > is LP's greatest strength). For a counter-argument, see Eric Raymond's discussion of the hacker culture at http://sagan.earthspace.net/~esr/faqs/hacker-howto.html. Norman 30-Jun-1998 4:45:23-GMT,3570;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id WAA29959 for ; Mon, 29 Jun 1998 22:45:22 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Mon, 29 Jun 1998 23:39:21 EST From: skaller@maxtal.com.au (John (Max) Skaller) Subject: Pre-Announce and RFC for LP tool Date: 30 Jun 1998 01:25:50 GMT Message-ID: <6n9equ$7a4$1@news.interlog.com> Reply-To: LitProg@SHSU.edu, skaller@maxtal.com.au To: LitProg@SHSU.edu 1. Interscript LP: Pre-Announcement ----------------------------------- 1.1. Description ---------------- I am developing a new literate programming tool (currently called Interscript) that will blow the socks of everything else. It's currently programming itself. I need comments. What do YOU want from a LP system? 1.2. Availability ----------------- By ftp, next week :-) 1.3. Requirements ----------------- Python 1.5, any platform. 1.4. Descrition --------------- Interscript features a fully blown programming language with an extensive library -- Python. It's also written in Python, and requires Python 1.5 to run. The system features an object based design with pluggable weavers, tanglers, data sources and sinks. The @ character is reserved in column 1, otherwise all characters print as written. @ announces executable Python script. Commands are implemented as Python functions. The user may provide specialised commands or arbitrary script in any document. 1.5. Tanglers ------------- Tanglers for C, C++, data, and Python are done [What else do you want?] 1.6. Weavers ------------ Weavers for HTML, Latex2e and plain text are done. Any number of weavers can be driven simultaneously. [What else do you want?] 1.7. Source drivers ------------------- Source drivers for disk files, ftp, and httpd are done (url to follow shortly). (Net objects are buffered on disk and read when they get too old) 1.8. Sink Drivers ----------------- Comparative file writes are done (write only if different). 1.9. Features ------------- Source cross reference done (i.e. #line directives or equivalent). Table of contents done. Many other features, some not implemented yet. (What do you want? 1.10. Markup language --------------------- No microformatting markup language (small bits of marked up text like in html) is provided, although weavers may provide support via commands. Instead, the user provides a weaver filter of their own choosing. A few interesting filtering weavers are provided, including one that translates _markup_ between underscores to emphasis, and one that translates HTML. [This idea gets around the problem of reserved characters and ugly markup syntax] There are a lot of other 'features' such as automatic generation of a table of identifiers. 1.11. Example ------------- Here's a simple example. @output = named_file_sink('example.html') @weaver = html_weaver(output, title='Interscript Example') @cf = named_file_sink('example.c') @c = C_tangler(cf,weaver) @head(1,'An Example of LP') Heres some code. @select(c) #include void main() { printf("Hello World\n"); @doc() The usual hello world program. John Max Skaller ph:61-2-96600850 mailto:skaller@maxtal.com.au 10/1 Toxteth Rd http://www.maxtal.com.au/~skaller Glebe 2037 NSW AUSTRALIA 30-Jun-1998 8:55:24-GMT,1039;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id CAA04895 for ; Tue, 30 Jun 1998 02:55:23 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Tue, 30 Jun 1998 03:48:24 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: prettyprinting question Date: 28 Jun 1998 01:33:29 GMT Message-ID: <6n46h9$1cu$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6n36i6$io4$1@news.interlog.com>, Michael Norrish wrote: >> Has anybody come up with a good TeX hack for prettyprinting the box >> used in Dijkstra's calculus to mark arms of an if statement? > \newcommand\dbox{\mbox{\large$[\:\!\!]$}} This isn't bad, although it's a little skinnier than what I had in mind. Thanks! 30-Jun-1998 13:44:35-GMT,2043;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id HAA10895 for ; Tue, 30 Jun 1998 07:44:35 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Tue, 30 Jun 1998 08:38:20 EST From: Lee Wittenberg Reply-To: LitProg@SHSU.edu, leew@samson.kean.edu Subject: Re: Pre-Announce and RFC for LP tool Date: 30 Jun 1998 13:07:52 GMT Message-ID: <6nanv8$oe8$1@murdoch.acc.Virginia.EDU> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII To: LitProg@SHSU.edu On 30 Jun 1998, John (Max) Skaller wrote: > > 1. Interscript LP: Pre-Announcement > ----------------------------------- > > [...omitted...] > > 1.11. Example > ------------- > > Here's a simple example. > > @output = named_file_sink('example.html') > @weaver = html_weaver(output, title='Interscript Example') > @cf = named_file_sink('example.c') > @c = C_tangler(cf,weaver) > @head(1,'An Example of LP') > Heres some code. > @select(c) > #include > void main() { printf("Hello World\n"); > @doc() > The usual hello world program. How do you deal with code chunking? For example (using noweb notation), putting the printf in a separate chunk: <<*>>= void main() { <>; } @ text... <>= printf("Hello World\n"); -- Lee ------------------------------------------------------------------------ Lee Wittenberg | "Begin at the middle...then you're not so Computer Science Department | far from either the beginning or the Kean University | ending." Union, NJ 07083 | | -- Erle Stanley Gardner leew@samson.kean.edu | "The Case of the Fugitive Nurse" (1954) ------------------------------------------------------------------------ 30-Jun-1998 15:23:20-GMT,3003;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id JAA13036 for ; Tue, 30 Jun 1998 09:23:18 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Tue, 30 Jun 1998 10:11:21 EST From: John Skaller Reply-To: LitProg@SHSU.edu, skaller@maxtal.com.au Subject: Re: Pre-Announce and RFC for LP tool Date: 30 Jun 1998 14:55:55 GMT Message-ID: <6nau9r$ah6$1@elna.ethz.ch> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: LitProg@SHSU.edu At 09:16 30/06/98 -0400, Lee Wittenberg wrote: >On 30 Jun 1998, John (Max) Skaller wrote: > >> >> 1. Interscript LP: Pre-Announcement >> ----------------------------------- >> >> [...omitted...] >> >> 1.11. Example >> ------------- >> >> Here's a simple example. >> >> @output = named_file_sink('example.html') >> @weaver = html_weaver(output, title='Interscript Example') >> @cf = named_file_sink('example.c') >> @c = C_tangler(cf,weaver) >> @head(1,'An Example of LP') >> Heres some code. >> @select(c) >> #include >> void main() { printf("Hello World\n"); >> @doc() >> The usual hello world program. > >How do you deal with code chunking? For example (using noweb >notation), putting the printf in a separate chunk: > ><<*>>= > void main() > { > <>; > } >@ >text... ><>= > printf("Hello World\n"); > There are a couple of solutions already, but I expect to do some more work on this soon. One way is to write to a memory or file object, and read it back. I currently have a command 'macro' that lets one define such object easily, and later include them. (or earlier, which requires two passes) @body = macro('body') printf("Hello World\n") @doc() text @select(example) void main() { @include_macro(body) } For memory objects, they have to be defined first at present (I will fix it so that information can be stored between passes, however). For file objects, the stuff from the last pass is used. One problem with this is with multiple levels of nesting which are forward referenced. That will work only after multiple passes. A solution to this is defered code generation. I.e., store the tree structure and expand it at the _end_ of the processing run after everything have been defined. Any ideas appreciated: remember the system is dynamic, unlike say FunnelWeb. BTW: is there an online reference to 'NoWeb'? It would be useful to write a noweb filter for the system. ------------------------------------------------------- John Skaller email: skaller@maxtal.com.au http://www.maxtal.com.au/~skaller phone: 61-2-96600850 snail: 10/1 Toxteth Rd, Glebe NSW 2037, Australia 30-Jun-1998 20:48:59-GMT,1542;000000000001 Received: from Niord.shsu.edu (niord.shsu.edu [192.92.115.8]) by csc-sun.math.utah.edu (8.8.5/8.8.5) with SMTP id OAA20754 for ; Tue, 30 Jun 1998 14:48:49 -0600 (MDT) X-ListName: Literate Programming Discussion List Warnings-To: <> Errors-To: owner-litprog@SHSU.edu Sender: owner-litprog@SHSU.edu Received: from MVB.SAIC.COM by Niord.shsu.edu (MX V4.1 AXP) with SMTP; Tue, 30 Jun 1998 15:30:48 EST From: Norman Ramsey Reply-To: LitProg@SHSU.edu, nr@cs.virginia.edu Subject: Re: Alpha version of Noweb 3 available for your amusement Date: 30 Jun 1998 20:07:47 GMT Message-ID: <6nbgij$8pg$1@murdoch.acc.Virginia.EDU> To: LitProg@SHSU.edu In article <6nb3sv$19c$1@murdoch.acc.Virginia.EDU>, Paolo Amoroso wrote: >> The means to all these good ends is to replace the shell scripts and >> the Icon code with the embedded language Lua-2.5+nw. (This is Lua > >Do you mean that noweb 3 will have an `extension language' - in the Tcl >sense - based on Lua? I'm not familiar with that language. Could you please >provide a few basic references? Correct. The basic reference for Lua is at http://www.tecgraf.puc-rio.br/lua. There was an article in SP&E that is also available from that site. The noweb 3 alpha distribution includes all the information you need, including the lua reference manual. The extension language is very closely based on Lua---I have added a case statement because writing shell scripts is intolerable without it. Norman