concept-history.tex 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. %-*- Mode: TeX -*-
  2. %%Scope, Purpose, and History
  3. \beginsubSection{Scope and Purpose}
  4. The specification set forth in this document is designed to promote
  5. the portability of \clisp\ programs among a variety of data processing
  6. systems. It is a language specification aimed at an audience of
  7. implementors and knowledgeable programmers. It is neither a tutorial nor
  8. an implementation guide.
  9. \endsubSection%{Scope and Purpose}
  10. \beginsubSection{History}
  11. Lisp is a family of languages with a long history. Early key ideas in
  12. Lisp were developed by John McCarthy during the 1956 Dartmouth Summer
  13. Research Project on Artificial Intelligence. McCarthy's motivation
  14. was to develop an algebraic list processing language for artificial
  15. intelligence work.
  16. Implementation efforts for early dialects of Lisp were undertaken on
  17. the IBM~704, the IBM~7090, the Digital Equipment Corporation (DEC) PDP-1,
  18. the DEC~PDP-6, and the PDP-10. The primary dialect of Lisp between
  19. 1960 and 1965 was Lisp~1.5. By the early 1970's there were two
  20. predominant dialects of Lisp, both arising from these early efforts:
  21. MacLisp and Interlisp.
  22. For further information about very early Lisp dialects,
  23. see {\AnatomyOfLisp} or {\LispOnePointFive}.
  24. MacLisp improved on the Lisp~1.5 notion of special variables and error
  25. handling. MacLisp also introduced the concept of functions that could take
  26. a variable number of arguments, macros, arrays, non-local dynamic
  27. exits, fast arithmetic, the first good Lisp compiler, and an emphasis
  28. on execution speed.
  29. % This next sentence transplanted from a later paragraph about PSL.
  30. % JonL says: My recollection was that it was closer to 100 than to 50.
  31. % More likely, it had been received by about 100 sites,
  32. % and was actually in continued usage by 50 at the end of the decade.
  33. % KMP: Changed "was available" to "was in use" to compensate. (6-Dec-91)
  34. By the end of the 1970's, MacLisp was in use at over 50 sites.
  35. %From about 1969 onward Jonl White was the dominant force behind Maclisp.
  36. For further information about Maclisp,
  37. see {\Moonual} or {\Pitmanual}.
  38. Interlisp introduced many ideas into Lisp programming environments and
  39. methodology. One of the Interlisp ideas that influenced \clisp\ was an iteration
  40. construct implemented by Warren Teitelman that inspired the \macref{loop}
  41. macro used both on the Lisp Machines and in MacLisp, and now in \clisp.
  42. For further information about Interlisp,
  43. see {\InterlispManual}.
  44. Although the first implementations of Lisp were on the IBM~704 and the
  45. IBM~7090, later work focussed on the DEC
  46. PDP-6 and, later, PDP-10 computers, the latter being the mainstay of
  47. Lisp and artificial intelligence work at such places as
  48. Massachusetts Institute of Technology (MIT), Stanford University,
  49. and
  50. Carnegie Mellon University (CMU) from the mid-1960's through much of the 1970's.
  51. The PDP-10 computer and its predecessor the PDP-6 computer were, by
  52. design, especially well-suited to Lisp because they had 36-bit words
  53. and 18-bit addresses. This architecture allowed a \term{cons} cell to be
  54. stored in one word; single instructions could extract the
  55. \term{car} and \term{cdr}
  56. parts. The PDP-6 and PDP-10 had fast, powerful stack instructions
  57. that enabled fast function calling.
  58. But the limitations of the PDP-10 were evident by 1973: it supported a
  59. small number of researchers using Lisp, and the small, 18-bit address
  60. space ($2^{18}$ $=$ 262,144 words) limited the size of a single
  61. program.
  62. One response to the address space problem was the Lisp Machine, a
  63. special-purpose computer designed to run Lisp programs. The other
  64. response was to use general-purpose computers with address spaces
  65. larger than 18~bits, such as the DEC VAX and
  66. the \hbox{S-1}~Mark~IIA.
  67. For further information about S-1 Common Lisp, see ``{\SOneCLPaper}.''
  68. The Lisp machine concept was developed in the late 1960's. In the
  69. early 1970's, Peter Deutsch, working with
  70. Daniel Bobrow, implemented a Lisp on the
  71. Alto, a single-user minicomputer, using microcode to interpret a
  72. byte-code implementation language. Shortly thereafter, Richard
  73. Greenblatt began work on a different hardware and instruction set
  74. design at MIT.
  75. Although the Alto was not a total success as a Lisp machine, a dialect
  76. of Interlisp known as Interlisp-D became available on the D-series
  77. machines manufactured by Xerox---the Dorado, Dandelion,
  78. Dandetiger, and Dove (or Daybreak).
  79. An upward-compatible extension of MacLisp called Lisp
  80. Machine Lisp became available on the early MIT Lisp Machines.
  81. Commercial Lisp machines from Xerox, Lisp Machines (LMI), and
  82. Symbolics were on the market by 1981.
  83. For further information about Lisp Machine Lisp, see {\Chinual}.
  84. During the late 1970's, Lisp Machine Lisp began to expand towards a
  85. much fuller language. Sophisticated lambda lists,
  86. \f{setf}, multiple values, and structures
  87. like those in \clisp\ are the results of early
  88. experimentation with programming styles by the Lisp Machine group.
  89. Jonl White and others migrated these features to MacLisp.
  90. Around 1980, Scott Fahlman and others at CMU began work on a Lisp to
  91. run on the Scientific Personal Integrated Computing
  92. Environment (SPICE) workstation. One of the goals of the project was to
  93. design a simpler dialect than Lisp Machine Lisp.
  94. The Macsyma group at MIT began a project during the late 1970's called
  95. the New Implementation of Lisp (NIL) for the VAX, which was headed by
  96. White. One of the stated goals of the NIL project was to fix many of
  97. the historic, but annoying, problems with Lisp while retaining significant
  98. compatibility with MacLisp. At about the same time, a research group at
  99. Stanford University and Lawrence Livermore National Laboratory headed
  100. by Richard P. Gabriel began the design of a Lisp to run on the
  101. \hbox{S-1}~Mark~IIA supercomputer. \hbox{S-1}~Lisp, never completely
  102. functional, was the test bed for adapting advanced compiler techniques
  103. to Lisp implementation. Eventually the \hbox{S-1} and NIL groups
  104. collaborated.
  105. For further information about the NIL project,
  106. see ``{\NILReport}.''
  107. % The first efforts towards Lisp standardization were Standard Lisp and
  108. % Portable Standard Lisp (PSL). In 1969, Anthony Hearn and Martin Griss
  109. % defined Standard Lisp---a subset of Lisp~1.5 and other dialects---to
  110. % transport REDUCE, a symbolic algebra system.
  111. % PSL was designed to provide more control over the environment and
  112. % the compiler.
  113. % At the end of the 1970's, PSL ran on about a dozen different
  114. % computers. PSL and Franz Lisp---a MacLisp-like dialect for Unix
  115. % machines---were the first examples of widely available Lisp dialects
  116. % on multiple hardware platforms. MacLisp was available at over 50
  117. % sites.
  118. % For further information about Standard Lisp,
  119. % see ``{\StandardLispReport}.''
  120. %
  121. %% Sandra: This paragraph contains inaccuracies and is not well-organized.
  122. %% Suggested rewrite [taken -kmp] below.
  123. The first effort towards Lisp standardization was made in 1969,
  124. when Anthony Hearn and Martin Griss at the University of Utah
  125. defined Standard Lisp---a subset of Lisp~1.5 and other dialects---to
  126. transport REDUCE, a symbolic algebra system.
  127. During the 1970's, the Utah group implemented first a retargetable
  128. optimizing compiler for Standard Lisp,
  129. and then an extended implementation known as Portable Standard Lisp (PSL).
  130. By the mid 1980's, PSL ran on about a dozen kinds of computers.
  131. For further information about Standard Lisp, see ``{\StandardLispReport}.''
  132. PSL and Franz Lisp---a MacLisp-like dialect for Unix machines---were
  133. the first examples of widely available Lisp dialects on multiple
  134. hardware platforms.
  135. One of the most important developments in Lisp occurred during the
  136. second half of the 1970's: Scheme. Scheme, designed by Gerald J.
  137. Sussman and Guy L. Steele Jr., is a simple dialect of Lisp whose
  138. design brought to Lisp some of the ideas from programming language
  139. semantics developed in the 1960's. Sussman was one of the prime
  140. innovators behind many other advances in Lisp technology from the late
  141. 1960's through the 1970's.
  142. The major contributions of Scheme were lexical scoping, lexical
  143. closures, first-class continuations, and simplified syntax (no
  144. separation of value cells and function cells). Some of these contributions made
  145. a large impact on the design of \clisp.
  146. For further information about Scheme, see {\IEEEScheme} or ``{\RevisedCubedScheme}.''
  147. In the late 1970's object-oriented programming concepts started to
  148. make a strong impact on Lisp.
  149. At MIT, certain ideas from Smalltalk made their way into several
  150. widely used programming systems.
  151. Flavors, an object-oriented programming system with multiple inheritance,
  152. was developed at MIT for the Lisp machine community by Howard Cannon and others.
  153. At Xerox, the experience with Smalltalk and
  154. Knowledge Representation Language (KRL) led to the development of
  155. Lisp Object Oriented Programming System (LOOPS) and later Common LOOPS.
  156. For further information on Smalltalk, see {\SmalltalkBook}.
  157. For further information on Flavors, see {\FlavorsPaper}.
  158. These systems influenced the design of the Common Lisp Object System (CLOS).
  159. CLOS was developed specifically for this standardization effort,
  160. and was separately written up in ``\CLOSPaper.'' However, minor details
  161. of its design have changed slightly since that publication, and that paper
  162. should not be taken as an authoritative reference to the semantics of the
  163. \CLOS\ as described in this document.
  164. In 1980 Symbolics and LMI were developing Lisp Machine Lisp; stock-hardware
  165. implementation groups were developing NIL, Franz Lisp, and PSL; Xerox
  166. was developing Interlisp; and the SPICE project at CMU was developing
  167. a MacLisp-like dialect of Lisp called SpiceLisp.
  168. In April 1981, after a DARPA-sponsored meeting concerning the
  169. splintered Lisp community, Symbolics, the SPICE project, the NIL
  170. project, and the \hbox{S-1}~Lisp project joined together to define
  171. \clisp. Initially spearheaded by White and Gabriel, the
  172. driving force behind this grassroots effort was provided by Fahlman,
  173. Daniel Weinreb, David Moon, Steele, and Gabriel.
  174. \clisp\ was designed as a description of a family of languages. The
  175. primary influences on \clisp\ were Lisp Machine Lisp, MacLisp, NIL,
  176. \hbox{S-1}~Lisp, Spice Lisp, and Scheme.
  177. \CLtL\ is a description of that design. Its
  178. semantics were intentionally underspecified in places where it was
  179. felt that a tight specification would overly constrain \clisp\
  180. research and use.
  181. %% Per X3J13. -kmp 05-Oct-93
  182. %Between 1984 and 1989, \clisp\ became a de facto standard.
  183. In 1986 X3J13 was formed as a technical working group to
  184. produce a draft for an ANSI \clisp\ standard. Because of the
  185. acceptance of \clisp, the goals of this group differed from those of
  186. the original designers. These new goals included stricter
  187. standardization for portability, an object-oriented programming
  188. system, a condition system, iteration facilities, and a way to handle
  189. large character sets. To accommodate those
  190. goals, a new language specification, this
  191. document, was developed.
  192. \endsubSection%{History}