Computer Science · MapleScholar Plus

The Genesis of Code: How McCarthy's LISP Transformed Symbolic Computation into Modern AI

Early computers were rigid arithmetic calculators bound to numeric punch-card sequences; John McCarthy's 1960 LISP invention introduced recursive symbolic expressions, dynamic memory garbage collection, and functional programming.

Author
John McCarthy
Published
1960
Journal
Communications of the ACM
Last updated
September 2026
The Genesis of Code: How McCarthy's LISP Transformed Symbolic Computation into Modern AI

In the late 1950s, digital computing was shackled to numerical calculations: simulating ballistic trajectories, solving differential equations, and compiling payroll spreadsheets. Machines processed fixed numbers, blind to the flexible symbolic reasoning of human thought.

To build artificial intelligence, machines needed to manipulate non-numeric symbols—sentences, logic trees, algebraic equations, and self-referential plans—without hardcoding fixed memory addresses.

John McCarthy invented LISP (List Processing), defining computation through recursive mathematical functions operating on symbolic expressions (S-expressions). In doing so, he introduced foundational computer science concepts: conditional expressions, first-class functions, code-as-data homoiconicity, and automatic memory garbage collection.

McCarthy's paper became the intellectual bedrock of computer science, directly inspiring functional programming languages like Clojure, Haskell, and Scala, while powering decades of symbolic AI, formal verification, and automated theorem proving.

Reference

McCarthy, J. (1960). Recursive functions of symbolic expressions and their computation by machine, Part I. Communications of the ACM, 3(4), 184–195.

Title

Recursive functions of symbolic expressions and their computation by machine, Part I

Abstract

This paper presents the LISP programming system, designed to support symbolic computation by defining partial recursive functions over symbolic expressions (“S-expressions”). It introduces conditional expressions, recursive function definitions, and a universal interpreter function (APPLY) capable of evaluating any S-function represented as an S-expression, similar in role to a universal Turing machine. The paper also explains the internal memory representation of symbolic expressions through list structures, automatic memory reclamation, and the compilation of recursive symbolic programs. The formalism shows that symbolic recursive functions provide both a practical programming language and a theoretical model of computation for reasoning, algebraic manipulation, and logic-based problem solving.

Cited 1,350 times · View on doi.org

Continue

Continue Exploring

Ask this paper your own questions, or keep browsing the verified research catalogue.