1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
"http://www.w3.org/TR/REC-html40/loose.dtd">
6
***********************************************************************
7
FUNNELWEB MANUAL WEB PAGE
8
=========================
9
Copyright (c) Ross N. Williams 1992,1999. All rights reserved.
11
Permission is granted to redistribute and use this manual in
12
any medium, with or without modification, provided that all
13
notices (including, without limitation, the copyright
14
notice, this permission notice, any record of modification,
15
and all legal notices) are preserved on all copies, that all
16
modifications are clearly marked, and that modified versions
17
are not represented as the original version unless all the
18
modifications since the manual's original release by Ross N.
19
Williams (www.ross.net) consist of translations or other
20
transformations that alter only the manual's form, not its
21
content. THIS MANUAL IS PROVIDED "AS IS" AND WITHOUT ANY
22
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
23
LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND
24
FITNESS FOR A PARTICULAR PURPOSE. TO THE EXTENT PERMITTED BY
25
LAW THERE IS ABSOLUTELY NO WARRANTY.
27
***********************************************************************
31
<TITLE>2.2 Motivation For FunnelWeb</TITLE>
32
<STYLE TYPE="text/css"> <!-- A {text-decoration: none} // --> </STYLE>
34
<BODY BACKGROUND="binary/background.gif"
43
<TD WIDTH="130" VALIGN="top">
44
<IMG SRC="binary/d_clear.gif" ALT="" WIDTH="130" HEIGHT="1"><BR>
49
<A HREF="http://www.ross.net/"
51
onClick="window.open('','rosshome','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
53
<IMG SRC="binary/rossnet_logo.gif"
54
WIDTH="64" HEIGHT="32"
55
BORDER="0" ALT="RossNet"
56
HSPACE="0" VSPACE="1"></A><BR>
59
<A HREF="../index.shtml"
61
onClick="window.open('','funnelweb','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
63
<IMG SRC="binary/linklogo.gif"
64
WIDTH="64" HEIGHT="32"
65
BORDER="0" ALT="FunnelWeb"
66
HSPACE="0" VSPACE="1"></A><BR>
68
<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0><TR><TD BGCOLOR="#000000">
69
<A HREF="../reference/index.html"
70
TARGET="funnelwebreference"
71
onClick="window.open('','funnelwebreference','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
72
><FONT COLOR="#FFFFFF"><B>Reference</B></FONT></A><BR>
74
<A HREF="../tutorial/index.html"
75
TARGET="funnelwebtutorial"
76
onClick="window.open('','funnelwebtutorial','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
77
><FONT COLOR="#FFFFFF"><B>Tutorial</B></FONT></A><BR>
79
<A HREF="index.html"><FONT COLOR="#FFFFFF"><B>Developer</B></FONT></A><BR>
80
<A HREF="compile.html"><FONT COLOR="#FFFFFF">1 Compile</FONT></A><BR>
81
<A HREF="design.html"><FONT COLOR="#FFFFFF">2 Design</FONT></A><BR>
82
<A HREF="implement.html"><FONT COLOR="#FFFFFF">3 Implement</FONT></A><BR>
83
<A HREF="modify.html"><FONT COLOR="#FFFFFF">4 Modify</FONT></A><BR>
84
<A HREF="misc.html"><FONT COLOR="#FFFFFF">5 Misc</FONT></A><BR>
85
<A HREF="gpl.html"><FONT COLOR="#FFFFFF">6 Licence</FONT></A><BR>
88
<A HREF="search.html"><FONT COLOR="#FFFFFF"><B>SEARCH</B></FONT></A><BR>
94
<TD WIDTH="360" VALIGN="top">
98
<A HREF="index.html"><IMG SRC="binary/title.gif"
99
WIDTH="316" HEIGHT="24"
100
BORDER="0" ALT="FunnelWeb Developer Manual"
101
HSPACE="0" VSPACE="0"></A>
102
<P><FONT SIZE="5">2.2 Motivation For FunnelWeb</FONT><BR>
106
<P>During 1986, I discovered Donald
107
Knuth's <SAMP>WEB</SAMP> literate
108
programming system in the form of Jon
109
Bentley's <I>Programming
110
Pearls</I> column in
112
the ACM</I> <STRONG>[Bentley86]</STRONG>. This prompted me to
113
obtain a copy of the report on the Web
114
system<STRONG>[Knuth83]</STRONG> and to try out the WEB program.
116
<P>WEB was the best system that I had seen for producing
117
printed and online, inline documentation. To me the most
118
extraordinary aspect of the system was its success despite
119
the fact that it had been built into the horribly antiquated
120
file/batch processing systems that we all know and love
121
(and use). I had imagined sophisticated documentation
122
systems before this time, but had always assumed that they
123
would be parts of complex programming environments. Knuth
124
showed that, to some extent, it can be done using 1960s
125
software technology (excluding the 1980s typesetting
128
<P>The WEB system was enticing and promising, but to me
129
suffered from many drawbacks, many of which Knuth had
130
categorized as advantages. The following highly subjective list
131
of disadvantages formed a springboard for the construction
136
<LI> WEB can only process Pascal programs.
138
<LI> WEB can produce only one output file. In many
139
instances it is desirable to generate more than one output
142
<LI> WEB enforces Knuth's individual style of
143
indentation. WEB supplies commands to over-ride the
144
automatic indentation, but it is an uphill battle and the
145
code becomes clogged up with format
148
<LI> WEB does not cater for non-standard Pascal
149
programs. In particular, all identifiers are truncated to
150
about eight characters.
152
<LI> WEB formats the program output file into a form
153
that is unreadable to humans.
155
<LI> WEB does not provide an include facility. This
156
was considered a feature essential for supporting macro
159
<LI> WEB provides macros with at most one parameter.
160
Knuth describes a hack that can extract a multiple parameter
161
macro facility from a single parameter one, but it is
164
<LI> WEB does not provide conditionals.
168
<P>Most of these objections boiled down to two points:
169
that WEB is far too specialized, and that Knuth's
170
"Occam's Razor" had cut too
171
far. What I wanted was a documentation system that employed
172
all the same principles as WEB but was far more general.
173
The result was FunnelWeb V1 which could process
174
programs in any language or any combination of languages at
175
the cost of setting the text in <SAMP>tt font</SAMP> instead
176
of typesetting it in a language-specific way, as WEB does.
178
<P>Originally, it was intended that FunnelWeb would be
179
typesetter independent as well as language independent. It
180
was intended that a format file consisting of a set of
181
productions describing how the document file was to be
182
formatted would be handed to FunnelWeb along with the input
183
file. However, time pressures forced me to take the back
184
door and hack up a TeX document file generator. In version
185
3.2 an HTML generator was added.
191
<TD ALIGN="left" VALIGN="bottom"><A HREF="design_introduction.html"><IMG SRC="binary/fw_left.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Prev"></A></TD>
192
<TD ALIGN="center" VALIGN="bottom"><A HREF="design.html"><IMG SRC="binary/fw_up.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Up"></A></TD>
193
<TD ALIGN="right" VALIGN="bottom"><A HREF="design_indentation.html"><IMG SRC="binary/fw_right.gif" HEIGHT="32" WIDTH="32" BORDER="0" ALT="Next"></A></TD>
202
<A HREF="mailto:webmaster@ross.net">Webmaster</A>
203
<A HREF="copyright.html">Copyright © Ross N. Williams 1992,1999. All rights reserved.</A><BR>
214
<!-- *********************************************************************** -->
215
<!-- End Of A FunnelWeb Manual Web Page (www.ross.net/funnelweb/) -->
216
<!-- *********************************************************************** -->