Web is a computer programming system created by Donald E. Knuth as the first implementation of what he called "literate programming": the idea that one could create software as works of literature, by embedding source code inside descriptive text, rather than the reverse (as is common practice in most programming languages), in an order that is convenient for exposition to human readers, rather than in the order demanded by the compiler.[1]
Web consists of two secondary programs: TANGLE, which produces compilable Pascal code from the source texts, and WEAVE, which produces nicely-formatted, printable documentation using TeX.
CWEB is a version of Web for the C programming language, while noweb is a separate literate programming tool, which is inspired by Web (as reflected in the name) and which is language agnostic.
The most significant programs written in Web are TeX and Metafont. Modern TeX distributions use another program Web2C to convert Web source to C.
Unlike most other documentation generators, which relegate documentation to comments, the WEB approach is to write an article to document the making of the source code. Much like TeX articles, the source is divided into sections according to documentation flow. For example, in CWEB, code sections are seamlessly intermixed in the line of argumentation.[2]
CWEB | |
Paradigm: | Literate, imperative (procedural), structured |
Designer: | Donald Knuth |
Developer: | Donald Knuth & Silvio Levy |
Latest Release Version: | 3.67 |
Typing: | Static, weak, manifest, nominal |
Influenced By: | WEB, TeX |
Influenced: | noweb |
Operating System: | Cross-platform (multi-platform) |
License: | custom free-software license |
File Ext: | .w |
CWEB is a computer programming system created by Donald Knuth and Silvio Levy as a follow-up to Knuth's WEB literate programming system, using the C programming language (and to a lesser extent the C++ and Java programming languages) instead of Pascal.
Like WEB, it consists of two primary programs:
#line
pragmas so that any warnings or errors refer to the .w source.