Agile Software Engineering
This podcast explores how craftsmanship, architecture, engineering rigor, and organizational practices come together in modern R&D environments. Each edition refines and deepens my earlier reflections, building a coherent and evolving body of knowledge around Agile Software Engineering
Agile Software Engineering
Lisp: The Strange Little Language That Helped Invent AI
Use Left/Right to seek, Home/End to jump to start or end. Hold shift to jump forward or backward.
In this episode of The Agile Software Engineering Deep Dive, Alessandro Guida takes a historical and slightly playful look at Lisp - one of the strange little languages that helped shape the early world of artificial intelligence.
Long before AI became associated with Python, neural networks, GPUs, and large language models, artificial intelligence was also about symbolic reasoning, rules, lists, logic, search, and knowledge representation. Lisp was built for that world. Its focus on symbolic expressions, recursion, lists, and the close relationship between code and data made it a natural fit for early AI research.
This episode is not a call to abandon modern AI tools and return to 1960s programming. It is an invitation to understand where some of the deeper ideas in AI and software engineering came from - and why an old language full of parentheses can still feel strangely modern.
This Podcast is an audio version of the written Agile Software Engineering newsletter. If you want to go deeper, don't forget to subscribe the newsletter too.
Welcome to the Agile Software Engineering Deep Dive, the podcast where we unpack the ideas shaping modern software engineering. My name is Alessandro Guida, and I've spent most of my career building and leading software engineering teams across several industries. And today I want to take a small historical detour. Not to talk about the newest AI model. Not to talk about GPS, prompt engineering, vector databases, agents, or yet another framework that promises to change everything by next Thursday. Today I want to go back to one of the strange little languages that helped shape the early imagination of artificial intelligence. Lisp. A language famous for Lisp, recursion, symbolic reasoning, code that looks like data, data that looks like code, and an irresponsible number of parentheses. For many modern engineers, Lisp may look like a historical artifact, something from another age of computing. But behind the unusual syntax is a surprisingly modern story about abstraction, representation, and the ambition to make machines reason about the world. Before AI became mostly associated with neural networks and large-scale statistical learning, it was also about symbols, rules, logic, search, and knowledge structures. And Lisp was one of the languages built for that world. In this episode, we look at Lisp as a piece of engineering history, as a curiosity, and as a reminder that many ideas we think of as modern have much deeper roots than we sometimes remember. There will be parentheses. There may even be a small Lisp puzzle. Let's dive in.
SPEAKER_00So if you picture the modern artificial intelligence industry right now, uh you're probably imagining like massive data centers, right?
SPEAKER_02Yeah, acres of servers.
SPEAKER_00Exactly. Specialized GPUs, mountains of Python code, all trying to solve this one glaring problem, which is that modern AI hallucinates.
SPEAKER_02Right. It's a huge issue.
SPEAKER_00I mean, we have these incredibly fluent systems, but when they hit a wall, they sometimes just, well, they make things up.
SPEAKER_02And with absolute confidence too?
SPEAKER_00Yes. Total confidence. And the entire industry is scrambling for a structural fix for this, pouring in hundreds of billions of dollars. But uh what if the actual solution to this massive crisis was, you know, already solved?
SPEAKER_02Wait, you mean like historically?
SPEAKER_00Yeah. Not by some new piece of hardware, but back in like 1958.
SPEAKER_02Wow. 1958.
SPEAKER_00Yeah, by this exotic, deeply misunderstood programming language that honestly it looks like someone just dropped a bag of brackets onto a keyboard.
SPEAKER_02Aaron Powell I mean, that sounds like a massive stretch, to be honest. Yeah. The tech industry basically treats computing history as like a graveyard of obsolete ideas. Right. We always assume whatever we're using right now is the ultimate peak of evolution. And, you know, everything from the 1950s is basically the Stone Age.
SPEAKER_00Aaron Powell And that is exactly the assumption we are challenging today. So we're exploring why Lisp, which is a language notorious for its completely bizarre syntax, why it actually holds the structural secrets to the future of artificial intelligence.
SPEAKER_02It's a fascinating premise.
SPEAKER_00It really is. And our source material for this deep dive is issue number 37 of the Agile Software Engineering Newsletter. It's an article titled Lisp, The Strange Little Language That Helped Invent AI.
SPEAKER_02Great article, by the way.
SPEAKER_00Oh, it's fantastic. So our mission today is to unpack the historical context of Lisp, decode its strange philosophy, and you know, discover why the deepest, most urgent questions in modern AI are pointing us right back to its core ideas. I love it. So, okay, let's unpack this. Look, nobody is hiring massive teams of Lisp developers right now, right?
SPEAKER_02No, definitely not.
SPEAKER_00The billions of dollars are flowing into generative AI and massive neural networks. So prove it to me. Prove to me that a 70-year-old language with annoying syntax is actually relevant to you and me today.
SPEAKER_02Well, if we connect this to the bigger picture, we really have to recognize that artificial intelligence has fundamentally split intellectual traditions.
SPEAKER_00Okay. What do you mean by that?
SPEAKER_02So the face of AI today is driven by massive data scale. Right. But the original ambition of artificial intelligence, like back in the 1950s and 60s, it wasn't about scraping the internet for data.
SPEAKER_00Because the internet didn't even exist.
SPEAKER_02Exactly. It was about pure symbolic reasoning. They wanted to build a machine that didn't just, you know, guess the next word in a sentence, but one that could explicitly map out concepts, rules, and relationships.
SPEAKER_00Aaron Powell Yeah. The Agile software engineering newsletter makes a really sharp distinction here. Uh early AI researchers were trying to represent knowledge explicitly using symbols. So like a symbol could represent a physical object or a mathematical relationship or a fact or a logical rule.
SPEAKER_02Aaron Powell Yeah. They wanted machines to actually reason about the reality of those symbols, to like prove theorems and logically deduce solutions step by step.
SPEAKER_00Which is so different from what we do now.
SPEAKER_02It really is. Think about the mechanics of that. If you want a computer to prove, say, a geometry theorem, you can't just feed it 10 million pictures of triangles and hope it intuits the concept of angles.
SPEAKER_00Right, which is basically the modern approach.
SPEAKER_02Exactly. Instead, you have to give it the hard rules of geometry and a mechanism to logically chain those rules together to reach a verifiable conclusion.
SPEAKER_00I was actually trying to visualize this difference for anyone who isn't, you know, spending their weekends reading dense machine learning papers.
SPEAKER_02That's probably most of us.
SPEAKER_00Right. So if modern AI is like a student trying to learn a new language by reading 10 million books until they can intuitively guess the patterns of how words fit together, early symbolic AI was like handing that same student a dictionary and a strict book of grammar rules. I like that. The goal was to have them logically construct a structurally perfect sentence from scratch, understanding exactly why every single word was chosen.
SPEAKER_02That gets you halfway there, but the symbolic approach is actually even more rigid than that.
SPEAKER_00Oh, really?
SPEAKER_02Yeah, it isn't just about constructing the sentence, it's about knowing the absolute truth value of the sentence. The symbolic approach tries to understand the fundamental, undeniable architecture of reality.
SPEAKER_01Wow.
SPEAKER_02It wants to know the rules. But uh here is the historical bottleneck. To build a system that relies entirely on pure logical reasoning and branching rules, those early researchers hit a massive wall.
SPEAKER_00Because of the hardware.
SPEAKER_02Partly hardware, but mostly the software. Standard programming languages of the 1950s were built for crunching numbers, you know, calculating missile trajectories or balancing accounting legs.
SPEAKER_00Oh, right. Pure math.
SPEAKER_02Yeah. They were virtually useless for mapping out abstract thoughts.
SPEAKER_00Right. So they needed a completely different medium. And Enter Lisp, created by John McCarthy at MIT in the late 1950s.
SPEAKER_02A true pioneer.
SPEAKER_00And the name literally stands for list processing. And, you know, reading this agile software engineering newsletter, what really stands out is how features we consider totally standard today were basically science fiction when McCarthy introduced them.
SPEAKER_02Oh, it was a monumental leap in abstraction. I mean, in an era when most programming was incredibly close to the machine, literally tracking which physical memory slots were holding your specific numbers. Lisp introduced automatic memory management. Trevor Burrus, Jr.
SPEAKER_00Which we call garbage collection today.
SPEAKER_02Exactly, garbage collection.
SPEAKER_00Let's actually pause on garbage collection for a second, because we throw that term around a lot in modern coding.
SPEAKER_02We do.
SPEAKER_00But why was that specific feature such a game changer for early AI? Like why did McCarthy actually have to invent it?
SPEAKER_02Well, before garbage collection, programmers spent a massive portion of their mental energy manually telling the computer, hey, put this piece of data in memory slot A.
SPEAKER_00Right.
SPEAKER_02And when I'm done with it, explicitly clear slot A so I can use it again.
SPEAKER_00That sounds exhausting.
SPEAKER_02It was. Now imagine you were trying to write an AI program that searches through thousands of branching logical possibilities. Like uh a chess engine exploring possible future moves.
SPEAKER_00Aaron Powell So the computer is constantly creating temporary like what-if scenarios.
SPEAKER_02Right, and constantly discarding them when they turn out to be bad moves.
SPEAKER_00Oh, I see where this is going.
SPEAKER_02Yeah. If the programmer has to manually allocate and delete the memory for every single hypothetical thought the AI generates, the code becomes impossibly complex.
SPEAKER_00Aaron Powell You'd spend 90% of your time doing memory janitor work and 10% actually writing AI logic.
SPEAKER_02Exactly. McCarthy's garbage collector was a background process that automatically detected when a piece of data was no longer being used and just swept it up.
SPEAKER_00That's brilliant.
SPEAKER_02It freed the human mind to focus entirely on the high-level logic.
SPEAKER_00It essentially outsourced the chore so the researchers could do the real math.
SPEAKER_02Precisely.
SPEAKER_00The newsletter also highlights that Lisp popularized recursive thinking and programming, which uh for the uninitiated is when a function calls itself. It's like standing between two mirrors and seeing an infinite tunnel of reflections. But again, how does a function calling itself help build artificial intelligence?
SPEAKER_02Well, recursion is the absolute perfect mechanism for exploring those branching decision trees we just mentioned.
SPEAKER_00Okay.
SPEAKER_02If an AI is trying to solve a maze, a recursive function says take a step forward and then run this exact same maze solving function from the new location.
SPEAKER_00Oh wow.
SPEAKER_02Yeah, it keeps calling itself diving deeper and deeper into the maze until it hits a dead end. Then it unwinds, backs up, and tries another path.
SPEAKER_00That is so elegant.
SPEAKER_02It really is. Recursion allows you to write incredibly elegant short code that can navigate infinitely complex logical structures.
SPEAKER_00Okay, so that makes sense for the mechanics, but we really need to talk about the core structure of Lisp, the lists.
SPEAKER_02Oh yes, the lists.
SPEAKER_00The newsletter points out that Lisp was built entirely around lists. And you know, if you write Python or Jama today, you use lists and arrays all the time as handy data containers. So why were lists the absolute center of the universe in list rather than just like another tool in the toolbox?
SPEAKER_02So that is the core philosophical shift of Lisp. In Python, a list is just a bucket holding data.
SPEAKER_00Right.
SPEAKER_02The code that manipulates the bucket is totally separate from the bucket itself. The engine is separate from the cargo.
SPEAKER_00Okay, that makes sense.
SPEAKER_02But in Lisp, a list is the universal structure for literally everything.
SPEAKER_00Everything.
SPEAKER_02Everything. A list can represent a simple set of numbers. It can represent a mathematical expression. It can represent a logical rule. Or most importantly, it can represent the program itself.
SPEAKER_00I hear what you're saying conceptually, but uh looking at actual Lisp code, I mean, it feels like it's intentionally designed to be hostile to the human eye.
SPEAKER_02It definitely takes some getting used to.
SPEAKER_00The newsletter has this whole section dedicated to beginner coding examples. There's like a recursive factorial function, some math operations, and this notoriously tricky puzzle at the end.
SPEAKER_02Yeah, that puzzle is a fun one.
SPEAKER_00Now, I am definitely not gonna read these coding examples out loud right now because reading raw syntax on an audio deep dive is just a fast track to giving everyone a headache.
SPEAKER_02Oh, please don't. It would be impossible to follow.
SPEAKER_00Exactly. But you listening should absolutely go look at the written article in the Agile Software Engineering newsletter to see these examples and try to solve the puzzle yourself. Visually, it is quite an experience.
SPEAKER_02To say the least.
SPEAKER_00Yeah. The author actually jokes about Lisp's reputation for having a heroic number of parentheses. Like to a modern developer, it literally looks like someone dropped a bag of brackets onto the keyboard.
SPEAKER_02It really does look completely backwards to modernize. I mean, if you want to add two and three in almost any other language, you just write two plus sign three.
SPEAKER_00Right, simple.
SPEAKER_02The operator, the plus sign is in the middle.
SPEAKER_00Right.
SPEAKER_02But in Lisp, you write an open parenthesis, a plus sign, the number two, the number three, and a closed parenthesis.
SPEAKER_00So the operator comes first.
SPEAKER_02Exactly. The operator comes first, and everything is wrapped in a list.
SPEAKER_00But why do that? Like why design a language to look like an alien mathematical ritual rather than readable human-like text?
SPEAKER_02Aaron Powell Because it's not trying to look like human English. It is intentionally exposing the naked underlying structure of the logic.
SPEAKER_00Okay. Unpack that a bit.
SPEAKER_02Think of it this way: when you write code in Python, the computer has to translate your readable human-like text into a tree-like data structure called an abstract syntax tree before it can actually run it.
SPEAKER_00Okay.
SPEAKER_02It translates your text into pure logical branches.
SPEAKER_00So the computer is secretly converting everything into trees behind the scenes anyway.
SPEAKER_02Always. But Lisp doesn't hide the tree. Lisp code is the tree.
SPEAKER_00Oh wow.
SPEAKER_02Yeah, those endless parentheses are just defining the branches. The first element of the list tells the computer the action, like the plus sign, and the rest of the list are the branches it operates on.
SPEAKER_00That makes so much sense now.
SPEAKER_02It is an unusually regular syntax. There are no special formatting rules, no complex keywords to memorize. Everything has the exact same shape.
SPEAKER_00And that absolute consistency sets up the massive payoff.
SPEAKER_02It does.
SPEAKER_00Because here's where it gets really interesting. This strange bracket-heavy syntax directly enables Lisp's most revolutionary concept. And it's the one that completely shaped the early AI imagination. It all comes down to a single tiny character. The quote mark.
SPEAKER_02Yes. The quote mark is where Lisp crosses from being just a programming language into being a medium for self-modifying thought.
SPEAKER_00That sounds intense. So the newsletter explains that if you put a quote mark in front of a list in Lisp, the language instantly stops trying to run it as executable code. Right. It suddenly treats that entire list of instructions strictly as passive data. I was trying to come up with a real-world equivalent for this.
SPEAKER_02Okay, let's hear it.
SPEAKER_00Imagine you have a massive automated factory. The machines are buzzing following a highly complex set of physical blueprints to build cars. Got it. Adding that quote mark in Lisp is like the factory assembly line suddenly reaching out, picking up the very blueprints that are running the factory, folding them up and putting them on the conveyor belt.
SPEAKER_02That's a great image.
SPEAKER_00Right. The instructions have temporarily become the product.
SPEAKER_02And that gets to the heart of it, but the reality of Lisp is even weirder and more powerful than that.
SPEAKER_00How so?
SPEAKER_02Well, once those blueprints are on the conveyor belt, acting as data, the factory can modify them.
SPEAKER_00Wait, really?
SPEAKER_02Yes. It can chop the blueprints up, swap out a section, bolt on a new instruction, remove the quote mark, and then plug the modified blueprints back into the master control machine.
SPEAKER_00So the factory just redesigned its own operating instructions on the fly.
SPEAKER_02Exactly, based on the current conditions on the floor.
SPEAKER_00That is wild. That's called metaprogramming, right? The ability to treat code and data as the exact same thing. Yes. And if I am an AI researcher in 1960 trying to build a machine that can actually learn and adapt, I mean this is a superpower.
SPEAKER_02Aaron Ross Powell Well, what's fascinating here is that it was the absolute holy grail of early AI, because the code and the data are represented in the exact same format as nested lists. Programs can inspect, generate, and transform other programs.
SPEAKER_00Using the exact same tools they use to manipulate normal data.
SPEAKER_02Exactly. The boundary between representing a piece of knowledge and executing an instruction basically vanishes.
SPEAKER_00So if a LIST program encounters a logical problem it doesn't know how to solve, it can what? Write a sub-program, test it, and if it works, absorb that new code into its own logic tree.
SPEAKER_02Precisely why it was the darling of early AI labs. It allowed researchers to build expert systems, theorem provers, and planning systems that could dynamically manipulate symbolic structures directly. That is incredibly they were building programs that could reason about their own code.
SPEAKER_00Which is brilliant and historically fascinating. But I feel like we have to address the modern reality here.
SPEAKER_02Okay, let's do it.
SPEAKER_00So what does this all mean? If the industry has clearly moved away from pure symbolic logic, I mean nobody's building the latest massive language model in Lisp. Are we just indulging in computing archaeology?
SPEAKER_02I wouldn't say that at all.
SPEAKER_00But we live in a world of generative AI, massive neural layers, multi-billion parameter models. Why does Lisp matter for tomorrow?
SPEAKER_02This raises an important question, and it's because modern engineers are running headfirst into the limits of massive data scale.
SPEAKER_00Right, the hallucinations we talked about.
SPEAKER_02Exactly. Modern AI has astonishing capabilities. It generates incredibly fluent, convincing text and images. But generative systems operate on probabilities. Okay. They are incredibly sophisticated next token predictors. They don't inherently know the underlying rules of logic or reality. They're just mimicking the shape of logic they observed in their vast training data.
SPEAKER_00Aaron Powell Which goes back to our earlier analogy. The student who read 10 million books can guess what word comes next with eerie accuracy, but they don't actually know the structural rules of the grammar.
SPEAKER_02Yes.
SPEAKER_00And when they guess wrong, they guess wrong with total, absolute confidence.
SPEAKER_02Aaron Powell And as these AI systems are deployed in higher states environments like medical diagnoses, legal analysis, or autonomous driving, that probabilistic guessing becomes a massive liability.
SPEAKER_00Aaron Powell A dangerous liability.
SPEAKER_02Very much so. When a generative model hallucinates or makes a critical error, the engineers face the black box problem.
SPEAKER_00The black box problem.
SPEAKER_02Yeah. It is incredibly difficult to figure out why the model made that specific mistake. Because there is no clear, explicit logic tree to audit. The reasoning is smeared across billions of mathematical weights.
SPEAKER_00So you can't just open the hood and point to the broken rule.
SPEAKER_02You can't. So the engineering world is starting to ask the old symbolic questions again.
SPEAKER_00Oh, coming full circle.
SPEAKER_02Exactly. They're asking how do we build systems that are understandable? How do we verify that a piece of reasoning is structurally sound and not just statistically plausible? That's a huge distinction. It is. How can we represent definitive knowledge explicitly so we know the system isn't hallucinating facts?
SPEAKER_00Wow. So they basically need the dictionary and the grammar rules back.
SPEAKER_02They really do.
SPEAKER_00They are realizing you cannot solve the hallucination problem purely by throwing more data and more compute at the wall.
SPEAKER_02No. Eventually you have to tackle abstraction. You need reliable structure and interpretable meaning.
SPEAKER_00Which brings us right back to the domain of Lisp. It reminds us that artificial intelligence is not just about scale and probabilities, it must also involve representation and rigorous reasoning. Right. I really love how the newsletter frames this. It says, Lisp pioneered the idea of treating ideas as computational objects.
SPEAKER_02This is a beautiful way to put it.
SPEAKER_00It really makes you rethink what code even is. It's not just instructions for a machine, it's a way to map out thought.
SPEAKER_02Now the tools will undoubtedly look different. The industry isn't going to scrap trillion-dollar infrastructures and go back to writing pure 1960 symbolic Lisp code.
SPEAKER_00Right. Obviously not.
SPEAKER_02But the philosophy Lisp embedded into computer science, the necessity of interpretable, verifiable, and modifiable logic structures is exactly the philosophy we need to crack the next era of AI development.
SPEAKER_00To make that concrete, how would that actually work? Like how do you combine a modern massive neural network with the old school symbolic logic of Lisp?
SPEAKER_02Well, you build a neurosymbolic hybrid.
SPEAKER_00A neurosymbolic hybrid. Okay, paint me a picture.
SPEAKER_02Think of it like a professional writing team. The generative AI model is the incredibly prolific, fast typing author.
SPEAKER_01Okay.
SPEAKER_02It can brainstorm a hundred ideas a minute, write gorgeous prose, and make intuitive leaps, but it occasionally makes up historical dates or gets the math wrong.
SPEAKER_00As authors sometimes do.
SPEAKER_02Exactly. Now, the symbolic AI operating on Lisp-like principles is the ruthless fact-checker and editor sitting right next to the author.
SPEAKER_00The editor has the rigid rule book.
SPEAKER_02The editor has the hard-coded laws of physics, the mathematical axioms, and the explicit logic trees.
SPEAKER_00I see.
SPEAKER_02So the generative author proposes an answer, and before the system outputs it, the symbolic editor runs it through the rigid logic tree.
SPEAKER_00So if the author hallucinates a legal precedent.
SPEAKER_02The symbolic engine flags it, explicitly shows the broken logical branch, and forces the author to rewrite it.
SPEAKER_00That is a phenomenal way to visualize it. You get the creative, intuitive leaps of the modern massive models, but they are structurally bound and audited by the rigorous symbolic logic that Lisp pioneered 70 years ago.
SPEAKER_02Exactly. It's not about replacing one with the other. It's about recognizing that true intelligence requires both intuition and logic.
SPEAKER_00The ghost of Lisp, with all its perfect, nested parentheses, might actually be the only way to build an auditing system capable of making the AI of the future truly trustworthy.
SPEAKER_02It really might be.
SPEAKER_00That is an incredible thought to end on. A hybrid architecture of massive scale and pure self-rewriting logic. Listen, if this discussion sparked your curiosity at all, I highly recommend you subscribe to the Agile Software Engineering newsletter.
SPEAKER_02It's an absolute must read.
SPEAKER_00It really is. You need to read issue 37 in its entirety. You can see the actual Lisp examples we joked about. Try to wrap your head around the syntax puzzle and really let these concepts sink in.
SPEAKER_02And while you are doing that, make sure you're subscribed to this deep dive as well.
SPEAKER_00Yes, definitely.
SPEAKER_02But most importantly, share both the Agile Software Engineering newsletter and this deep dive with the engineers, tech leaders, and curious minds in your network.
SPEAKER_00Honestly, sharing is absolutely the best way to spread the knowledge of Agile Software Engineering and keep these vital conversations going.
SPEAKER_01Completely agree.
SPEAKER_00Send it to that one coworker who is constantly hyping up the latest massive language model. It will give them a totally different perspective on where the structural limits are and how computing history might just hold the key to our biggest modern problems. Keep questioning the tools you use, keep looking at the history behind the hype, and we will catch you on the next deep dive.
SPEAKER_01A colleague, your team, or your network. You can access all episodes by subscribing to the podcast and find their written counterparts in the Agile Software Engineering newsletter on LinkedIn. And if you have thoughts, ideas, or stories from your own engineering journey, I'd love to hear from you. Your input helps shape what we explore next. Thanks again for tuning in, and see you in the next episode.
Podcasts we love
Check out these other fine podcasts recommended by us, not an algorithm.
Darknet Diaries
Jack Rhysider