Skip to content
DevMeme
7118 of 7435
Identifying C Programmers by Their Reaction to 'GOTO Considered Harmful'
Languages Post #7804, on Mar 9, 2026 in TG

Identifying C Programmers by Their Reaction to 'GOTO Considered Harmful'

Why is this Languages meme funny?

Level 1: The Magic Argument-Starting Words

Imagine a playground where one group of kids loves a certain old toy, and years ago a famous teacher once said "that toy is dangerous." If you ever shout the teacher's words near those kids — even kids who look fast asleep — they will leap up instantly yelling "It's fine!", "You just don't know how to use it!", "It's actually great!" And if some other kid says "just play with my newer toy instead," they all stop arguing with each other and chase him off the playground. The joke is that some arguments never really die; they just nap until someone says the magic words.

Level 2: The Words on the Battlefield

  • goto — a C statement that jumps execution directly to a labeled line. Powerful, unstructured, and historically blamed for "spaghetti code" where control flow tangles beyond comprehension.
  • "Considered harmful" — shorthand for Dijkstra's 1968 letter; now a meme-suffix for any strong technical condemnation.
  • Structured programming — the discipline of building programs only from sequences, conditionals, loops, and functions. It won so thoroughly that many newer languages (Python, Java) simply have no goto at all.
  • The cleanup pattern — the legitimate modern use:
int init(void) {
    if (!(a = alloc_a())) goto fail;
    if (!(b = alloc_b())) goto fail_a;
    return 0;
fail_a:
    free(a);
fail:
    return -1;  /* the kernel does this thousands of times */
}
  • "Skill issue" — gaming slang meaning "the problem is you, not the tool."

The early-career experience this maps onto: your first code review where you used something a linter forbids, cited a 50-year-old authority you hadn't read, and got a five-comment thread from a senior explaining the original paper's actual scope. Rules have contexts; slogans shed them.

Level 3: Fifty-Seven Years of Unstructured Grief

The four-panel comic (art credited to @SpaceboyCantLo and @THEFATBITCOIN) uses the "shout an insult to identify the fallen" battlefield template. Two spear-carrying Greek soldiers survey a hill of corpses. Panel one:

HOW DO WE KNOW IF THEY'RE C PROGRAMMERS?

Panel two, bellowed across the dead:

GOTO CONSIDERED HARMFUL

Panel three: the corpses rise, instantly mid-argument — skill issue, it's useful, it's clean, and one heckler offering "Stop crying, use Python instead." Panel four: that last soldier gets impaled by a freshly resurrected C programmer. Death is negotiable; language slander is not.

The incantation works because it references the most famous flame war in computing history. Edsger Dijkstra's 1968 letter to the Communications of the ACM — published under the editor-chosen title "Go To Statement Considered Harmful" — argued that unrestricted goto makes it impossible to reason about where a program is in its execution, and helped launch the structured programming movement that gave us the loops and functions everyone now takes for granted. The phrase "considered harmful" became such a cliché that essays titled "'Considered Harmful' Essays Considered Harmful" exist. It is computing's oldest still-warm casus belli.

The genius of the comic is that every resurrected rebuttal is a real position you will encounter verbatim:

  • "it's useful" — the technically strongest defense. C lacks exceptions, destructors, and defer, so the idiomatic way to unwind partially acquired resources is the forward-jumping cleanup pattern — goto out_free; — used pervasively in the Linux kernel, which would not pass review without goto. Dijkstra was condemning spaghetti back-jumps in 1960s BASIC and FORTRAN, not disciplined single-exit error handling; the meme war flattens that nuance, as wars do.
  • "it's clean" — the aesthetic escalation: nested if pyramids and flag variables are less readable than one well-named label.
  • "skill issue" — the modern all-purpose dismissal, asserting that goto only harms those too weak to wield it.
  • "use Python instead" — and here the comic lands its second satirical layer. The Python heckler isn't refuted; he's speared. Inter-language warfare outranks intra-language disagreement: C programmers may fight each other about control flow forever, but they unite instantly against the suggestion that the solution is leaving C. Tribal hierarchy in a single panel.

What's really being satirized is the immortality of settled-seeming debates. The industry "resolved" goto decades ago, yet the argument resurrects on schedule because the original context evaporated while the slogan survived. Most holy wars work this way: the citation outlives the claim, and each generation re-fights it with whatever new vocabulary ("skill issue") is fashionable.

Description

A four-panel comic in a cartoon Greek/Roman battlefield style. In the first panel, two spear-carrying soldiers stand on a hill surrounded by fallen comrades, and one asks 'HOW DO WE KNOW IF THEY'RE C PROGRAMMERS?'. In the second panel the other soldier shouts 'GOTO CONSIDERED HARMFUL' across the field of bodies (artist credits '@SpaceboyCantLo' and '@THEFATBITCOIN' visible). In the third panel, several of the 'dead' soldiers spring back to life to argue, with speech labels reading 'skill issue', 'it's useful', 'it's clean', and 'Stop crying, use Python instead'. In the fourth panel one revived soldier impales the heckler who suggested Python. The meme references Edsger Dijkstra's famous 1968 letter 'Go To Statement Considered Harmful' and the enduring holy war among C programmers who defend goto for things like kernel-style error-handling cleanup paths, while also mocking language-war flame responses

Comments

7
Anonymous ★ Top Pick Dijkstra declared goto harmful in 1968; C programmers have spent the 57 years since jumping straight to the rebuttal - no intermediate control flow required
  1. Anonymous ★ Top Pick

    Dijkstra declared goto harmful in 1968; C programmers have spent the 57 years since jumping straight to the rebuttal - no intermediate control flow required

  2. @Lyncore 4mo

    goto @ it's clean

    1. @Dark_Embrace 4mo

      It is. Look up C code. Without it C code is a nightmare.

  3. @tuguzT 4mo

    Just mention Rust, will be the same as on this picture

    1. @purplesyringa 4mo

      omg Rust mentioned

  4. @sysoevyarik 4mo

    bruh rust mentioned

  5. @agonyship 4mo

    HOLY SHIT!! IT'S RUST MENTIONED!! ... What does that even mean? I only know Java.

Use J and K for navigation