Back to News
RSS feednirmalutwani.substack.com

John McCarthy, Lisp, and the Code–Data Divide

Summary

This installment in a series on Turing Award recipients discusses John McCarthy's role in the history of artificial intelligence and programming. It notes that McCarthy coined the term “artificial intelligence” and presents his work as a shift from computers that merely calculate toward systems that can derive new facts from existing ones. The article illustrates inference with the example that, given “Socrates is a man” and “all men are mortal,” a system can conclude that Socrates is mortal. It argues that producing such a conclusion requires treating facts as material that can be rearranged, rather than as fixed instructions. McCarthy's central design idea, as the essay describes it, was to represent code in the same form as data. Lisp embodies this through lists: the list a programmer writes is also the list that runs, and the `eval` function reads and executes it directly. The article contrasts this with languages where code is parsed and compiled into another form before execution. It also connects Lisp's frequent creation and disposal of lists to McCarthy's invention of garbage collection, which the author says is now standard in languages including Java, Python, and Go. The writer closes by noting that, after more than 20 years of coding, they have now written Lisp for the first time.