Web (programming system): Difference between revisions

Content deleted Content added
Merge from CWEB following unopposed 2020 proposal; see Talk:Web (programming system)#Merge with CWEB
Line 8:
{{merge|CWEB|date=July 2020}}
 
'''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.<ref>{{cite book |first = Donald E. |last=Knuth |author-link = Donald Knuth |title=Literate Programming |___location=Stanford, California |publisher=Center for the Study of Language and Information |year=1992 |series=CSLI Lecture Notes |volume=27 }}</ref>
 
Web consists of two secondary programs: TANGLE, which produces compilable [[Pascal programming language|Pascal]] code from the source texts, and WEAVE, which produces nicely-formatted, printable documentation using [[TeX]].
Line 15:
 
The most significant programs written in Web are [[TeX]] and [[Metafont]]. Modern TeX distributions use another program [[Web2C]] to convert Web source to C.
 
==Philosophy==
Unlike most other [[Comparison of documentation generators|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.<ref>{{cite web |author=Silvio Levy |url=http://tex.loria.fr/litte/wc.pdf |date=12 June 2004 |title=An example of CWEB}}</ref>
 
==CWEB==
{{Infobox programming language
| name = CWEB
| paradigm = [[Literate programming|Literate]], [[Imperative programming|imperative]] ([[Procedural programming|procedural]]), [[structured programming|structured]]
| released = {{Start date and age|1987}}
| designer = [[Donald Knuth]]
| developer = [[Donald Knuth]] & [[Silvio Levy]]
| latest release version = 3.67
| latest release date = {{Start date and age|2006|10|24}}
| typing = [[Type system|Static]], [[Weak typing|weak]], [[manifest typing|manifest]], [[Nominative type system|nominal]]
| influenced by = [[WEB]], [[TeX]]
| influenced = [[noweb]]
| operating system = [[Cross-platform|Cross-platform (multi-platform)]]
| license = custom [[free-software license]]
| file ext = .w
| website = {{URL|www-cs-faculty.stanford.edu/~uno/cweb.html}}
}}
'''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)|C programming language]] (and to a lesser extent the [[C++]] and [[Java (programming language)|Java]] programming languages) instead of [[Pascal (programming language)|Pascal]].
 
Like WEB, it consists of two primary programs: CTANGLE, which produces compilable C code from the source texts, and CWEAVE, which produces nicely-formatted printable documentation using [[TeX]].
 
===Features===
* Can enter manual TeX code as well as automatic.
* Make formatting of C code for [[pretty printing]].
* Can define sections, and can contain documentation and codes, which can then be included into other sections.
* Write the header code and main C code in one file, and can reuse the same sections, and then it can be tangled into multiple files for compiling.
* Use <code>#line</code> pragmas so that any warnings or errors refer to the .w source.
* Include files.
* Change files, which can be automatically merged into the code when compiling/printing.
* Produces index of identifiers and section names in the printout.
 
== References ==
{{Reflist}}
{{Refbegin}}
* {{cite book |first = Donald E. |last=Knuth |author-link = Donald Knuth |title=Literate Programming |___location=Stanford, California |publisher=Center for the Study of Language and Information |year=1992 |series=CSLI Lecture Notes |volume=27 }}
{{Refend}}
 
==External links==