~ubuntu-branches/ubuntu/gutsy/funnelweb-doc/gutsy

« back to all changes in this revision

Viewing changes to developer/design_motivation.html

  • Committer: Bazaar Package Importer
  • Author(s): Yann Dirson
  • Date: 2002-03-28 23:21:07 UTC
  • Revision ID: james.westby@ubuntu.com-20020328232107-3d1jiqv1eqmco3j9
Tags: upstream-3.2d
ImportĀ upstreamĀ versionĀ 3.2d

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
 
2
            "http://www.w3.org/TR/REC-html40/loose.dtd">
 
3
 
 
4
<HTML>
 
5
<!--
 
6
***********************************************************************
 
7
FUNNELWEB MANUAL WEB PAGE
 
8
=========================
 
9
Copyright (c) Ross N. Williams 1992,1999. All rights reserved.
 
10
 
 
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.
 
26
 
 
27
***********************************************************************
 
28
-->
 
29
 
 
30
<HEAD>
 
31
<TITLE>2.2 Motivation For FunnelWeb</TITLE>
 
32
<STYLE TYPE="text/css"> <!-- A {text-decoration: none} // --> </STYLE>
 
33
</HEAD>
 
34
<BODY BACKGROUND="binary/background.gif"
 
35
      BGCOLOR="#FFFFFF"
 
36
      TEXT="#000000"
 
37
      VLINK="#660000"
 
38
      LINK="#FF0000"
 
39
      ALINK="#CC0000">
 
40
 
 
41
<TABLE WIDTH="490">
 
42
<TR>
 
43
<TD WIDTH="130" VALIGN="top">
 
44
<IMG SRC="binary/d_clear.gif" ALT="" WIDTH="130" HEIGHT="1"><BR>
 
45
 
 
46
<FONT SIZE="2">
 
47
<BR>
 
48
 
 
49
<A HREF="http://www.ross.net/"
 
50
 TARGET="rosshome"
 
51
 onClick="window.open('','rosshome','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
 
52
>
 
53
 <IMG SRC="binary/rossnet_logo.gif"
 
54
  WIDTH="64" HEIGHT="32"
 
55
  BORDER="0" ALT="RossNet"
 
56
  HSPACE="0" VSPACE="1"></A><BR>
 
57
<BR>
 
58
 
 
59
<A HREF="../index.shtml"
 
60
 TARGET="funnelweb"
 
61
 onClick="window.open('','funnelweb','location,status,menubar,scrollbars,resizable',false).focus(); return true;"
 
62
>
 
63
 <IMG SRC="binary/linklogo.gif"
 
64
  WIDTH="64" HEIGHT="32"
 
65
  BORDER="0" ALT="FunnelWeb"
 
66
  HSPACE="0" VSPACE="1"></A><BR>
 
67
<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>
 
73
<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>
 
78
<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>
 
86
 
 
87
<BR>
 
88
<A HREF="search.html"><FONT COLOR="#FFFFFF"><B>SEARCH</B></FONT></A><BR>
 
89
</FONT>
 
90
</TD></TR></TABLE>
 
91
 
 
92
 
 
93
</TD>
 
94
<TD WIDTH="360" VALIGN="top">
 
95
<FONT SIZE="3">
 
96
 
 
97
 
 
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>
 
103
 
 
104
 
 
105
 
 
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>&nbsp; column in
 
111
<I>Communications of
 
112
   the ACM</I>&nbsp; <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.
 
115
 
 
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
 
126
technology).
 
127
 
 
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
 
132
of FunnelWeb.
 
133
 
 
134
<UL>
 
135
 
 
136
<LI> WEB can only process Pascal programs.
 
137
 
 
138
<LI> WEB can produce only one output file. In many
 
139
instances it is desirable to generate  more than one output
 
140
file.
 
141
 
 
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
 
146
directives.
 
147
 
 
148
<LI> WEB  does not cater for  non-standard Pascal
 
149
programs. In  particular, all identifiers are truncated to
 
150
about eight characters.
 
151
 
 
152
<LI> WEB  formats the  program output file  into a form
 
153
that is  unreadable to humans.
 
154
 
 
155
<LI> WEB does  not  provide an include facility. This
 
156
was considered a feature essential for supporting macro
 
157
libraries.
 
158
 
 
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
 
162
hardly satisfactory.
 
163
 
 
164
<LI> WEB does not provide conditionals.
 
165
 
 
166
</UL>
 
167
 
 
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&nbsp;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.
 
177
 
 
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.
 
186
 
 
187
 
 
188
<P>
 
189
<TABLE WIDTH="100%">
 
190
<TR>
 
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>
 
194
</TR>
 
195
</TABLE>
 
196
 
 
197
 
 
198
 
 
199
<P>
 
200
<HR>
 
201
<FONT SIZE="2">
 
202
<A HREF="mailto:webmaster@ross.net">Webmaster</A>&nbsp;&nbsp;&nbsp;
 
203
<A HREF="copyright.html">Copyright &copy; Ross N. Williams 1992,1999. All rights reserved.</A><BR>
 
204
</FONT>
 
205
 
 
206
</FONT>
 
207
</TD>
 
208
</TR>
 
209
</TABLE>
 
210
 
 
211
 
 
212
</BODY>
 
213
 
 
214
<!-- *********************************************************************** -->
 
215
<!--      End Of A FunnelWeb Manual Web Page (www.ross.net/funnelweb/)       -->
 
216
<!-- *********************************************************************** -->
 
217
 
 
218
</HTML>