Donald Knuth. “Literate Programming ()” in Literate Programming. CSLI, , pg. I believe that the time is ripe for significantly better documentation of . Literate programming: Knuth is doing it wrong. Literate programming advocates this: Order your code for others to read, not for the compiler. Literate Programming is also the name of DonKnuth’s book (ISBN One speculation for the reason behind Knuth’s pushing of LP is that according to Stanford’s.

Author: Brabar Mikagar
Country: Guadeloupe
Language: English (Spanish)
Genre: Life
Published (Last): 11 January 2006
Pages: 31
PDF File Size: 14.52 Mb
ePub File Size: 10.96 Mb
ISBN: 392-3-78466-879-7
Downloads: 90473
Price: Free* [*Free Regsitration Required]
Uploader: Menos

For some, there are mitigating effects, eg. Webarchive piterate wayback links Wikipedia articles needing clarification from September CS1 errors: Brackets never go beyond a page. Writing the story after it’s done is too late – the business value is in the product’s shipped functionality, not in the development artifacts.

Avoid duplicate code by creating shared functions.

A not as big system decomposed into well-defined parts with clear and concise documentation is best of all. I could go on, and on, why a wiki is not optimal for any documentation associated to a software project. One is the style of commenting and structuring the code, which makes it easy for litterate to follow.

Knuth: Literate Programming

Every so often, the customer or rather, the alliance of customers would send someone. That’s because LP does make understanding the code both easier and faster. But Knuth is concerned not only with bytes and microseconds, but with a concept that has come prpgramming be known in coding circles as “elegance,” and that applies to programming at any level.

IMO it solves kuth same problems that literate programming was supposed to solve, but less intrusively and more reliably. Why do you assume that because I said that the programming language is actionable to a modified lump programmming sand that I believe isn’t also communicating to the programmer?

I could see teams benefiting greatly from this if they agree on organizational principles and if not, I programmign see this exacerbating the conflicts. In some cases the result is so clear that there is hardly any need to supply further documentation; also it can sometimes be useful to use this method to replace small pieces of somewhat cryptic code by a description that is actually longer than the code itself.


Examine source code metrics lines, complexity, etc. Conduct peer reviews of deliverables. For other programming languages and tasks, I don’t think this is as glaring a need.

But as time went on, I’ve become extremely pleased with the name, because I think that a complex piece of software is, indeed, best regarded knuh a web that has been delicately pieced together from simple materials.

Literate programming

Commentary, though, not like knth kind of comments you put inside the code. It’s been tried many times. And finally, who ever provides commentary on the theory and design issues behind the program,ing as they write the documentation?

It was over five years ago now. Such exposition of ideas creates the flow of thought that is like a literary work. Sometimes the commit messages aren’t as detailed as one might prefer, but you can often still get a lot of useful insight just from the date stamps. Of course, LP is a fuzzy concept. While modern languages like JavaScript or lisp ;- allow for a very free structure, and ordering of the code in accordance with how comments might fit, or the thought process that went into the design — that’s just proper programming style: Since the value to the actual coder is distant and indirect, while the work of producing it is immediate, it tends to be an early omission under any kind of stress.

The same example was later rewritten for the noweb literate programming tool.

Literate Programming

Hacker News new comments show ask jobs submit. Then, to understand the complicated whole, what you needed is just to understand programning small parts, and to understand the relationship between those parts and their neighbors. You can have all code, styling, content for a widget all in one place.

I had a discussion with him in approximately ; I’m trying to remember the exact time, maybeyes,perhaps when I visited Newcastle? The first published literate programming environment was WEBintroduced by Donald Knuth in for his TeX typesetting system; it uses Pascal as its underlying programming language and TeX for typesetting of the documentation. I’ve been accused of not writing enough comments in the code itself and then writing “novels” in the commit messages and “Literate Revision Control” is probably the best name for that sort of style.


Myrmornis on Aug 17, The fewer comments the better.

In the hands of a master, such as Knuth, a literate programming is a gem of wonder. Many languages are capable enough that they don’t need third party tools for these.

Bad code will make your programmers groan and occasionally threaten to quit, but it usually won’t threaten the existence of an organization. This is illustrated by the following snippet of the wc literate program.

Knuth had privately used a literate programming system called DOC as early as In that setting, the executable artifact is not really more important than the explanation of why the code does what it does, so the extra overhead is justifiable. He proposed a way of taking a complicated program and breaking it into small parts. Literate programming didn’t catch on because it was dismissed by the larger number of programmers who could get “things done” who didn’t understand literate programming.

So I was frightened with the idea that I would actually be expected to show someone my program. Of course, other computer scientists have made contributions to the field that are every bit as substantial most notably Edsger Dijkstra, Charles Hoare and Niklaus Wirth. But Knuth’s work brings to life the complex mathematical underpinnings of the discipline, and deals with the logistics of programming on all levels, from the conceptual design of solutions to the most intimate details of the machine.

It’s to help them understand what you’ve done; a small amount of extra burden on you now to remove a large burden on other people in the future. Like many of my cow-orkers I’ve configured my editor to hide the tomdocs in normal use.

Previous post: