Content deleted Content added
mNo edit summary |
m Disambiguating links to Dependency (link changed to Dependency (computer science)) using DisamAssist. |
||
(26 intermediate revisions by 18 users not shown) | |||
Line 1:
{{Short description|Macro-based programming language}}
{{distinguish|World Wide Web}}
{{Redirect-several|Tangle|Weave|Web}}
{{primary sources|date=October 2017}}
'''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.▼
▲'''Web''', traditionally styled WEB, is a [[computer programming]] system created by [[Donald E. Knuth]] as the first implementation of what he called "[[literate programming]]":
==Philosophy==
[[CWEB]] is a version of Web for the [[C (programming language)|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-independent specification|language agnostic]].▼
Much like TeX articles, the Web source text 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 |archive-url=https://web.archive.org/web/20211020184416/http://tex.loria.fr/litte/wc.pdf |archive-date=20 October 2021 |url-status=dead}}</ref>
The most significant programs written in Web are [[TeX]] and [[Metafont]]. Modern TeX distributions use another program [[Web2C]] to convert Web source to C.▼
==Implementations==
The original WEB system [[Dependency (computer science)|depends]] on [[Pascal programming language|Pascal]] and comprises two programs:
* TANGLE, which produces compilable Pascal code from the source texts, and
* WEAVE, which through the use of [[TeX]] produces nicely-formatted, printable documentation from the same source texts.
'''Others:'''
*[[#CWEB|CWEB]] (below) is a version of Web for the [[C (programming language)|C programming language]], while
▲
▲The most significant programs written in Web are [[TeX]] and [[Metafont]]. Modern TeX distributions however use another program called [[Web2C]] to convert Web source to C.
==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.
* Makes formatting of C code suitable for [[pretty printing]].
* Can define sections, and can contain documentation and codes, which can then be included into other sections.
* Writes 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.
* Uses <code>#line</code> directive 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.
== See also ==
* [[Comparison of documentation generators|Documentation generators]] – While comparable with Web's WEAVE, these however generally follow the standard practice of source code first, the opposite of the Web approach.
== References ==
{{Reflist}}
▲* {{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 }}
==External links==
*[https://www.ctan.org/pkg/web The TeX Catalogue entry for Web]
*[https://www-cs-faculty.stanford.edu/~knuth/cweb.html CWEB homepage]
*[https://www-cs-faculty.stanford.edu/~knuth/programs.html Examples of programs written in Web], By Donald Knuth (1981 and onward)
{{TeX navbox}}
{{Donald Knuth navbox}}
{{Authority control}}
[[Category:Free documentation generators]]
[[Category:Literate programming]]
[[Category:TeX]]
|