LISP Invites Serious Philosophising

We had our first in-person Anticodians meeting at DHA25 last week in Canberra/Ngambri. About 20 anticodians, some old some new, assembled at the Australian National University to read a Python program slowly.

And read slowly we did. We managed to read about ⅓ of Peter Norvig’s famed lis.py program.

It is difficult for me to recall our discussion a week later, but the workshop overall demonstrated to me the vital importance of Critical Code Studies, and the suitability of the “slow reading” approach in CCS.

Simplicity is complexity, or something

Much of our discussion focussed on Norvig’s aesthetic principles. Norvig makes two main claims in his lis.py essay: (1) that to understand programming, you need to understand the way programming languages are implemented; and (2) LISP (or rather, Scheme) is the most beautiful programming language. The two claims are interrelated. A key reason for LISP’s beauty, in Norvig’s account, is the fact that LISP is very easy to implement.

One of the key terms in Norvig’s aesthetic vocabulary is “simple.” We debated the “simplicity” of LISP/Scheme vigorously in the group. Many in the group found the “complex” syntax of Java “simpler” to understand than the “simple” syntax of LISP. This elementary contradiction (which Norvig would surely anticipate) unleashed a host of questions and replies, centred on the core question: simple for whom?

Simplicity can seem like a starting point. Things start simple and become complex. But perhaps simplicity is best understood as an achievement. Thing start complex and become simple. First chaos, then order.

Simplicity may also have arisen as a fetish among computer programmers for good, practical reasons. In the early days of computing, pointed out one participant, computers were extremely short on working memory, and it helped if a program could be wedged effectively into a small number of CPU registers. The “simplicity” of LISP is ideal for this.

In fact, there was once a reasonable market for computers that were custom built for LISP, so that the LISP interpreter was implemented in hardware rather than software! The creators of the Scheme dialect of LISP called such a hardware-implemented LISP a “dielectric LISP”, which I think is quite cute.

The craft of programming

During the session, four of the anticodians presented lightning talks on GenAI and coding. Critical Code Studies (CCS) rests on the premise that code is a form of human expression, and deserves the same kind of loving attention that we give to literature. If coding agents live up to their manufacturers’ hype, and largely replace human programmers, will there still be a role for CCS?

Dylan Chng addressed the question by considering the broad context of computer programming. The actual writing of code is contingent on many other systems, people and processes. If we want to assess the impacts of AI on the human writing of code, then coding agents need to be understood in this broader context.

Emily Fitzgerald described her experience as a self-taught programmer, relying on coding agents to help her understand new aspects of programming. In her practical view, coding agents can provide hints and tips, but not much more.

Kath Bode considered similar questions in her talk on teaching programming using chatbots. Kath’s main argument was that it is impossible to prompt a chatbot effectively, or understand its output, unless you already have a strong foundation in “programmatic thinking.” Her arguments chime with familiar ideas in programming education. Mastering the formal notation of a programming language is a superficial acquirement. The true craft of programming is analytic and imaginative—understanding what you want from the machine, and how the machine might provide it. There is precious little evidence that any AI system will be helpful in this regard anytime soon.

Leah Hendrickson approached the problem of AI writing from a starkly different approach. In a study that will soon appear in AI & Society, she has revisted a survey she conducted in 2021. How do people react to AI-generated text today? Who do they think is the author of the text: the generator, the prompter, the developer, the company who own the generator, or someone else? Her surprising finding is that the release of ChatGPT does not seem to have shifted people’s attitudes.

Whither CCS?

CCS will have to grapple with AI, as will all the writerly disciplines. But if our little session at DHA25 is any guide, CCS is going nowhere fast. It was a joy to linger over Norvig’s lines of code, and his explanations of them, and to discuss the fundamentals of programming with a diverse group.

In our final meeting for 2025, we’ll see if we can finish lis.py.