-
Notifications
You must be signed in to change notification settings - Fork 1
Quotations
You can find lots of quotations about LP at literateprogramming.com.
LP = "Literate Programming", by Donald E. Knuth, Center for the Study of Language and Information, 1992
From the essay "Literate Programming", in LP:
"Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do." (p. 99)
"The practitioner of literate programming can be regarded as an essayist, whose main concern is with exposition and excellence of style. Such an author, with thesaurus in hand, chooses the names of variables carefully and explains what each variable means. He or she strives for a program that is comprehensible because its concepts have been introduced in an order that is best for human understanding, using a mixture of formal and informal methods that nicely reinforce each other." (p. 99)
"In fact, my enthusiasm is so great that I must warn the reader to discount much of what I shall say as the ravings of a fanatic who thinks he has just seen a great light." (p. 100)
"I must confess that there may also be a bit of malice in my choice of a title. During the 1970s I was coerced like everybody else into adopting the ideas of structured programming, because I couldn't bear to be found guilty of writing unstructured programs. Now I have a chance to get even. By coining the phrase "literate programming," I am imposing a moral commitment on everyone who hears the term; surely nobody wants to admit of writing an illiterate program". (p. 100)
"...I think that a complex piece of software is, indeed, best regarded as a web that has been delicately pieced together from simple materials... If we express a program as a web of ideas, we can emphasize its structural properties in a natural and satisfying way." (p. 101)
"Literature of the program genre is performable by machines, but that is not its main purpose. The computer programs that are truly beautiful, useful, and profitable must be readable by people. So we ought to address them to people, not machines." DEKnuth, Preface to LP, p. ix.
"Computer Programming as an Art" (1974), in LP pp. 1-16:
"When I speak about computer programming as an art, I am thinking primarily of it as an art form, in an aesthetic sense. The chief goal of my work as educator and author is to help people learn how to write beautiful programs." (p. 7)
"Some programs are elegant, some are exquisite, some are sparkling. My claim is that it is possible to write grand programs, noble programs, truly magnificent ones!" (p. 8)
"How to Read a WEB" (1986), in LP pp. 179-184:
"A WEB program is a Pascal program that has been cut up into pieces and rearranged into an order that is easier for a human being to understand... In other words, WEB programs and Pascal programs are essentially the same kinds of things, but their parts are arranged differently." (p. 179)
"Mathematical Writing" (1987), in LP pp. 235-241. MW consists of class notes written by Paul Roberts from a course taught by Knuth in 1987, but since Knuth included it in LP we can assume he endorses it.
"The guiding principle behind WEB is that each module is introduced at the psychologically right moment." (p. 236)
"Don himself always felt it was quite clear what had to be presented next, throughout the entire composition of this huge program [i.e. TeX - GR]. There was at all points a natural order of exposition, and it seems that the natural orderings for reading and writing are very much the same." (p. 236)
"In WEB we are not constrained by top-down, bottom-up, or any other order." (p. 238)
"Under the literate programming paradigm, the central activity of programming becomes that of conveying meaning to other intelligent beings rather than merely convincing the computer to behave in a particular way. It is the difference between performing and exposing a magic trick." Ross Williams, FunnelWeb Tutorial Manual p 4 (quoted at literateprogramming.com)
a/k/a Inferential Role Semantics. Broadly speaking, inferential semantics is a (foundational) approach to explaining meanings in terms of inference; it stands in contrast to representational semantics, which explains meaning in terms of representation. Inferentialism says that the content of a concept is determined by its inferential articulation, the network of inferences in which it plays the role of premise or conclusion. What gives "the triangle is crimson" its meaning is its relation to other statements like "the triangle is not green" and "the triangle is red". Representationalism says that the content of a concept is determined by its referential relation to the world; what makes "the triangle is red" meaningful is the representational relation between the word "red" and the redness of the triangle.
The relevance here has to do with the idea that a program is a web of concepts.
See "Semantic Inferentialism and Logical Expressivism", in "Articulating Reasons: An Introduction to Inferentialism", by Robert Brandom, Harvard University Press, 2000.