summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/generic/FAQ-en/faq-litprog.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/generic/FAQ-en/faq-litprog.tex')
-rw-r--r--Master/texmf-dist/doc/generic/FAQ-en/faq-litprog.tex79
1 files changed, 79 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/generic/FAQ-en/faq-litprog.tex b/Master/texmf-dist/doc/generic/FAQ-en/faq-litprog.tex
new file mode 100644
index 00000000000..277796e5969
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/FAQ-en/faq-litprog.tex
@@ -0,0 +1,79 @@
+% $Id: faq-litprog.tex,v 1.1 2009/06/13 20:56:39 rf10 Exp rf10 $
+
+\section{Literate programming}
+
+\Question[Q-lit]{What is Literate Programming?}
+
+Literate programming is the combination of documentation and source
+together in a fashion suited for reading by human beings.
+In general, literate programs combine source
+and documentation in a single file. Literate programming tools then
+parse the file to produce either readable documentation or compilable
+source. The \acro{WEB} style of literate programming was created by
+D.~E.~Knuth during the development of \TeX{}.
+
+\htmlignore
+The ``documented \LaTeX{}'' style of programming (\Qref{}{Q-dtx})
+\endhtmlignore
+\begin{htmlversion}
+ The ``\Qref{documented \LaTeX{}}{Q-dtx}'' style of programming
+\end{htmlversion}
+is regarded by some as a form of literate programming, though it only
+contains a subset of the constructs Knuth used.
+
+Discussion of literate programming is conducted in the newsgroup
+\Newsgroup{comp.programming.literate}, whose \acro{FAQ} is stored on
+\acro{CTAN}. Another good source of information is
+\URL{http://www.literateprogramming.com/}
+\begin{ctanrefs}
+\item[\nothtml{\rmfamily}Literate Programming \acro{FAQ}]%
+ \CTANref{LitProg-FAQ}
+\end{ctanrefs}
+
+\Question[Q-webpkgs]{\acro{WEB} systems for various languages}
+
+\TeX{} is written in the programming language \acro{WEB}; \acro{WEB}
+is a tool to implement the concept of ``literate programming''.
+Knuth's original implementation will be in any respectable
+distribution of \TeX{}, but the sources of the two tools
+(\ProgName{tangle} and \ProgName{weave}), together with a manual
+outlining the programming techniques, may be had from \acro{CTAN}.
+
+\acro{\ProgName{CWEB}}, by Silvio Levy, is a \acro{WEB} for \acro{C} programs.
+
+Spidery \acro{WEB}, by Norman Ramsey, supports many
+languages including Ada, \texttt{awk}, and \acro{C}
+and, while not in the public domain, is usable without charge. It is
+now superseded by \ProgName{noweb} (also by Norman Ramsay) which
+incorporates the lessons learned in implementing spidery \acro{WEB},
+and which is a simpler, equally powerful, tool.
+
+\acro{\ProgName{FWEB}}, by John Krommes, is a version for Fortran,
+Ratfor, and \acro{C}.
+
+\ProgName{Scheme}\acro{\ProgName{WEB}}, by John Ramsdell, is a Unix filter that
+translates Scheme\acro{WEB} into \LaTeX{} source or Scheme source.
+
+\acro{\ProgName{APLWEB}} is a version of \acro{WEB} for \acro{APL}.
+
+\ProgName{FunnelWeb} is a version of \acro{WEB} that is language independent.
+
+Other language independent versions of \acro{WEB} are \ProgName{nuweb} (which
+is written in \acro{ANSI} \acro{C}).
+
+\ProgName{Tweb} is a \acro{WEB} for \plaintex{} macro files, using
+\ProgName{noweb}.
+\begin{ctanrefs}
+\item[aplweb]\CTANref{aplweb}
+\item[cweb]\CTANref{cweb}
+\item[funnelweb]\CTANref{funnelweb}
+\item[fweb]\CTANref{fweb}
+\item[noweb]\CTANref{noweb}
+\item[nuweb]\CTANref{nuweb}
+\item[schemeweb]\CTANref{schemeweb}
+\item[spiderweb]\CTANref{spiderweb}
+\item[tangle]\CTANref{web}
+\item[tweb]\CTANref{tweb}
+\item[weave]\CTANref{web}
+\end{ctanrefs}
+