summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2012-11-14 17:39:28 -0800
committerGary V. Vaughan <gary@gnu.org>2013-09-18 20:53:32 +0700
commitb3c0e2e14e34699b513661ae07dc3aba1628cfb5 (patch)
tree601329557b3cce30cd899d1f9527fc82e3ba9b76
parent2695c2e9865c662667a96dc653317f729c1ea461 (diff)
downloadm4-b3c0e2e14e34699b513661ae07dc3aba1628cfb5.tar.gz
doc: improve prehistory discussion
* doc/m4.texinfo (History): Describe M6 and related processors. From a suggestion by Doug McIlroy in <http://lists.gnu.org/archive/html/m4-discuss/2012-05/msg00004.html>. Also, improve citation quality by giving URLs and so forth.
-rw-r--r--doc/m4.texi41
1 files changed, 32 insertions, 9 deletions
diff --git a/doc/m4.texi b/doc/m4.texi
index 24f60f02..6debc4af 100644
--- a/doc/m4.texi
+++ b/doc/m4.texi
@@ -366,19 +366,42 @@ debugging their @code{m4} scripts than doing real work. Beware that
@cindex history of @code{m4}
@cindex GNU M4, history of
-@code{GPM} was an important ancestor of @code{m4}. See
-C. Strachey: ``A General Purpose Macro generator'', Computer Journal
-8,3 (1965), pp.@: 225 ff. @code{GPM} is also succinctly described into
-David Gries classic ``Compiler Construction for Digital Computers''.
-
-The classic B. Kernighan and P.J. Plauger: ``Software Tools'',
-Addison-Wesley, Inc.@: (1976) describes and implements a Unix
+Macro languages were invented early in the history of computing. In the
+1950s Alan Perlis suggested that the macro language be independent of the
+language being processed. Techniques such as conditional and recursive
+macros, and using macros to define other macros, were described by Doug
+McIlroy of Bell Labs in ``Macro Instruction Extensions of Compiler
+Languages'', @emph{Communications of the ACM} 3, 4 (1960), 214--20,
+@url{http://dx.doi.org/10.1145/367177.367223}.
+
+An important precursor of @code{m4} was GPM; see C. Strachey,
+@c The title uses lower case and has no space between "macro" and "generator".
+``A general purpose macrogenerator'', @emph{Computer Journal} 8, 3
+(1965), 225--41, @url{http://dx.doi.org/10.1093/comjnl/8.3.225}. GPM is
+also succinctly described in David Gries's book @emph{Compiler
+Construction for Digital Computers}, Wiley (1971). Strachey was a
+brilliant programmer: GPM fit into 250 machine instructions!
+
+Inspired by GPM while visiting Strachey's Lab in 1968, McIlroy wrote a
+model preprocessor in that fit into a page of Snobol 3 code, and McIlroy
+and Robert Morris developed a series of further models at Bell Labs.
+Andrew D. Hall followed up with M6, a general purpose macro processor
+used to port the Fortran source code of the Altran computer algebra
+system; see Hall's ``The M6 Macro Processor'', Computing Science
+Technical Report #2, Bell Labs (1972),
+@url{http://cm.bell-labs.com/cm/cs/cstr/2.pdf}. M6's source code
+consisted of about 600 Fortran statements. Its name was the first of
+the @code{m4} line.
+
+The Brian Kernighan and P.J. Plauger book @emph{Software Tools},
+Addison-Wesley (1976), describes and implements a Unix
macro-processor language, which inspired Dennis Ritchie to write
@code{m3}, a macro processor for the AP-3 minicomputer.
Kernighan and Ritchie then joined forces to develop the original
-@code{m4}, as described in ``The M4 Macro Processor'', Bell
-Laboratories (1977). It had only 21 builtin macros.
+@code{m4}, described in ``The M4 Macro Processor'', Bell Laboratories
+(1977), @url{http://wolfram.schneider.org/bsd/7thEdManVol2/m4/m4.pdf}.
+It had only 21 builtin macros.
While @code{GPM} was more @emph{pure}, @code{m4} is meant to deal with
the true intricacies of real life: macros can be recognized without