LISP: Lots of Irritating Superfluous Parentheses
Why is this Languages meme funny?
Level 1: Screaming in Code
Imagine a parent asking their child to "please just talk normally," but instead of using normal words, the child starts yelling out a string of bizarre, made-up language that sounds like complete gibberish. The parent is frustrated – they just wanted a simple, ordinary answer – but the kid is responding in what might as well be an alien tongue. That's essentially what's happening in this meme. The parent (representing someone who expects a typical, easy-to-understand way of communicating) is yelling "Why can't you be normal?" The child represents Lisp, a programming language known for doing things its own way. And the child is "screaming" in Lisp code – which to most people (and most programmers) sounds like nonsense, just a bunch of parentheses and symbols.
The humor here is like a cartoonish family scenario: one person desperately wants normal behavior, and the other just refuses and doubles down on being weird. It's funny in a simple way because the kid (Lisp) isn't trying to misbehave out of spite; it's just being itself, and "itself" happens to be this quirky, code-filled way of speaking. So even without any programming knowledge, you can laugh at the situation – it's the classic scene of a parent saying "Stop that!" and a kid gleefully doing the crazy thing even more. Lisp is basically that wacky kid who won’t speak in a normal way, and that goofy defiance is why this scene makes us laugh.
Level 2: Lisp Lingo Lesson
For someone newer to coding, let's break down what's happening. Lisp is a family of programming languages (like Common Lisp, Scheme, Clojure, etc.) known for a very distinctive syntax: it uses a ton of parentheses. In Lisp, parentheses aren't just for math equations – they actually surround every operation. This style is called prefix notation (also known as Polish notation): you write the operator or function first, then its arguments, all within ( and ). For example, adding two numbers in many languages looks like 1 + 2, but in Lisp you'd write (+ 1 2). Those parentheses tell Lisp "call the + function with 1 and 2."
Now, Lisp code is made of these nested parenthesized expressions, which are formally called S-expressions (short for symbolic expressions). An S-expression is basically a list that represents code. So Lisp programs look like a bunch of lists inside lists. That's why the code in the meme (IF ,Q1 (CONS ,Q2 ,Q3) ,Q2) has so many parentheses – it's one big list containing smaller lists. This snippet includes an IF (which in Lisp is written as (if <condition> <then-part> <else-part>) all in one set of parentheses) and a CONS operation. cons is a fundamental Lisp function that constructs a new pair or list from two pieces of data (here it's combining Q2 and Q3 into a list). The weird-looking ' at the very start is Lisp's quote symbol, which means "don't execute this code, treat it as data literally." And the commas ,Q1, ,Q2 are related – they mean "insert the actual values of Q1, Q2 here when building this code." In short, that screaming text is Lisp code that’s being quoted (as data) with some placeholders in it. It's definitely not the everyday code style a beginner might expect!
The meme uses the classic "Why can't you be normal?" setup: a frustrated parent figure yelling at a child. Here, the parent stands in for a typical programmer or the expectation of a "normal" programming language syntax. "Normal" languages (think Python, Java, C++) have syntax that reads a bit like English or algebra – with different punctuation like commas, semicolons, or curly braces { } to organize the code. The child in the back seat is labeled LISP, and instead of speaking normally, it’s thrashing and yelling a bunch of Lisp code (all those parentheses and symbols). This represents Lisp behaving very differently from what the parent (the norm) wants.
The humor comes from that extreme contrast: Lisp is basically refusing to talk like the others. In practical terms, many new programmers find Lisp's syntax unusual or even confusing at first. If you're used to coding in languages where, say, you write a = b + c; or you rely on indentation or braces to structure code, seeing something like (setf a (+ b c)) in Lisp can feel like reading an alien language. It's part of Lisp’s unique charm and its language quirks, tied to its roots in functional programming. Functional programming languages often use lots of small functions and expressions, and Lisp was one of the first to introduce that style. Lisp doesn't use the typical for or while loops in the same straightforward way; instead you might use recursive functions or map over lists. All of that is packed into those nested expressions (hence the many parentheses).
So in simpler terms: the meme is joking that Lisp is the "odd kid" among programming languages, screaming in its own bizarre syntax when asked to just act normal. It's a lighthearted way to point out how Lisp's way of writing code (with lots of parentheses, prefix notation, and treating code as data) is completely different from what most people are used to. And while that difference has real advantages in programming, it sure looks wild and crazy to anyone seeing it for the first time!
Level 3: Parenthesis Pandemonium
To a seasoned developer, this meme hits on a classic language war trope: Lisp versus "everyone else." The top panel’s text "WHY CAN'T YOU BE NORMAL" is basically what C, Java, or Python programmers have been asking Lisp enthusiasts for decades. In the bottom panel, Lisp responds by screaming in S-expressions – i.e. spitting out a gnarly piece of Lisp code full of parentheses and punctuation. It's a scene every programmer who’s peeked at Lisp code can relate to: you expect an if statement to look somewhat familiar, but Lisp gives you something like (if condition (do-thing-with (cons x y)) else-clause) with parentheses inside parentheses. The meme exaggerates that shock: the Lisp "child" doesn't just misbehave, it thrashes with something like '(IF ,Q1 (CONS ,Q2 ,Q3) ,Q2), which is intentionally dense Lisp syntax bordering on indecipherable to outsiders. Parentheses overload is exactly the point – Lisp is notorious (affectionately and infamously) for its endless nesting of ().
Experienced devs chuckle because they've seen this parent-child dynamic play out in real life tech discussions. Lisp is the eccentric elder language from 1958 that never conformed to the Algol/Java-style syntax norms. Mainstream languages use syntax that looks like everyday math or English (x = y + z; or if (a) { do_b(); }), whereas Lisp proudly does everything in a uniform list form. Hence the frustrated parent figure – representing a conventional programmer or the industry at large – yelling at Lisp to just act like a "normal" language. But Lisp won’t (or can't) drop its quirk: it replies in its own alien tongue of nested lists, effectively saying it would rather remain true to its functional, prefix-notated self.
There's also a tongue-in-cheek recognition here of the language quirks that have always set Lisp apart. For example, Lisp code uses cons to build lists and ' (quote) to treat code as data, which are foreign concepts to someone expecting straightforward loops and infix operators. Seasoned programmers remember countless jokes about Lisp's parentheses (like the gag that LISP stands for "Lots of Irritating Superfluous Parentheses"). The meme leverages that exact running joke visually. It's parenthesis pandemonium: the chaotic code snippet embodies everything "weird" about Lisp in one image.
What's more, veteran coders know that under Lisp's screaming exterior lies a venerable legacy of functional programming and macro power – but that's not what the frustrated parent cares about in this meme. They just see a kid making a scene. Historically, Lisp devs have even been asked to provide "friendlier" syntax (back in the day, there was a plan for M-expressions to make Lisp look more Algol-like, which never really caught on). So decades later, we still have Lisp code in raw S-expression form, and it’s still being considered abnormal by the mainstream. This meme perfectly captures that enduring rift: Lisp is that one family member who refuses to talk in plain language, and everyone else simultaneously rolls their eyes and smirks, because honestly, we’d be disappointed if it ever did become normal.
Level 4: Homoiconic Howl
In the homoiconic world of Lisp, code is just data — an idea drawn straight from the foundations of computer science. Lisp was born from John McCarthy's work in 1958, deeply influenced by lambda calculus, where functions and their applications are written in nested parentheses too. S-expressions (Symbolic Expressions) in Lisp double as both the program's source and its internal data representation. This design means that Lisp doesn't need a separate, complex grammar; the parentheses are the structure. That string '(IF ,Q1 (CONS ,Q2 ,Q3) ,Q2) that the "child" is screaming isn't just nonsense; it's literally a Lisp code snippet represented as a list-within-a-list structure, something Lisp's interpreter can read directly. Those seemingly endless parentheses are in fact encoding a precise tree of operations: an if condition with a cons operation nestled inside as one of its branches.
This uniform representation is what we call homoiconicity — the program's code and data share the same format. It's a powerful abstraction: it means Lisp programs can generate and transform their own code with ease using macros, treating code like any other list of data. In theory, this leads to incredible flexibility: entire languages and domain-specific dialects can be built within Lisp by mere list manipulation. That's the academic beauty here: what looks like an indecipherable tantrum is actually Lisp showing off a core theoretical strength — it's communicating in the raw language of abstract syntax trees, a concept that mainstream "normal" languages often hide behind more human-like syntax. The parent in the meme demands conventional syntax, but Lisp's "howl" illustrates a fundamental and deliberate divergence from those conventions, rooted in mathematical elegance and the pursuit of metaprogramming power.
Description
A two-panel meme from the movie 'The Babadook' used to criticize the Lisp programming language's syntax. In the top panel, a distressed mother is driving and screaming, with the caption 'WHY CANT YOU BE NORMAL'. In the bottom panel, her child in the back seat is screaming wildly. The child is labeled 'LISP', and a cryptic line of code, '`IF ,Q1(COMP (E,@Q1,L2),L2)', is superimposed over his face. The humor comes from personifying Lisp as the 'abnormal' child, contrasting its unconventional, parenthesis-heavy syntax (S-expressions) with the more common C-style syntax of mainstream languages. For experienced developers, it's a relatable jab at a language that is simultaneously powerful, influential, and notoriously difficult to read for newcomers. Watermarks for 'MemeCenter.com' and 't.me/dev_meme' are visible
Comments
7Comment deleted
Lisp code doesn't have syntax; it's a raw abstract syntax tree that you edit directly. It's not that Lisp is abnormal, it's that every other language is just syntactic sugar over a Lisp macro
“Normal?” scoffs Lisp. “I’m already the AST - your syntax highlighter is the one doing all the pretending.”
After 20 years of explaining why our startup's core engine is written in Lisp, I've realized the real problem isn't the parentheses - it's explaining to VCs why our most productive developer refuses to use anything invented after 1958
LISP: where the code is data, the data is code, and your text editor's parentheses-matching feature is the only thing standing between you and a descent into madness. It's the language that makes you question whether you're writing elegant functional code or just playing a very sophisticated game of 'match the brackets' - and after 40 years, the jury's still out on which interpretation is correct
'Why can’t you be normal?' - asks every language with a parser. Lisp: 'Normal is redundant when your syntax is the AST and macros are your code generator.'
Why can't Lisp be normal? Because (normal) always evaluates to NIL
Define “normal” - β‑normal or A‑normal form - because after macroexpand‑1 your sentence is just another S‑expression