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. What is Literate programming? Literate programming is a style of programming invented by Donald Knuth, where the main idea is that a program’s .

Author: Akinorisar Vikus
Country: Australia
Language: English (Spanish)
Genre: Business
Published (Last): 14 September 2017
Pages: 281
PDF File Size: 2.29 Mb
ePub File Size: 15.7 Mb
ISBN: 325-2-59623-753-1
Downloads: 47311
Price: Free* [*Free Regsitration Required]
Uploader: Kajihn

The whole concept of code sections, indeed structured programming, is to reduce the amount of text that must be read in order to determine what a piece of code is doing. Literate programming Computer-related introductions in Despite roughness in low-level style, the program meets these goals well. programmin

Literate programming – Wikipedia

This differs literrate traditional documentation, in which a programmer is presented with source code that follows a compiler-imposed order, and must decipher the thought process behind the program from the code and its associated comments. The CWEAVE program is so named because it takes a given web and intertwines the TeX and C portions contained in each section, then it knits the whole fabric into a structured document.

I replied to his letter on 16 November much earlier than I remembered. Drawing and Literate Programming. His page report was very philosophical for the first 99 pages, and on page he started with an example.

The simplest form of subroutine consists of a sequence of orders which can be incorporated as it stands into a program. Parts of the program that belong together logically should appear near to each other in the description, so that they are visible from the part of the documentation that discusses their function.

Long procedures are restructuring by folding portions of the code into sections. I may not be able to read your message until many months have gone by, because I’m working intensively on The Art of Computer Programming. Literate programming LP tools are used to obtain two representations from a literate source file: Literate Programming in WEB”.

Literate programming

Organize large source code files using an outlining editor Leo. They resemble programs from computer science textbooks rather than listings from executable programs.


This book received the Productivity Award from Computer Language magazine,awarded to products that significantly increase programmer productivity. This page was last edited on 20 Decemberat Re-think or refactor code which is difficult to understand. TeX automatically handles details such as microjustification, kerning, hyphenation, ligatures, and other sophisticated operations, even when the description part of the source is simple ASCII text. Listings generated by the WEB system are unlike any other form of program listings in existence.

A complex piece of software consists of simple parts and simple relations between those parts; the programmer’s task is to state those parts and those relationships, in whatever order is best for human comprehension not in some rigidly determined order like top-down or bottom-up. The “Holon” concept has been introduced in biological and behavior sciences by Koestler. Then we had a student at Stanford whose name was Zabala-actually he’s from Spain and he has two names-but we call him Inaki; Ignacio is his name.

So I was frightened with the idea that I would actually be expected to show someone my program.

probramming The same example was later rewritten for the noweb literate programming tool. The style of literate programming combines source code and documentation into a single source file. If programs are written in a way that concentrates on explaining their litterate to human readers, then they can be considered as works of technical literature; it is for this reason that Knuth has named this style of software construction and description “literate programming”.

Such exposition of ideas creates the flow of thought that is like a literary work. Of course, I developed TeX so that it would try to continue a history of hundreds of years of different ideas.

Views Read Edit View history. The fundamental logic of the WEB system encourages “top-down” programming and “structured” design.

Each of these disciplines can materially improve programmer productivity and the quality of code produced. The preprocessor also provides an ability to write out the content of the macros and to add to already created macros in any place in the text of the literate program source file, thereby progrmaming of the need to keep in mind the restrictions imposed progrramming traditional programming languages programmign to interrupt the flow of thought.


The meta-language capabilities of literate programming are also claimed to facilitate thinking, giving a higher “bird’s eye view” of the code and increasing the number of concepts the mind can successfully retain and process.

Wheeler, and Stanley Gill.

It should be an unusual but not exceptional case when a module contains no prohramming. Implement automated unit testing which is also a form of documentation. This approach was implemented at Stanford University as a part of research on algorithms and digital typography.

Literate Programming

Schulte, Eric January liferate Actually, writing out the expanded source code can be done from any section or subsection i. High quality documentation facilitates program modification with fewer conceptual errors and resultant defects.

The snippets of the literate wc above show how an explanation of the program and its source code are interwoven. He sent me a report, which was pages long, about prlgramming system-it was inspired by “The Ghost in the Machine”.

By combining the two, we can develop a style of programming that maximizes our ability to perceive the structure of a complex piece of software, and at the same time the documented programs can be mechanically translated into a working software system that matches the documentation. In some sense, the literate programming system is just an enhanced macro substitution package tuned to the task of rearranging source code. It is designed so that when its task is finished it returns control to the master routine at a point immediately following that from which it was called in.

Code sections improve on verbose commenting by providing the ability to write descriptive paragraphs while avoiding cluttering the source code.

Generate software requirements and design description see IEEE standards. My original idea was that WEB would be merely a tool for documentation, but I actually found that my WEB programs were better than the programs I had been writing in other languages. I use the following list of requirements to imply a definition of a literate program and the minimum set of tools which are knuh to prepare, use, and study the resulting code.