Path: csiph.com!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder2.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Wolfgang Agnes Newsgroups: comp.programming.literate Subject: Re: "hello, world" Literate Programming example in Noweb Date: Fri, 1 Nov 2024 23:11:48 CST Organization: A noiseless patient Spider Lines: 68 Approved: comp.programming.literate Moderators Message-ID: <87froazhac.fsf@jemoni.to> References: <87ttcqzxy9.fsf@jemoni.to> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Sat, 02 Nov 2024 00:11:51 +0100 (CET) Injection-Info: dont-email.me; posting-host="d11f8fec12cda9e4e4378705441680ae"; logging-data="3629143"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/5JIcYM6Ghw4rO2gHeAe15" Cancel-Lock: sha1:0/hLwhPmKaHUUBYYxt/Xr9knh6M= sha1:sw1Xmt0Pzu8YHWN3fO8tYy7yikU= sha1:sw1Xmt0Pzu8YHWN3fO8tYy7yikU= Delivered-To: comp-programming-literate@moderators.isc.org X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on smtp.eternal-september.org X-Spam-Status: No, score=-99.0 required=5.0 tests=DKIM_ADSP_NXDOMAIN, HEADER_FROM_DIFFERENT_DOMAINS,SPF_HELO_NONE,SPF_PASS, USER_IN_WELCOMELIST,USER_IN_WHITELIST autolearn=no autolearn_force=no version=3.4.6 X-cpl-info-2: contact mods cpl-mods@newjersey.metaed.com X-Original-To: cpl@newjersey.metaed.com Authentication-Results: name/E97C65F701; dmarc=none (p=none dis=none) header.from=jemoni.to X-Auth-Sender: U2FsdGVkX1+jAC93o3y/2wCu0yVMw4TMqB+UH4ONNPY5x1PIOvOcu81wrmGSaIGF81bL4swmFKTBj4s8TxqlvLMvrgn0epWW4DmKH7D0gs0= X-cpl-info-1: submissions to cpl@newjersey.metaed.com Xref: csiph.com comp.programming.literate:98 Edward McGuire writes: > On 2024-11-01, Wolfgang Agnes wrote: >> Welcome to the literate programming world. > > Thank you, especially for the really thoughtful response. This kind of > constructive reply is exactly what I wanted. You're so welcome. Glad I could be of some help. >> perhaps the first chunk should be /hello main body/ because that is precisely >> what we expect from a hello-world. > > I agree. Part of what's fun about this design process is, instead of starting > literally at the top and sectioning down, or at the bottom and chunking up, you > can start at the middle, then both section down and chunk up. Knuth discovered > this was true for him also, and mentions it in the "Literate Programming" paper. Nice. That's also why I like it so much. I had never noticed how the compiler order is such a prison. Knuth liberated us from that. It makes a lot of difference. It brought a pretty good deal of the joy of programming back to me. (Lisp brought another half of that joy.) > The tutorial should be reordered to demonstrate that. Okay. >> by calling your chunks as holons, you're eclipsing the name ``chunk'' which >> seems to be the [standard] one. Something to think about. >> [...] >> I see you explain the NOWEB terminology. I wonder if Knuth was the one >> who started with the term /chunk/ as well. If so, then I'd advise >> against /holon/. > > My choice of _holon_ reflects my intention that the tutorial be, or become, less > about a particular tool, and more about what literate programming _is_, while > still showing a working example. Interesting. I agree with that. I should've also said that I really enjoyed the term, though if everyone *were* using a single one---say, ``chunk''---, I'd stick to it, but you showed that's not the case. > Knuth uses neither _chunk_ nor _holon_. In the "Literate Programming" paper, he > acknowledges de Marneffe's Holon Programming Language as the primary influence > on the design of WEB, but does not follow de Marneffe's terminology. In the WEB > manual he uses _module_, and in CWEB he uses _section_. Ramsey (noweb) uses > _chunk_. Briggs (nuweb) uses _scrap_ and _macro_. In short, there is no > agreed-on term. Thanks very much for all the references! > The term _holon_ captures good design better than the others. It describes a > relatively independent "organic" or "granular" unit of code, whose form and > purpose is easily graspable by the reader, and whose boundaries easily allow for > sectioning down and chunking up, validation, testing, refactoring, etc. And > that's what a good literate programmer aims for. Totally agree. Maybe we all should use ``holon'' from now on. >> More often than not, users don't have NOWEB installed, so they wouldn't >> be able to do anything with your program but read it. > > I need to add an appendix, that shows how a person could easily get Noweb > running and actually execute the tutorial code. That's a nice idea. NOWEB is such a stable software, your tutorial would likely last a good deal of time.