home *** CD-ROM | disk | FTP | other *** search
- %==============================================================================%
- % Start of Ch0.tex %
- %==============================================================================%
- %
- % Copyright
- % ---------
- % Copyright (C) 1992 Ross N. Williams.
- % This file contains a chapter of the FunnelWeb User's Manual.
- % See the main TeX file for this manual for further information.
- %
- %==============================================================================%
-
- \vbox{\relax}
- \vfill
-
- \hrule
-
- \medskip
-
- Copyright \copyright{} 1992 Ross~N.~Williams.
- \xn{Ross}{Williams}\xx{copyright}{notice}
-
- Permission is granted to make and distribute verbatim copies of this manual
- provided that the copyright notice and this permission notice are preserved
- on all copies.\note{This paragraph was copied from the GNU Emacs manual to
- avoid my having to get a legal opinion on something I could cook up.}
-
- \medskip
-
- \hrule
-
- \newpage
-
- %==============================================================================
-
- \tableofcontents
-
- \newpage
-
- %==============================================================================
-
- %I am not using LaTeX's figures and tables numbering so these are commented out.
- %\pseudochapter{List of Figures}
- %\pseudochapter{List of Tables}
-
- %==============================================================================
-
- % No forward.
- %\pseudochapter{Foreword}
- %\x{foreword}
-
- %==============================================================================
-
- \pseudochapter{Preface}
- \x{preface}
-
- When, in 1986, I first read Donald Knuth's\xn{Donald}{Knuth}
- technical report on Web\paper{Knuth83},\x{Web} and
- tried Web out, I was simultaneously excited by Knuth's idea of literate
- programming, and disappointed by his implementation of it. I was excited
- because I could sense the potential for
- the literate style to transform the state of mind of the programmer, but was
- disappointed by Web's rigidity
- and lack of practicality, which seemed to betray this potential.
- The Web I used was Pascal-specific, \TeX{}-specific, and applied too
- many constraints to the programming process.
- In particular, it insisted on taking control of the
- program text, mangling the code in the Pascal output files,
- and imposing its own rather rigid ideas about indenting in the \TeX{} output.
- All this, combined with the complexity of the tool, led me
- to come to perceive Web as problem rather than solution.
-
- Despite all this, I was well and truly hooked on the idea of literate
- programming. The inevitable result was that I designed and implemented
- my own version of Web --- FunnelWeb!
-
- FunnelWeb is not the most sophisticated literate programming tool available,
- but it is an extremely \i{practical} tool, striving for simplicity
- and portability in all areas. Not only is FunnelWeb language-independent,
- and to some extent typesetter independent, but its implementation also
- stresses portability, being written in~C, and currently operating on four
- major platforms (Sun, Vax, PC, Mac). FunnelWeb allows the
- programmer total control over the output file, making it suitable
- for use with all sorts of format-sensitive languages. It also allows
- control over its own source code, which has been released under a
- GNU license.\xx{GNU}{license}
- FunnelWeb is quite solid, having to pass
- a regression testing suite of over 200 tests
- before being released. Finally, FunnelWeb is well documented by this manual
- which provides a tutorial, advanced hints, and a language definition.
-
- I would like to dedicate FunnelWeb and this manual to Donald Knuth
- and his literate programming tool Web.
- Although this manual is somewhat critical of some aspects of
- Web, this criticism is really a product of differing design goals.
- Knuth designed a paradigm (literate programming) and a tool
- (Web) aimed at the highest pitch of program presentation and typesetting.
- FunnelWeb aims lower, relaxing constraints, and making compromises
- in order to achieve simplicity, flexibility, and portability.
- The result is a practical tool which I hope will attract more people to
- the literate style.
-
- \bigskip
-
- \leftline{\b{Ross~N.~Williams}}
- \leftline{\b{Adelaide, Australia}}
- \leftline{\b{May~1992}}
-
- %==============================================================================
-
- \pseudochapter{Acknowledgements}
- \x{acknowledgements}
-
- Many thanks to \b{David Hulse}\xn{David}{Hulse}
- (\p{dave@cs.adelaide.edu.au}) for
- translating the original version of FunnelWeb
- (FunnelWeb~V1) from Ada\x{Ada} into~C
- and getting it to work on Unix and a PC.
- The C code written by David (FunnelWeb~V2) formed
- the basis of FunnelWeb~V3, but was
- entirely rewritten during the intensive refinement and feature-injection
- period leading up to this release (FunnelWeb~V3 is about three times
- the size of FunnelWeb~V2).
- Nevertheless, without this important first translation step,
- I would probably not have found the motivation to develop FunnelWeb to its
- present state.
-
- Thanks go to \b{Simon Hackett}\xn{Simon}{Hackett}
- (\p{simon@internode.com.au}) of Internode Systems
- Pty Ltd for the use of his Sun, Mac, and PC, for assistance in porting
- FunnelWeb to the Sun and PC, and for helpful discussions.
-
- Thanks go to \b{Jeremy Begg}\xn{Jeremy}{Begg}
- (\p{jeremy@vsm.com.au}) of VSM Software Services
- for the use of his VAX, and for assistance with the VMS-specific code.
-
- Thanks to \b{Barry Dwyer}\xn{Barry}{Dwyer} (\p{dwyer@cs.adelaide.edu.au})
- and \b{Roger Brissenden}\xn{Roger}{Brissenden} (\p{rjb@koala.harvard.edu})
- for trying out FunnelWeb Version~1 in 1987 and providing valuable feedback.
-
- Thanks to Donald Knuth\xn{Donald}{Knuth}
- for establishing the idea of literate programming in the first place.
-
- \bigskip
-
- \leftline{\b{Ross~N.~Williams}}
- \leftline{\b{Adelaide, Australia}}
- \leftline{\b{May~1992}}
-
- %==============================================================================
-
- \pseudochapter{Presentation Notes}
- \x{presentation notes}
-
- \thing{References:} All references are set in bold and are
- cited in square brackets in the form
- \b{[}$<$\i{firstauthor}$><$\i{year}$>$\b{]}.
- All references cited in the text appear in the reference list and the index.
-
- \thing{Special terms:} New or important terminology has been set in bold
- face and appears in the index. A glossary appears as an appendix.
-
- \thing{Typesetting:} This\x{typesetting}
- document was prepared by the author using Andrew
- Trevorrow's\xn{Andrew}{Trevorrow} (\p{akt150@cscgpo.anu.edu.au})\checked{}
- implementation (OzTeX\x{OzTeX}) of the
- \TeX{}/\LaTeX{}\paper{Knuth84}\paper{Lamport86}\x{TeX}\x{LaTeX}
- typesetting system running on a Macintosh-SE.\x{Macintosh}
-
- \thing{Graphics:} All diagrams have been constructed out of text using
- the \LaTeX{} \p{verbatim} environment so as to allow this document to
- be disseminated electronically and printed using \LaTeX{} without access
- to the author's drawing tools.
-
- %%%%Put this paragraph back again if I insert any \fix footnotes again.
- %\thing{Correction footnotes:} Footnotes\x{footnotes}
- %commencing with dots ($\bullet$) are
- %notes to remind the author about something in the document that must be
- %attended to.\fix{This is an example of such a footnote.} These footnotes
- %will be attended to and eliminated in later versions.
-
- \thing{Known typesetting problems:} While every attempt has been made
- to give a good presentation within the
- time available, some shortcuts have had to be taken. In particular, the author
- has
- been unable to work out how to get \LaTeX{} to suppress blank pages at the
- start of chapters.
-
- %==============================================================================
-
- % No abstract.
- %\pseudochapter{Abstract}
- %\x{abstract}
-
- %==============================================================================%
- % End of Ch0.tex %
- %==============================================================================%
-