Download The FunnelWeb tutorial

Transcript
1.1 What Is Literate Programming?
1.1 What Is Literate Programming?
Reference
Developer
Tutorial
1 Introduction
2 Macros
3 Typesetting
4 Example
5 Hints
6 Examples
7 Webmaking
SEARCH
A traditional computer program consists of a text file containing program code.
Scattered in amongst the program code are comments which describe the
various parts of the code.
In literate programming the emphasis is reversed. Instead of writing code
containing documentation, the literate programmer writes documentation
containing code. No longer does the English commentary injected into a
program have to be hidden in comment delimiters at the top of the file, or under
procedure headings, or at the end of lines. Instead, it is wrenched into the
daylight and made the main focus. The "program" then becomes primarily a
document directed at humans, with the code being herded between "code
delimiters" from where it can be extracted and shuffled out sideways to the
language system by literate programming tools.
The effect of this simple shift of emphasis can be so profound as to change one's
whole approach to programming. 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.
In order to program in a literate style, particular tools are required. The
traditional approach (used in the FunnelWeb system) is to have some sort of
text-file-in/text-file-out utility that reads a literate program (containing a
program commentary peppered with scraps of program text) and writes out a file
containing all the program code and a file containing typesetter commands
representing the entire input document, documentation, code, and all. See the
diagram below.
+-----------------------------------------+
| File containing the program description |
| peppered with scraps of program code.
|
| This is what the programmer works on.
|
|
(e.g. sloth.web)
|
+-----------------------------------------+
|
v
o---------------------------o
| Literate Programming Tool |
o---------------------------o
|
http://www.ross.net/funnelweb/tutorial/intro_what.html (1 of 4) [3/3/2000 9:44:55 PM]