

Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
It is well-known that LISP is an algebraic list- processing language designed for artificial in- telligence, dedicated to symbolic computation,.
Typology: Summaries
1 / 3
This page cannot be seen from the preview
Don't miss anything!
Hong-Yi Dai University of Edinburgh, UK It is well-known that LISP is an algebraic list- processing language designed for artificial in- telligence, dedicated to symbolic computation, powered by function orientation, enhanced by program manipulation, and underpinned by garbage collection. Ever since it was born, LISP has been celebrated by practitioners as a genu- ine high-level, functional- and meta-program- ming language for potentially hard problems involving symbol manipulation. Largely overlo- oked is that LISP can also serve as a formalism for theory of computation. Indeed, it embraces and integrates ideas from all three major cha- racterizations of computation, namely lambda calculus, general recursive function, and Tu- ring machine. Unfortunately, both LISP itself and the formal basis distilled from it were not well received for theory of computation. 50 years later, given prominent and promising developments of the programming-language approach to computability and complexity, it is time to give McCarthy’s pioneering work a reappraisal. We proceed as follows. First, we review the development of LISP. We start with McCarthy’s motivation for designing a programming language for artifi- cial intelligence, and the inspirations behind the initial set of features: algebraic notation and list processing. Of other language features outlined in the 1st^ AI memo [7], we pay par- ticular attention to two, namely conditional expression and recursive function definition (making use of the former), both later be- coming the key components of McCarthy’s “basis for a mathematical theory of compu- tation” [12]. We note two revisions to the language documented in two subsequent AI memos – Memo 3 [8] introducing garbage collection and refining list operations, Memo 4 [9] adopting Church’s -notation (to facilitate higher-order functions) and naming the lan- guage LISP (short for LISt Processor) – which simplified it to such an extent that McCarthy agilely realized its capability to describe com- putable functions in a much neater way “than the Turing machines or general recursive defi- nitions used in [computable]^1 function theo- ry” [15, p. 219]. We highlight McCarthy’s cast of LISP “both as a programming language and as a formalism for doing [computable] fun- ction theory” [15, p. 219] in the 8th^ AI memo [10] (draft of the landmark paper [11]) where he showed two similarities between LISP and Turing machine: one shallow by simulating Tu- ring machine in LISP, the other deep by giving a universal function in LISP for LISP. Second, we revisit McCarthy’s computa- tion-theoretical basis [12] distilled from LISP by parameterizing the computation domain. We briefly mention some elementary results in traditional theory of computation McCarthy reproduced in the formalism obtained by in- (^1) Following Soare’s recommendation [17], we substitute the word computable for recursive in the term recursive function theory.
Accepted abstracts stantiating the computation domain with the set of natural numbers. We also cover some formal properties of the basis that, as Mc- Carthy demonstrated, enable one to prove the equivalence of computations expressed in formalisms of various instantiations. We then turn to the unfortunate fact that, despite Mc- Carthy’s efforts, both LISP and its formal ba- sis were not well received for theory of com- putation, not by his students of theoretical background nor by other researchers of theo- retical expertise, a representative of the former group being Park [19], while one of the latter being Davis [1968]. We identify two reasons for the ill-reception: (1) LISP, focusing on the practical issue of briefly and straightforwardly expressing particular computable functions, “didn’t address the questions that interested [computable-function theorists]” [15, p. 219]; (2) despite some initial results, those theorists remained “unconvinced of the theoretical^2 uti- lity of any” of the formalisms [3]. However, we find inheritance of McCarthy’s metho- dology in work decades later [5, 18, 4] that (^2) Davis’ emphasis. approached computability and complexity via programming languages and that developed sufficiently far to confront Park, Davis and others. Moreover, we see the heritage further into current research and development of im- plicit computational complexity [6, 2]. Looking back, we notice that McCarthy’s discovery of LISP as a formalism for theory of computation might be somewhat accidental. However, we also sense a kind of necessity, owing to his position that “the question of whether there are limitations in principle of what problems man can make machines sol- ve for him as compared to his own ability to solve problems, really is a technical question in [computable] function theory” [13, p. 28]. This position, from nowadays point of view a misconception may it be, however, helped set- tle the design of LISP. Looking forward, we see that the programming-language approach to theory of computation McCarthy pioneered is shining again. Moreover, McCarthy’s hope for a relationship between computation and ma- thematical logic “as fruitful in [this] century as that between analysis and physics” [14, p. 69] is coming true.
We appreciate Herbert Stoyan’s donation of his Lisp archive to the Computer History Mu- seum [1]. We especially thank Paul McJones of the museum’s Software Preservation Group, for his dedicated efforts to preserve as many historical materials on Lisp [16], and also for his kind support of this work and constructive comments on this report.
[1] Computer History Museum (ed.), “The Herbert Stoyan Collection on LISP Programming”. Lot Num- ber X5687.2010, 2010. [2] U. Dal Lago, “A Short Introduction to Implicit Com- putational Complexity”, in N. Bezhanishvili, G. Va- lentin (eds.), Lectures on Logic and Computation , Lecture Notes in Computer Science 7388, Springer, 2012, pp. 89-109. [3] M. Davis, “Review: John McCarthy, a Basis for a Mathematical Theory of Computation, Preliminary Report; J: McCarthy, P. Braffort, D. Hirschberg, a Basis for a Mathematical Theory of Computation”.