(jmc.stanford.edu) History of Lisp

ROAM_REFS: http://jmc.stanford.edu/articles/lisp.html

History of Lisp, by John McCarthy.

** History of Lisp

The history of LISP according to McCarthy's memory in 1978, presented at the ACM SIGPLAN History of Programming Languages Conference.

LISP history according to McCarthy's memory in 1978.

This paper concentrates on the development of the basic ideas of LISP and distinguishes two periods - Summer 1956 through Summer 1958 when most of the key ideas were developed (some of which were implemented in the FORTRAN based FLPL), and Fall 1958 through 1962 when the programming language was implemented and applied to problems of artificial intelligence. After 1962, the development of LISP became multi-stranded, and different ideas were pursued in different places.

This paper was presented at the ACM SIGPLAN History of Programming Languages Conference, June 1-3, 1978. It was pubished in History of Programming Languages, edited by Richard Wexelblat, Academic Press 1981. At the time, there was essentially no challenge to my memory .

Download the article in PDF.

(jmc.stanford.edu) lisp.pdf   mime_type_application_pdf

ROAM_REFS: http://jmc.stanford.edu/articles/lisp/lisp.pdf

(www-formal.stanford.edu) History of Lisp

ROAM_REFS: http://www-formal.stanford.edu/jmc/history/lisp/lisp.html
  • History of Lisp

John McCarthy Artificial Intelligence Laboratory Stanford University

12 February 1979

This draft gives insufficient mention to many people who helped implement LISP and who contributed ideas. Suggestions for improvements in that directions are particularly welcome. Facts about the history of FUNARG and uplevel addressing generally are especially needed.

(www-formal.stanford.edu) LISP prehistory - Summer 1956 through Summer 1958.

ROAM_REFS: http://www-formal.stanford.edu/jmc/history/lisp/node2.html

From the last part of the page/document:

I spent the summer of 1958 at the IBM Information Research Department at the invitation of Nathaniel Rochester and chose differentiating algebraic expressions as a sample problem. It led to the following innovations beyond FLPL:

a. Writing recursive function definitions using conditional expressions. The idea of differentiation is obviously recursive, and conditional expressions allowed combining the cases into a single formula.

b. The maplist function that forms a list of applications of a functional argument to the elements of a list. This was obviously wanted for differentiating sums of arbitrarily many terms, and with a slight modification, it could be applied to differentiating products. (The original form was what is now called mapcar).

c. To use functions as arguments, one needs a notation for functions, and it seemed natural to use the -notation of Church (1941). I didn't understand the rest of his book, so I wasn't tempted to try to implement his more general mechanism for defining functions. Church used higher order functionals instead of using conditional expressions. Conditional expressions are much more readily implemented on computers.

d. The recursive definition of differentiation made no provision for erasure of abandoned list structure. No solution was apparent at the time, but the idea of complicating the elegant definition of differentiation with explicit erasure was unattractive. Needless to say, the point of the exercise was not the differentiation program itself, several of which had already been written, but rather clarification of the operations involved in symbolic computation.

In fact, the differentiation program was not implemented that summer, because FLPL allows neither conditional expressions nor recursive use of subroutines. At this point a new language was necessary, since it was very difficult both technically and politically to tinker with Fortran, and neither conditional expressions nor recursion could be implemented with machine language Fortran functions - not even with ``functions'' that modify the code that calls them. Moreover, the IBM group seemed satisfied with FLPL as it was and did not want to make the vaguely stated but obviously drastic changes required to allow conditional expressions and recursive definition. As I recall, they argued that these were unnecessary.

(www-formal.stanford.edu) From LISP 1 to LISP 1.5

ROAM_REFS: http://www-formal.stanford.edu/jmc/history/lisp/node4.html

At the very end, there is this paragraph on the earliest programs written in Lisp:

Besides work on the LISP system, many applications were programmed, and this experience affected the system itself. The main applications that I can remember are a program by Rochester and Goldberg on symbolic computation of impedances and other functions associated with electrical networks, J.R. Slagle's thesis work on symbolic integration directed by Minsky, and Paul Abrahams' thesis on proof-checking.

Local Graph

org-roam 9e65a3cb-c744-465e-b45d-c9494fddb701 (jmc.stanford.edu) History of Lisp 9c394806-9d31-4312-a2cf-ae0d0935f7b1 John McCarthy 9e65a3cb-c744-465e-b45d-c9494fddb701->9c394806-9d31-4312-a2cf-ae0d0935f7b1 //jmc.stanford.edu/articles/lisp/lisp.pdf http://jmc.stanford.edu/articles/lisp/lisp.pdf 9e65a3cb-c744-465e-b45d-c9494fddb701->//jmc.stanford.edu/articles/lisp/lisp.pdf 84ae6e85-a6a2-4133-bc53-274238081c2d Lisp 84ae6e85-a6a2-4133-bc53-274238081c2d->9e65a3cb-c744-465e-b45d-c9494fddb701 2a07e4ea-610b-4c9a-bb84-d961fb2450e5 Code and Coffee Book Club 2a07e4ea-610b-4c9a-bb84-d961fb2450e5->9e65a3cb-c744-465e-b45d-c9494fddb701